The Mercurial fetcher previously used the revision number supplied by Mercurial as its revision count. This is inappropriate, as the revision number is incremented each time a change is added to the local repository, so also changes only reachable from other heads will be counted. For the same reason, it will also depend on whether such changes have been fetched before from the same repository, introducing an impurity. Instead the revisions have to be counted explicitly, similar to the Git fetcher. Change-Id: Idb1e66ae2fb8b05101116c815f453efd6e95b09e
44 lines
1.3 KiB
Bash
44 lines
1.3 KiB
Bash
source ./common.sh
|
|
|
|
[[ $(type -p hg) ]] || skipTest "Mercurial not installed"
|
|
|
|
flake1Dir=$TEST_ROOT/flake-hg1
|
|
mkdir -p $flake1Dir
|
|
writeSimpleFlake $flake1Dir
|
|
hg init $flake1Dir
|
|
|
|
nix registry add --registry $registry flake1 hg+file://$flake1Dir
|
|
|
|
flake2Dir=$TEST_ROOT/flake-hg2
|
|
mkdir -p $flake2Dir
|
|
writeDependentFlake $flake2Dir
|
|
hg init $flake2Dir
|
|
|
|
hg add $flake1Dir/*
|
|
hg commit --config ui.username=foobar@example.org $flake1Dir -m 'Initial commit'
|
|
|
|
hg add $flake2Dir/flake.nix
|
|
hg commit --config ui.username=foobar@example.org $flake2Dir -m 'Initial commit'
|
|
|
|
nix build -o $TEST_ROOT/result hg+file://$flake2Dir
|
|
[[ -e $TEST_ROOT/result/hello ]]
|
|
|
|
(! nix flake metadata --json hg+file://$flake2Dir | jq -e -r .revision)
|
|
|
|
nix eval hg+file://$flake2Dir#expr
|
|
|
|
nix eval hg+file://$flake2Dir#expr
|
|
|
|
(! nix eval hg+file://$flake2Dir#expr --no-allow-dirty)
|
|
|
|
(! nix flake metadata --json hg+file://$flake2Dir | jq -e -r .revision)
|
|
|
|
hg commit --config ui.username=foobar@example.org $flake2Dir -m 'Add lock file'
|
|
|
|
nix flake metadata --json hg+file://$flake2Dir --refresh | jq -e -r .revision
|
|
nix flake metadata --json hg+file://$flake2Dir
|
|
[[ $(nix flake metadata --json hg+file://$flake2Dir | jq -e -r .revCount) = 2 ]]
|
|
|
|
nix build -o $TEST_ROOT/result hg+file://$flake2Dir --no-registries --no-allow-dirty
|
|
nix build -o $TEST_ROOT/result hg+file://$flake2Dir --no-use-registries --no-allow-dirty
|