44439e2a81
The result of `import tests.nix {}` is now an attrset of tests. This makes it easier and more efficient to evaluate or build multiple tests in one call to `nix build`. Simplify tests.nix by removing the large module args scope in favor of self-contained scenario module definitions. Add CPU core and memory size defaults to the test configuration to enable building tests without `run-tests.sh`. Add the following top-level args to tests.nix: - `extraScenarios` to provide a nix-level way to define extra scenarios. - `pkgs` to allow building tests with custom pkgs or systems.
46 lines
1.5 KiB
Nix
46 lines
1.5 KiB
Nix
pkgs:
|
|
let
|
|
pythonTesting = import "${toString pkgs.path}/nixos/lib/testing-python.nix" {
|
|
system = pkgs.stdenv.hostPlatform.system;
|
|
inherit pkgs;
|
|
};
|
|
in
|
|
|
|
args:
|
|
let
|
|
test = pythonTesting.makeTest args;
|
|
|
|
fixedDriver = test.driver.overrideAttrs (old: let
|
|
# Allow the test script to have longer lines by fixing the call to the 'black'
|
|
# code formatter.
|
|
# The default width of 88 chars is too restrictive for our script.
|
|
parts = builtins.split ''/nix/store/[^ ]+/black '' old.buildCommand;
|
|
preMatch = builtins.elemAt parts 0;
|
|
postMatch = builtins.elemAt parts 2;
|
|
in {
|
|
# See `mkDriver` in nixpkgs/nixos/lib/testing-python.nix for the original definition of `buildCommand`
|
|
buildCommand = ''
|
|
${preMatch}${pkgs.python3Packages.black}/bin/black --line-length 100 ${postMatch}
|
|
'';
|
|
# Keep reference to the `testDriver` derivation, required by `buildCommand`
|
|
testDriverReference = old.buildCommand;
|
|
});
|
|
|
|
# 1. Use fixed driver
|
|
# 2. Save test logging output
|
|
# 3. Add link to driver so that a gcroot to a test prevents the driver from
|
|
# being garbage-collected
|
|
fixedTest = test.overrideAttrs (_: {
|
|
# See `runTests` in nixpkgs/nixos/lib/testing-python.nix for the original definition of `buildCommand`
|
|
buildCommand = ''
|
|
mkdir $out
|
|
LOGFILE=$out/output.xml tests='exec(os.environ["testScript"])' ${fixedDriver}/bin/nixos-test-driver
|
|
ln -s ${fixedDriver} $out/driver
|
|
'';
|
|
}) // {
|
|
driver = fixedDriver;
|
|
inherit (test) nodes;
|
|
};
|
|
in
|
|
fixedTest
|