0
0
Fork 0
forked from lix-project/lix
lix/tests/referrers.sh
Eelco Dolstra e31a48366f Fix referrers test
This test broke the assumption that the hash parts of store paths are
unique.
2021-10-13 12:12:44 +02:00

39 lines
1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

source common.sh
needLocalStore "uses some low-level store manipulations that arent available through the daemon"
clearStore
max=500
reference=$NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bla
touch $reference
(echo $reference && echo && echo 0) | nix-store --register-validity
echo "making registration..."
set +x
for ((n = 0; n < $max; n++)); do
storePath=$NIX_STORE_DIR/$(printf "%05d\n" $n)aaaaaaaaaaaaaaaaaaaaaaaaaaa-$n
echo -n > $storePath
ref2=$NIX_STORE_DIR/$(printf "%05d\n" $((n+1)))aaaaaaaaaaaaaaaaaaaaaaaaaaa-$((n+1))
if test $((n+1)) = $max; then
ref2=$reference
fi
echo $storePath; echo; echo 2; echo $reference; echo $ref2
done > $TEST_ROOT/reg_info
set -x
echo "registering..."
nix-store --register-validity < $TEST_ROOT/reg_info
echo "collecting garbage..."
ln -sfn $reference "$NIX_STATE_DIR"/gcroots/ref
nix-store --gc
if [ -n "$(type -p sqlite3)" -a "$(sqlite3 $NIX_STATE_DIR/db/db.sqlite 'select count(*) from Refs')" -ne 0 ]; then
echo "referrers not cleaned up"
exit 1
fi