mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00

The vast majority of CI jobs to build the lib tests are caused by changes in the maintainer list. In this case, we currently run the full test-suite which takes 3-4 minutes. By moving the maintainers and teams tests out of the test-with-nix file, we save almost all of that. Building only those two tests on a change is almost instant. This only works, because we previously enabled cachix for the workflow. Note, that these tests are not actually run with both nix versions, even though they were listed in the "test with specific nix version" file. That's because we only differ in the nix version run *inside* the sandbox, but not doing the outer build. Since this file seems to be re-used by NixOS/nix' CI, this is technically a small loss in coverage for that repo, but nixpkgs CI considerations outweigh that. But because of this, I left the other non-nix-version-specific tests in that file.
74 lines
1.9 KiB
Nix
74 lines
1.9 KiB
Nix
/**
|
|
Instantiate the library tests for a given Nix version.
|
|
|
|
IMPORTANT:
|
|
This is used by the github.com/NixOS/nix CI.
|
|
|
|
Try not to change the interface of this file, or if you need to, ping the
|
|
Nix maintainers for help. Thank you!
|
|
*/
|
|
{
|
|
pkgs,
|
|
lib,
|
|
# Only ever use this nix; see comment at top
|
|
nix,
|
|
}:
|
|
|
|
pkgs.runCommand "nixpkgs-lib-tests-nix-${nix.version}"
|
|
{
|
|
buildInputs = [
|
|
(import ./check-eval.nix)
|
|
(import ./fetchers.nix)
|
|
(import ../path/tests {
|
|
inherit pkgs;
|
|
})
|
|
];
|
|
nativeBuildInputs = [
|
|
nix
|
|
pkgs.gitMinimal
|
|
] ++ lib.optional pkgs.stdenv.hostPlatform.isLinux pkgs.inotify-tools;
|
|
strictDeps = true;
|
|
}
|
|
''
|
|
datadir="${nix}/share"
|
|
export TEST_ROOT=$(pwd)/test-tmp
|
|
export HOME=$(mktemp -d)
|
|
export NIX_BUILD_HOOK=
|
|
export NIX_CONF_DIR=$TEST_ROOT/etc
|
|
export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
|
|
export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
|
|
export NIX_STATE_DIR=$TEST_ROOT/var/nix
|
|
export NIX_STORE_DIR=$TEST_ROOT/store
|
|
export PAGER=cat
|
|
cacheDir=$TEST_ROOT/binary-cache
|
|
|
|
nix-store --init
|
|
|
|
cp -r ${../.} lib
|
|
echo "Running lib/tests/modules.sh"
|
|
bash lib/tests/modules.sh
|
|
|
|
echo "Checking lib.version"
|
|
nix-instantiate lib -A version --eval || {
|
|
echo "lib.version does not evaluate when lib is isolated from the rest of the nixpkgs tree"
|
|
exit 1
|
|
}
|
|
|
|
echo "Running lib/tests/filesystem.sh"
|
|
TEST_LIB=$PWD/lib bash lib/tests/filesystem.sh
|
|
|
|
echo "Running lib/tests/sources.sh"
|
|
TEST_LIB=$PWD/lib bash lib/tests/sources.sh
|
|
|
|
echo "Running lib/tests/network.sh"
|
|
TEST_LIB=$PWD/lib bash lib/tests/network.sh
|
|
|
|
echo "Running lib/fileset/tests.sh"
|
|
TEST_LIB=$PWD/lib bash lib/fileset/tests.sh
|
|
|
|
echo "Running lib/tests/systems.nix"
|
|
[[ $(nix-instantiate --eval --strict lib/tests/systems.nix | tee /dev/stderr) == '[ ]' ]];
|
|
|
|
mkdir $out
|
|
echo success > $out/${nix.version}
|
|
''
|