forked from lix-project/lix
Fix tests on systems with a non-master git defaultBranch #1
|
@ -8,6 +8,8 @@ clearStore
|
||||||
# See https://github.com/NixOS/nix/issues/6195
|
# See https://github.com/NixOS/nix/issues/6195
|
||||||
repo=$TEST_ROOT/./git
|
repo=$TEST_ROOT/./git
|
||||||
|
|
||||||
|
default_branch="$(git config init.defaultBranch)"
|
||||||
|
|
||||||
export _NIX_FORCE_HTTP=1
|
export _NIX_FORCE_HTTP=1
|
||||||
|
|
||||||
rm -rf $repo ${repo}-tmp $TEST_HOME/.cache/nix $TEST_ROOT/worktree $TEST_ROOT/shallow $TEST_ROOT/minimal
|
rm -rf $repo ${repo}-tmp $TEST_HOME/.cache/nix $TEST_ROOT/worktree $TEST_ROOT/shallow $TEST_ROOT/minimal
|
||||||
|
@ -47,7 +49,7 @@ git -C $repo checkout -b devtest
|
||||||
echo "different file" >> $TEST_ROOT/git/differentbranch
|
echo "different file" >> $TEST_ROOT/git/differentbranch
|
||||||
git -C $repo add differentbranch
|
git -C $repo add differentbranch
|
||||||
git -C $repo commit -m 'Test2'
|
git -C $repo commit -m 'Test2'
|
||||||
git -C $repo checkout master
|
git -C $repo checkout "$default_branch"
|
||||||
devrev=$(git -C $repo rev-parse devtest)
|
devrev=$(git -C $repo rev-parse devtest)
|
||||||
out=$(nix eval --impure --raw --expr "builtins.fetchGit { url = \"file://$repo\"; rev = \"$devrev\"; }" 2>&1) || status=$?
|
out=$(nix eval --impure --raw --expr "builtins.fetchGit { url = \"file://$repo\"; rev = \"$devrev\"; }" 2>&1) || status=$?
|
||||||
[[ $status == 1 ]]
|
[[ $status == 1 ]]
|
||||||
|
@ -118,7 +120,7 @@ path2=$(nix eval --impure --raw --expr "(builtins.fetchGit $repo).outPath")
|
||||||
[[ $(nix eval --impure --raw --expr "(builtins.fetchGit $repo).dirtyShortRev") = "${rev2:0:7}-dirty" ]]
|
[[ $(nix eval --impure --raw --expr "(builtins.fetchGit $repo).dirtyShortRev") = "${rev2:0:7}-dirty" ]]
|
||||||
|
|
||||||
# ... unless we're using an explicit ref or rev.
|
# ... unless we're using an explicit ref or rev.
|
||||||
path3=$(nix eval --impure --raw --expr "(builtins.fetchGit { url = $repo; ref = \"master\"; }).outPath")
|
path3=$(nix eval --impure --raw --expr "(builtins.fetchGit { url = $repo; ref = \"$default_branch\"; }).outPath")
|
||||||
[[ $path = $path3 ]]
|
[[ $path = $path3 ]]
|
||||||
|
|
||||||
path3=$(nix eval --raw --expr "(builtins.fetchGit { url = $repo; rev = \"$rev2\"; }).outPath")
|
path3=$(nix eval --raw --expr "(builtins.fetchGit { url = $repo; rev = \"$rev2\"; }).outPath")
|
||||||
|
|
|
@ -6,6 +6,8 @@ clearStore
|
||||||
|
|
||||||
repo="$TEST_ROOT/git"
|
repo="$TEST_ROOT/git"
|
||||||
|
|
||||||
|
default_branch="$(git config init.defaultBranch)"
|
||||||
|
|
||||||
rm -rf "$repo" "${repo}-tmp" "$TEST_HOME/.cache/nix"
|
rm -rf "$repo" "${repo}-tmp" "$TEST_HOME/.cache/nix"
|
||||||
|
|
||||||
git init "$repo"
|
git init "$repo"
|
||||||
|
@ -16,7 +18,7 @@ echo utrecht > "$repo"/hello
|
||||||
git -C "$repo" add hello
|
git -C "$repo" add hello
|
||||||
git -C "$repo" commit -m 'Bla1'
|
git -C "$repo" commit -m 'Bla1'
|
||||||
|
|
||||||
path=$(nix eval --raw --impure --expr "(builtins.fetchGit { url = $repo; ref = \"master\"; }).outPath")
|
path=$(nix eval --raw --impure --expr "(builtins.fetchGit { url = $repo; ref = \"$default_branch\"; }).outPath")
|
||||||
|
|
||||||
# Test various combinations of ref names
|
# Test various combinations of ref names
|
||||||
# (taken from the git project)
|
# (taken from the git project)
|
||||||
|
@ -38,7 +40,7 @@ path=$(nix eval --raw --impure --expr "(builtins.fetchGit { url = $repo; ref = \
|
||||||
valid_ref() {
|
valid_ref() {
|
||||||
{ set +x; printf >&2 '\n>>>>>>>>>> valid_ref %s\b <<<<<<<<<<\n' $(printf %s "$1" | sed -n -e l); set -x; }
|
{ set +x; printf >&2 '\n>>>>>>>>>> valid_ref %s\b <<<<<<<<<<\n' $(printf %s "$1" | sed -n -e l); set -x; }
|
||||||
git check-ref-format --branch "$1" >/dev/null
|
git check-ref-format --branch "$1" >/dev/null
|
||||||
git -C "$repo" branch "$1" master >/dev/null
|
git -C "$repo" branch "$1" "$default_branch" >/dev/null
|
||||||
path1=$(nix eval --raw --impure --expr "(builtins.fetchGit { url = $repo; ref = ''$1''; }).outPath")
|
path1=$(nix eval --raw --impure --expr "(builtins.fetchGit { url = $repo; ref = ''$1''; }).outPath")
|
||||||
[[ $path1 = $path ]]
|
[[ $path1 = $path ]]
|
||||||
git -C "$repo" branch -D "$1" >/dev/null
|
git -C "$repo" branch -D "$1" >/dev/null
|
||||||
|
|
|
@ -3,6 +3,9 @@ source ./common.sh
|
||||||
requireGit
|
requireGit
|
||||||
|
|
||||||
clearStore
|
clearStore
|
||||||
|
|
||||||
|
default_branch="$(git config init.defaultBranch)"
|
||||||
|
|
||||||
rm -rf $TEST_HOME/.cache $TEST_HOME/.config
|
rm -rf $TEST_HOME/.cache $TEST_HOME/.config
|
||||||
|
|
||||||
flake1Dir=$TEST_ROOT/flake1
|
flake1Dir=$TEST_ROOT/flake1
|
||||||
|
@ -15,10 +18,10 @@ badFlakeDir=$TEST_ROOT/badFlake
|
||||||
flakeGitBare=$TEST_ROOT/flakeGitBare
|
flakeGitBare=$TEST_ROOT/flakeGitBare
|
||||||
|
|
||||||
for repo in $flake1Dir $flake2Dir $flake3Dir $flake7Dir $nonFlakeDir; do
|
for repo in $flake1Dir $flake2Dir $flake3Dir $flake7Dir $nonFlakeDir; do
|
||||||
# Give one repo a non-main initial branch.
|
# Give one repo a non-default initial branch.
|
||||||
extraArgs=
|
extraArgs=
|
||||||
if [[ $repo == $flake2Dir ]]; then
|
if [[ $repo == $flake2Dir ]]; then
|
||||||
extraArgs="--initial-branch=main"
|
extraArgs="--initial-branch=notdefault"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
createGitRepo "$repo" "$extraArgs"
|
createGitRepo "$repo" "$extraArgs"
|
||||||
|
@ -152,11 +155,11 @@ nix build -o $TEST_ROOT/result $flake2Dir#bar --no-write-lock-file
|
||||||
expect 1 nix build -o $TEST_ROOT/result $flake2Dir#bar --no-update-lock-file 2>&1 | grep 'requires lock file changes'
|
expect 1 nix build -o $TEST_ROOT/result $flake2Dir#bar --no-update-lock-file 2>&1 | grep 'requires lock file changes'
|
||||||
nix build -o $TEST_ROOT/result $flake2Dir#bar --commit-lock-file
|
nix build -o $TEST_ROOT/result $flake2Dir#bar --commit-lock-file
|
||||||
[[ -e $flake2Dir/flake.lock ]]
|
[[ -e $flake2Dir/flake.lock ]]
|
||||||
[[ -z $(git -C $flake2Dir diff main || echo failed) ]]
|
[[ -z $(git -C $flake2Dir diff notdefault || echo failed) ]]
|
||||||
|
|
||||||
# Rerunning the build should not change the lockfile.
|
# Rerunning the build should not change the lockfile.
|
||||||
nix build -o $TEST_ROOT/result $flake2Dir#bar
|
nix build -o $TEST_ROOT/result $flake2Dir#bar
|
||||||
[[ -z $(git -C $flake2Dir diff main || echo failed) ]]
|
[[ -z $(git -C $flake2Dir diff notdefault || echo failed) ]]
|
||||||
|
|
||||||
# Building with a lockfile should not require a fetch of the registry.
|
# Building with a lockfile should not require a fetch of the registry.
|
||||||
nix build -o $TEST_ROOT/result --flake-registry file:///no-registry.json $flake2Dir#bar --refresh
|
nix build -o $TEST_ROOT/result --flake-registry file:///no-registry.json $flake2Dir#bar --refresh
|
||||||
|
@ -165,7 +168,7 @@ nix build -o $TEST_ROOT/result --no-use-registries $flake2Dir#bar --refresh
|
||||||
|
|
||||||
# Updating the flake should not change the lockfile.
|
# Updating the flake should not change the lockfile.
|
||||||
nix flake lock $flake2Dir
|
nix flake lock $flake2Dir
|
||||||
[[ -z $(git -C $flake2Dir diff main || echo failed) ]]
|
[[ -z $(git -C $flake2Dir diff notdefault || echo failed) ]]
|
||||||
|
|
||||||
# Now we should be able to build the flake in pure mode.
|
# Now we should be able to build the flake in pure mode.
|
||||||
nix build -o $TEST_ROOT/result flake2#bar
|
nix build -o $TEST_ROOT/result flake2#bar
|
||||||
|
@ -200,7 +203,7 @@ nix build -o $TEST_ROOT/result $flake3Dir#"sth sth"
|
||||||
nix build -o $TEST_ROOT/result $flake3Dir#"sth%20sth"
|
nix build -o $TEST_ROOT/result $flake3Dir#"sth%20sth"
|
||||||
|
|
||||||
# Check whether it saved the lockfile
|
# Check whether it saved the lockfile
|
||||||
[[ -n $(git -C $flake3Dir diff master) ]]
|
[[ -n $(git -C $flake3Dir diff "$default_branch") ]]
|
||||||
|
|
||||||
git -C $flake3Dir add flake.lock
|
git -C $flake3Dir add flake.lock
|
||||||
|
|
||||||
|
@ -286,7 +289,7 @@ nix build -o $TEST_ROOT/result $flake3Dir#sth --commit-lock-file
|
||||||
Flake lock file updates:
|
Flake lock file updates:
|
||||||
|
|
||||||
"?" Added input 'nonFlake':
|
"?" Added input 'nonFlake':
|
||||||
'git+file://"*"/flakes/flakes/nonFlake?ref=refs/heads/master&rev="*"' "*"
|
'git+file://"*"/flakes/flakes/nonFlake?ref=refs/heads/$default_branch&rev="*"' "*"
|
||||||
"?" Added input 'nonFlakeFile':
|
"?" Added input 'nonFlakeFile':
|
||||||
'path:"*"/flakes/flakes/nonFlake/README.md?lastModified="*"&narHash=sha256-cPh6hp48IOdRxVV3xGd0PDgSxgzj5N/2cK0rMPNaR4o%3D' "*"
|
'path:"*"/flakes/flakes/nonFlake/README.md?lastModified="*"&narHash=sha256-cPh6hp48IOdRxVV3xGd0PDgSxgzj5N/2cK0rMPNaR4o%3D' "*"
|
||||||
"?" Added input 'nonFlakeFile2':
|
"?" Added input 'nonFlakeFile2':
|
||||||
|
@ -313,10 +316,10 @@ nix build -o $TEST_ROOT/result flake4#xyzzy
|
||||||
|
|
||||||
# Test 'nix flake update' and --override-flake.
|
# Test 'nix flake update' and --override-flake.
|
||||||
nix flake lock $flake3Dir
|
nix flake lock $flake3Dir
|
||||||
[[ -z $(git -C $flake3Dir diff master || echo failed) ]]
|
[[ -z $(git -C $flake3Dir diff "$default_branch" || echo failed) ]]
|
||||||
|
|
||||||
nix flake update --flake "$flake3Dir" --override-flake flake2 nixpkgs
|
nix flake update --flake "$flake3Dir" --override-flake flake2 nixpkgs
|
||||||
[[ ! -z $(git -C "$flake3Dir" diff master || echo failed) ]]
|
[[ ! -z $(git -C "$flake3Dir" diff "$default_branch" || echo failed) ]]
|
||||||
|
|
||||||
# Make branch "removeXyzzy" where flake3 doesn't have xyzzy anymore
|
# Make branch "removeXyzzy" where flake3 doesn't have xyzzy anymore
|
||||||
git -C $flake3Dir checkout -b removeXyzzy
|
git -C $flake3Dir checkout -b removeXyzzy
|
||||||
|
@ -350,7 +353,7 @@ EOF
|
||||||
nix flake lock $flake3Dir
|
nix flake lock $flake3Dir
|
||||||
git -C $flake3Dir add flake.nix flake.lock
|
git -C $flake3Dir add flake.nix flake.lock
|
||||||
git -C $flake3Dir commit -m 'Remove packages.xyzzy'
|
git -C $flake3Dir commit -m 'Remove packages.xyzzy'
|
||||||
git -C $flake3Dir checkout master
|
git -C $flake3Dir checkout "$default_branch"
|
||||||
|
|
||||||
# Test whether fuzzy-matching works for registry entries.
|
# 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#xyzzy)
|
||||||
|
@ -499,7 +502,7 @@ nix flake lock $flake3Dir --override-input flake2/flake1 file://$TEST_ROOT/flake
|
||||||
nix flake lock $flake3Dir --override-input flake2/flake1 flake1
|
nix flake lock $flake3Dir --override-input flake2/flake1 flake1
|
||||||
[[ $(jq -r .nodes.flake1_2.locked.rev $flake3Dir/flake.lock) =~ $hash2 ]]
|
[[ $(jq -r .nodes.flake1_2.locked.rev $flake3Dir/flake.lock) =~ $hash2 ]]
|
||||||
|
|
||||||
nix flake lock $flake3Dir --override-input flake2/flake1 flake1/master/$hash1
|
nix flake lock $flake3Dir --override-input flake2/flake1 "flake1/$default_branch/$hash1"
|
||||||
[[ $(jq -r .nodes.flake1_2.locked.rev $flake3Dir/flake.lock) =~ $hash1 ]]
|
[[ $(jq -r .nodes.flake1_2.locked.rev $flake3Dir/flake.lock) =~ $hash1 ]]
|
||||||
|
|
||||||
nix flake lock $flake3Dir
|
nix flake lock $flake3Dir
|
||||||
|
@ -510,8 +513,8 @@ nix flake update flake2/flake1 --flake "$flake3Dir"
|
||||||
[[ $(jq -r .nodes.flake1_2.locked.rev "$flake3Dir/flake.lock") =~ $hash2 ]]
|
[[ $(jq -r .nodes.flake1_2.locked.rev "$flake3Dir/flake.lock") =~ $hash2 ]]
|
||||||
|
|
||||||
# Test updating multiple inputs.
|
# Test updating multiple inputs.
|
||||||
nix flake lock "$flake3Dir" --override-input flake1 flake1/master/$hash1
|
nix flake lock "$flake3Dir" --override-input flake1 "flake1/$default_branch/$hash1"
|
||||||
nix flake lock "$flake3Dir" --override-input flake2/flake1 flake1/master/$hash1
|
nix flake lock "$flake3Dir" --override-input flake2/flake1 "flake1/$default_branch/$hash1"
|
||||||
[[ $(jq -r .nodes.flake1.locked.rev "$flake3Dir/flake.lock") =~ $hash1 ]]
|
[[ $(jq -r .nodes.flake1.locked.rev "$flake3Dir/flake.lock") =~ $hash1 ]]
|
||||||
[[ $(jq -r .nodes.flake1_2.locked.rev "$flake3Dir/flake.lock") =~ $hash1 ]]
|
[[ $(jq -r .nodes.flake1_2.locked.rev "$flake3Dir/flake.lock") =~ $hash1 ]]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue