mirror of
https://github.com/NixOS/nix.git
synced 2024-11-24 07:42:27 +00:00
Move non-flake input tests into a separate file
This commit is contained in:
parent
4cafea7c7b
commit
6832ee5d6f
@ -53,6 +53,29 @@ createFlake1() {
|
||||
nix registry add --registry "$registry" flake1 "git+file://$flake1Dir"
|
||||
}
|
||||
|
||||
createFlake2() {
|
||||
flake2Dir="$TEST_ROOT/flake 2"
|
||||
percentEncodedFlake2Dir="$TEST_ROOT/flake%202"
|
||||
|
||||
# Give one repo a non-main initial branch.
|
||||
createGitRepo "$flake2Dir" "--initial-branch=main"
|
||||
|
||||
cat > "$flake2Dir/flake.nix" <<EOF
|
||||
{
|
||||
description = "Fnord";
|
||||
|
||||
outputs = { self, flake1 }: rec {
|
||||
packages.$system.bar = flake1.packages.$system.foo;
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
||||
git -C "$flake2Dir" add flake.nix
|
||||
git -C "$flake2Dir" commit -m 'Initial'
|
||||
|
||||
nix registry add --registry "$registry" flake2 "git+file://$percentEncodedFlake2Dir"
|
||||
}
|
||||
|
||||
writeDependentFlake() {
|
||||
local flakeDir="$1"
|
||||
cat > "$flakeDir/flake.nix" <<EOF
|
||||
|
@ -9,42 +9,20 @@ requireGit
|
||||
clearStore
|
||||
rm -rf $TEST_HOME/.cache $TEST_HOME/.config
|
||||
|
||||
flake1Dir=$TEST_ROOT/flake1
|
||||
flake2Dir=$TEST_ROOT/flake\ 2
|
||||
percentEncodedFlake2Dir=$TEST_ROOT/flake%202
|
||||
createFlake1
|
||||
createFlake2
|
||||
|
||||
flake3Dir=$TEST_ROOT/flake%20
|
||||
percentEncodedFlake3Dir=$TEST_ROOT/flake%2520
|
||||
flake5Dir=$TEST_ROOT/flake5
|
||||
flake7Dir=$TEST_ROOT/flake7
|
||||
nonFlakeDir=$TEST_ROOT/nonFlake
|
||||
badFlakeDir=$TEST_ROOT/badFlake
|
||||
flakeGitBare=$TEST_ROOT/flakeGitBare
|
||||
|
||||
for repo in "$flake1Dir" "$flake2Dir" "$flake3Dir" "$flake7Dir" "$nonFlakeDir"; do
|
||||
# Give one repo a non-main initial branch.
|
||||
extraArgs=
|
||||
if [[ "$repo" == "$flake2Dir" ]]; then
|
||||
extraArgs="--initial-branch=main"
|
||||
fi
|
||||
|
||||
createGitRepo "$repo" "$extraArgs"
|
||||
for repo in "$flake3Dir" "$flake7Dir"; do
|
||||
createGitRepo "$repo" ""
|
||||
done
|
||||
|
||||
createSimpleGitFlake "$flake1Dir"
|
||||
|
||||
cat > "$flake2Dir/flake.nix" <<EOF
|
||||
{
|
||||
description = "Fnord";
|
||||
|
||||
outputs = { self, flake1 }: rec {
|
||||
packages.$system.bar = flake1.packages.$system.foo;
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
||||
git -C "$flake2Dir" add flake.nix
|
||||
git -C "$flake2Dir" commit -m 'Initial'
|
||||
|
||||
cat > "$flake3Dir/flake.nix" <<EOF
|
||||
{
|
||||
description = "Fnord";
|
||||
@ -66,22 +44,13 @@ EOF
|
||||
git -C "$flake3Dir" add flake.nix default.nix
|
||||
git -C "$flake3Dir" commit -m 'Initial'
|
||||
|
||||
cat > "$nonFlakeDir/README.md" <<EOF
|
||||
FNORD
|
||||
EOF
|
||||
|
||||
git -C "$nonFlakeDir" add README.md
|
||||
git -C "$nonFlakeDir" commit -m 'Initial'
|
||||
|
||||
# Construct a custom registry, additionally test the --registry flag
|
||||
nix registry add --registry "$registry" flake1 "git+file://$flake1Dir"
|
||||
nix registry add --registry "$registry" flake2 "git+file://$percentEncodedFlake2Dir"
|
||||
nix registry add --registry "$registry" flake3 "git+file://$percentEncodedFlake3Dir"
|
||||
nix registry add --registry "$registry" flake4 flake3
|
||||
nix registry add --registry "$registry" nixpkgs flake1
|
||||
|
||||
# Test 'nix registry list'.
|
||||
[[ $(nix registry list | wc -l) == 5 ]]
|
||||
[[ $(nix registry list | wc -l) == 4 ]]
|
||||
nix registry list | grep '^global'
|
||||
nix registry list | grepInverse '^user' # nothing in user registry
|
||||
|
||||
@ -251,77 +220,8 @@ _NIX_FORCE_HTTP=1 nix build -o "$TEST_ROOT/result" "git+file://$percentEncodedFl
|
||||
mv "$flake1Dir.tmp" "$flake1Dir"
|
||||
mv "$flake2Dir.tmp" "$flake2Dir"
|
||||
|
||||
# Add nonFlakeInputs to flake3.
|
||||
rm "$flake3Dir/flake.nix"
|
||||
|
||||
cat > "$flake3Dir/flake.nix" <<EOF
|
||||
{
|
||||
inputs = {
|
||||
flake1 = {};
|
||||
flake2 = {};
|
||||
nonFlake = {
|
||||
url = git+file://$nonFlakeDir;
|
||||
flake = false;
|
||||
};
|
||||
nonFlakeFile = {
|
||||
url = path://$nonFlakeDir/README.md;
|
||||
flake = false;
|
||||
};
|
||||
nonFlakeFile2 = {
|
||||
url = "$nonFlakeDir/README.md";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
description = "Fnord";
|
||||
|
||||
outputs = inputs: rec {
|
||||
packages.$system.xyzzy = inputs.flake2.packages.$system.bar;
|
||||
packages.$system.sth = inputs.flake1.packages.$system.foo;
|
||||
packages.$system.fnord =
|
||||
with import ./config.nix;
|
||||
mkDerivation {
|
||||
inherit system;
|
||||
name = "fnord";
|
||||
dummy = builtins.readFile (builtins.path { name = "source"; path = ./.; filter = path: type: baseNameOf path == "config.nix"; } + "/config.nix");
|
||||
dummy2 = builtins.readFile (builtins.path { name = "source"; path = inputs.flake1; filter = path: type: baseNameOf path == "simple.nix"; } + "/simple.nix");
|
||||
buildCommand = ''
|
||||
cat \${inputs.nonFlake}/README.md > \$out
|
||||
[[ \$(cat \${inputs.nonFlake}/README.md) = \$(cat \${inputs.nonFlakeFile}) ]]
|
||||
[[ \${inputs.nonFlakeFile} = \${inputs.nonFlakeFile2} ]]
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
||||
cp "${config_nix}" "$flake3Dir"
|
||||
|
||||
git -C "$flake3Dir" add flake.nix config.nix
|
||||
git -C "$flake3Dir" commit -m 'Add nonFlakeInputs'
|
||||
|
||||
# Check whether `nix build` works with a lockfile which is missing a
|
||||
# nonFlakeInputs.
|
||||
nix build -o "$TEST_ROOT/result" "$flake3Dir#sth" --commit-lock-file
|
||||
|
||||
nix build -o "$TEST_ROOT/result" flake3#fnord
|
||||
[[ $(cat $TEST_ROOT/result) = FNORD ]]
|
||||
|
||||
# Check whether flake input fetching is lazy: flake3#sth does not
|
||||
# depend on flake2, so this shouldn't fail.
|
||||
rm -rf "$TEST_HOME/.cache"
|
||||
clearStore
|
||||
mv "$flake2Dir" "$flake2Dir.tmp"
|
||||
mv "$nonFlakeDir" "$nonFlakeDir.tmp"
|
||||
nix build -o "$TEST_ROOT/result" flake3#sth
|
||||
(! nix build -o "$TEST_ROOT/result" flake3#xyzzy)
|
||||
(! nix build -o "$TEST_ROOT/result" flake3#fnord)
|
||||
mv "$flake2Dir.tmp" "$flake2Dir"
|
||||
mv "$nonFlakeDir.tmp" "$nonFlakeDir"
|
||||
nix build -o "$TEST_ROOT/result" flake3#xyzzy flake3#fnord
|
||||
|
||||
# Test doing multiple `lookupFlake`s
|
||||
nix build -o "$TEST_ROOT/result" flake4#xyzzy
|
||||
nix build -o "$TEST_ROOT/result" flake3#xyzzy
|
||||
|
||||
# Test 'nix flake update' and --override-flake.
|
||||
nix flake lock "$flake3Dir"
|
||||
@ -330,53 +230,15 @@ nix flake lock "$flake3Dir"
|
||||
nix flake update --flake "$flake3Dir" --override-flake flake2 nixpkgs
|
||||
[[ ! -z $(git -C "$flake3Dir" diff master || echo failed) ]]
|
||||
|
||||
# Make branch "removeXyzzy" where flake3 doesn't have xyzzy anymore
|
||||
git -C "$flake3Dir" checkout -b removeXyzzy
|
||||
rm "$flake3Dir/flake.nix"
|
||||
|
||||
cat > "$flake3Dir/flake.nix" <<EOF
|
||||
{
|
||||
inputs = {
|
||||
nonFlake = {
|
||||
url = "$nonFlakeDir";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
description = "Fnord";
|
||||
|
||||
outputs = { self, flake1, flake2, nonFlake }: rec {
|
||||
packages.$system.sth = flake1.packages.$system.foo;
|
||||
packages.$system.fnord =
|
||||
with import ./config.nix;
|
||||
mkDerivation {
|
||||
inherit system;
|
||||
name = "fnord";
|
||||
buildCommand = ''
|
||||
cat \${nonFlake}/README.md > \$out
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
EOF
|
||||
nix flake lock "$flake3Dir"
|
||||
git -C "$flake3Dir" add flake.nix flake.lock
|
||||
git -C "$flake3Dir" commit -m 'Remove packages.xyzzy'
|
||||
git -C "$flake3Dir" checkout master
|
||||
|
||||
# Test whether fuzzy-matching works for registry entries.
|
||||
(! nix build -o "$TEST_ROOT/result" flake4/removeXyzzy#xyzzy)
|
||||
nix build -o "$TEST_ROOT/result" flake4/removeXyzzy#sth
|
||||
|
||||
# Testing the nix CLI
|
||||
nix registry add flake1 flake3
|
||||
[[ $(nix registry list | wc -l) == 6 ]]
|
||||
nix registry pin flake1
|
||||
[[ $(nix registry list | wc -l) == 6 ]]
|
||||
nix registry pin flake1 flake3
|
||||
[[ $(nix registry list | wc -l) == 6 ]]
|
||||
nix registry remove flake1
|
||||
[[ $(nix registry list | wc -l) == 5 ]]
|
||||
nix registry pin flake1
|
||||
[[ $(nix registry list | wc -l) == 5 ]]
|
||||
nix registry pin flake1 flake3
|
||||
[[ $(nix registry list | wc -l) == 5 ]]
|
||||
nix registry remove flake1
|
||||
[[ $(nix registry list | wc -l) == 4 ]]
|
||||
|
||||
# Test 'nix registry list' with a disabled global registry.
|
||||
nix registry add user-flake1 git+file://$flake1Dir
|
||||
@ -386,7 +248,7 @@ nix --flake-registry "" registry list | grepQuietInverse '^global' # nothing in
|
||||
nix --flake-registry "" registry list | grepQuiet '^user'
|
||||
nix registry remove user-flake1
|
||||
nix registry remove user-flake2
|
||||
[[ $(nix registry list | wc -l) == 5 ]]
|
||||
[[ $(nix registry list | wc -l) == 4 ]]
|
||||
|
||||
# Test 'nix flake clone'.
|
||||
rm -rf $TEST_ROOT/flake1-v2
|
||||
|
@ -26,6 +26,7 @@ suites += {
|
||||
'dubious-query.sh',
|
||||
'shebang.sh',
|
||||
'commit-lock-file-summary.sh',
|
||||
'non-flake-inputs.sh',
|
||||
],
|
||||
'workdir': meson.current_source_dir(),
|
||||
}
|
||||
|
126
tests/functional/flakes/non-flake-inputs.sh
Normal file
126
tests/functional/flakes/non-flake-inputs.sh
Normal file
@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
source ./common.sh
|
||||
|
||||
createFlake1
|
||||
createFlake2
|
||||
|
||||
nonFlakeDir=$TEST_ROOT/nonFlake
|
||||
createGitRepo "$nonFlakeDir" ""
|
||||
|
||||
cat > "$nonFlakeDir/README.md" <<EOF
|
||||
FNORD
|
||||
EOF
|
||||
|
||||
git -C "$nonFlakeDir" add README.md
|
||||
git -C "$nonFlakeDir" commit -m 'Initial'
|
||||
|
||||
flake3Dir=$TEST_ROOT/flake3
|
||||
createGitRepo "$flake3Dir" ""
|
||||
|
||||
cat > "$flake3Dir/flake.nix" <<EOF
|
||||
{
|
||||
inputs = {
|
||||
flake1 = {};
|
||||
flake2 = {};
|
||||
nonFlake = {
|
||||
url = git+file://$nonFlakeDir;
|
||||
flake = false;
|
||||
};
|
||||
nonFlakeFile = {
|
||||
url = path://$nonFlakeDir/README.md;
|
||||
flake = false;
|
||||
};
|
||||
nonFlakeFile2 = {
|
||||
url = "$nonFlakeDir/README.md";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
description = "Fnord";
|
||||
|
||||
outputs = inputs: rec {
|
||||
packages.$system.xyzzy = inputs.flake2.packages.$system.bar;
|
||||
packages.$system.sth = inputs.flake1.packages.$system.foo;
|
||||
packages.$system.fnord =
|
||||
with import ./config.nix;
|
||||
mkDerivation {
|
||||
inherit system;
|
||||
name = "fnord";
|
||||
dummy = builtins.readFile (builtins.path { name = "source"; path = ./.; filter = path: type: baseNameOf path == "config.nix"; } + "/config.nix");
|
||||
dummy2 = builtins.readFile (builtins.path { name = "source"; path = inputs.flake1; filter = path: type: baseNameOf path == "simple.nix"; } + "/simple.nix");
|
||||
buildCommand = ''
|
||||
cat \${inputs.nonFlake}/README.md > \$out
|
||||
[[ \$(cat \${inputs.nonFlake}/README.md) = \$(cat \${inputs.nonFlakeFile}) ]]
|
||||
[[ \${inputs.nonFlakeFile} = \${inputs.nonFlakeFile2} ]]
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
||||
cp "${config_nix}" "$flake3Dir"
|
||||
|
||||
git -C "$flake3Dir" add flake.nix config.nix
|
||||
git -C "$flake3Dir" commit -m 'Add nonFlakeInputs'
|
||||
|
||||
# Check whether `nix build` works with a lockfile which is missing a
|
||||
# nonFlakeInputs.
|
||||
nix build -o "$TEST_ROOT/result" "$flake3Dir#sth" --commit-lock-file
|
||||
|
||||
nix registry add --registry "$registry" flake3 "git+file://$flake3Dir"
|
||||
|
||||
nix build -o "$TEST_ROOT/result" flake3#fnord
|
||||
[[ $(cat $TEST_ROOT/result) = FNORD ]]
|
||||
|
||||
# Check whether flake input fetching is lazy: flake3#sth does not
|
||||
# depend on flake2, so this shouldn't fail.
|
||||
rm -rf "$TEST_HOME/.cache"
|
||||
clearStore
|
||||
mv "$flake2Dir" "$flake2Dir.tmp"
|
||||
mv "$nonFlakeDir" "$nonFlakeDir.tmp"
|
||||
nix build -o "$TEST_ROOT/result" flake3#sth
|
||||
(! nix build -o "$TEST_ROOT/result" flake3#xyzzy)
|
||||
(! nix build -o "$TEST_ROOT/result" flake3#fnord)
|
||||
mv "$flake2Dir.tmp" "$flake2Dir"
|
||||
mv "$nonFlakeDir.tmp" "$nonFlakeDir"
|
||||
nix build -o "$TEST_ROOT/result" flake3#xyzzy flake3#fnord
|
||||
|
||||
# Make branch "removeXyzzy" where flake3 doesn't have xyzzy anymore
|
||||
git -C "$flake3Dir" checkout -b removeXyzzy
|
||||
rm "$flake3Dir/flake.nix"
|
||||
|
||||
cat > "$flake3Dir/flake.nix" <<EOF
|
||||
{
|
||||
inputs = {
|
||||
nonFlake = {
|
||||
url = "$nonFlakeDir";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
description = "Fnord";
|
||||
|
||||
outputs = { self, flake1, flake2, nonFlake }: rec {
|
||||
packages.$system.sth = flake1.packages.$system.foo;
|
||||
packages.$system.fnord =
|
||||
with import ./config.nix;
|
||||
mkDerivation {
|
||||
inherit system;
|
||||
name = "fnord";
|
||||
buildCommand = ''
|
||||
cat \${nonFlake}/README.md > \$out
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
EOF
|
||||
nix flake lock "$flake3Dir"
|
||||
git -C "$flake3Dir" add flake.nix flake.lock
|
||||
git -C "$flake3Dir" commit -m 'Remove packages.xyzzy'
|
||||
git -C "$flake3Dir" checkout master
|
||||
|
||||
# Test whether fuzzy-matching works for registry entries.
|
||||
nix registry add --registry "$registry" flake4 flake3
|
||||
(! nix build -o "$TEST_ROOT/result" flake4/removeXyzzy#xyzzy)
|
||||
nix build -o "$TEST_ROOT/result" flake4/removeXyzzy#sth
|
Loading…
Reference in New Issue
Block a user