mirror of
https://github.com/NixOS/nix.git
synced 2024-11-21 22:32:26 +00:00
Make functional tests on NixOS use Meson not Make
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
This commit is contained in:
parent
f07aee934a
commit
f018a0b0c8
@ -19,7 +19,7 @@ EOF
|
||||
|
||||
# When we're doing everything in the same store, we need to bring
|
||||
# dependencies into context.
|
||||
sed -i "$(dirname "${BASH_SOURCE[0]}")"/../config.nix \
|
||||
sed -i "${_NIX_TEST_BUILD_DIR}/config.nix" \
|
||||
-e 's^\(shell\) = "/nix/store/\([^/]*\)/\(.*\)";^\1 = builtins.appendContext "/nix/store/\2" { "/nix/store/\2".path = true; } + "/\3";^' \
|
||||
-e 's^\(path\) = "/nix/store/\([^/]*\)/\(.*\)";^\1 = builtins.appendContext "/nix/store/\2" { "/nix/store/\2".path = true; } + "/\3";^' \
|
||||
;
|
||||
|
@ -1,4 +1,4 @@
|
||||
# NOTE: instances of @variable@ are substituted as defined in /mk/templates.mk
|
||||
# NOTE: instances of @variable@ are substituted by the build system
|
||||
|
||||
if [[ -z "${COMMON_SUBST_VARS_SH_SOURCED-}" ]]; then
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
project('nix-functional-tests', 'cpp',
|
||||
project('nix-functional-tests',
|
||||
version : files('.version'),
|
||||
default_options : [
|
||||
'cpp_std=c++2a',
|
||||
@ -170,6 +170,7 @@ suites = [
|
||||
|
||||
nix_store = dependency('nix-store', required : false)
|
||||
if nix_store.found()
|
||||
add_languages('cpp')
|
||||
subdir('test-libstoreconsumer')
|
||||
suites += {
|
||||
'name': 'libstoreconsumer',
|
||||
@ -187,6 +188,7 @@ endif
|
||||
# Plugin tests require shared libraries support.
|
||||
nix_expr = dependency('nix-expr', required : false)
|
||||
if nix_expr.found() and get_option('default_library') != 'static'
|
||||
add_languages('cpp')
|
||||
subdir('plugins')
|
||||
suites += {
|
||||
'name': 'plugins',
|
||||
|
@ -21,7 +21,8 @@ let
|
||||
defaults = {
|
||||
nixpkgs.pkgs = nixpkgsFor.${system}.native;
|
||||
nix.checkAllErrors = false;
|
||||
nix.package = noTests nixpkgsFor.${system}.native.nix;
|
||||
# TODO: decide which packaging stage to use. `nix-cli` is efficient, but not the same as the user-facing `everything.nix` package (`default`). Perhaps a good compromise is `everything.nix` + `noTests` defined above?
|
||||
nix.package = nixpkgsFor.${system}.native.nixComponents.nix-cli;
|
||||
};
|
||||
_module.args.nixpkgs = nixpkgs;
|
||||
_module.args.system = system;
|
||||
@ -33,10 +34,9 @@ let
|
||||
forNix = nixVersion: runNixOSTestFor system {
|
||||
imports = [test];
|
||||
defaults.nixpkgs.overlays = [(curr: prev: {
|
||||
# NOTE: noTests pkg might not have been built yet for some older versions of the package
|
||||
# and in versions before 2.25, the untested build wasn't shared with the tested build yet
|
||||
# Add noTests here when those versions become irrelevant.
|
||||
nix = (builtins.getFlake "nix/${nixVersion}").packages.${system}.nix;
|
||||
nix = let
|
||||
packages = (builtins.getFlake "nix/${nixVersion}").packages.${system};
|
||||
in packages.nix-cli or packages.nix;
|
||||
})];
|
||||
};
|
||||
};
|
||||
|
@ -24,47 +24,42 @@ in
|
||||
environment.systemPackages = let
|
||||
run-test-suite = pkgs.writeShellApplication {
|
||||
name = "run-test-suite";
|
||||
runtimeInputs = [ pkgs.gnumake pkgs.jq pkgs.git ];
|
||||
runtimeInputs = [
|
||||
pkgs.meson
|
||||
pkgs.ninja
|
||||
pkgs.jq
|
||||
pkgs.git
|
||||
|
||||
# Want to avoid `/run/current-system/sw/bin/bash` because we
|
||||
# want a store path. Likewise for coreutils.
|
||||
pkgs.bash
|
||||
pkgs.coreutils
|
||||
];
|
||||
text = ''
|
||||
set -x
|
||||
|
||||
cat /proc/sys/fs/file-max
|
||||
ulimit -Hn
|
||||
ulimit -Sn
|
||||
|
||||
cd ~
|
||||
cp -r ${pkgs.nix.overrideAttrs (o: {
|
||||
name = "nix-configured-source";
|
||||
outputs = [ "out" ];
|
||||
separateDebugInfo = false;
|
||||
disallowedReferences = [ ];
|
||||
buildPhase = ":";
|
||||
checkPhase = ":";
|
||||
installPhase = ''
|
||||
cp -r . $out
|
||||
'';
|
||||
installCheckPhase = ":";
|
||||
fixupPhase = ":";
|
||||
doInstallCheck = true;
|
||||
})} nix
|
||||
|
||||
cp -r ${pkgs.nixComponents.nix-functional-tests.src} nix
|
||||
chmod -R +w nix
|
||||
cd nix
|
||||
|
||||
# Tests we don't need
|
||||
echo >tests/functional/plugins/local.mk
|
||||
sed -i tests/functional/local.mk \
|
||||
-e 's!nix_tests += plugins\.sh!!' \
|
||||
-e 's!nix_tests += test-libstoreconsumer\.sh!!' \
|
||||
;
|
||||
|
||||
_NIX_TEST_SOURCE_DIR="$(realpath tests/functional)"
|
||||
export _NIX_TEST_SOURCE_DIR
|
||||
export _NIX_TEST_BUILD_DIR="''${_NIX_TEST_SOURCE_DIR}"
|
||||
chmod u+w nix/.version
|
||||
echo ${pkgs.nixComponents.version} > nix/.version
|
||||
|
||||
export isTestOnNixOS=1
|
||||
export version=${config.nix.package.version}
|
||||
|
||||
export NIX_REMOTE_=daemon
|
||||
export NIX_REMOTE=daemon
|
||||
|
||||
export NIX_STORE=${builtins.storeDir}
|
||||
make -j1 installcheck --keep-going
|
||||
|
||||
meson setup nix/tests/functional build
|
||||
cd build
|
||||
meson test -j1 --print-errorlogs
|
||||
'';
|
||||
};
|
||||
in [
|
||||
|
Loading…
Reference in New Issue
Block a user