mirror of
https://github.com/NixOS/nix
synced 2025-06-24 22:11:15 +02:00
95 lines
2.5 KiB
Bash
Executable file
95 lines
2.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
source common.sh
|
|
|
|
path1=$(nix-store --add ./dummy)
|
|
echo "$path1"
|
|
|
|
path2=$(nix-store --add-fixed sha256 --recursive ./dummy)
|
|
echo "$path2"
|
|
|
|
if test "$path1" != "$path2"; then
|
|
echo "nix-store --add and --add-fixed mismatch"
|
|
exit 1
|
|
fi
|
|
|
|
path3=$(nix-store --add-fixed sha256 ./dummy)
|
|
echo "$path3"
|
|
test "$path1" != "$path3" || exit 1
|
|
|
|
path4=$(nix-store --add-fixed sha1 --recursive ./dummy)
|
|
echo "$path4"
|
|
test "$path1" != "$path4" || exit 1
|
|
|
|
hash1=$(nix-store -q --hash "$path1")
|
|
echo "$hash1"
|
|
|
|
hash2=$(nix-hash --type sha256 --base32 ./dummy)
|
|
echo "$hash2"
|
|
|
|
test "$hash1" = "sha256:$hash2"
|
|
|
|
# The contents can be accessed through a symlink, and this symlink has no effect on the hash
|
|
# https://github.com/NixOS/nix/issues/11941
|
|
test_issue_11941() {
|
|
local expected actual
|
|
mkdir -p "$TEST_ROOT/foo/bar" && ln -s "$TEST_ROOT/foo" "$TEST_ROOT/foo-link"
|
|
|
|
# legacy
|
|
expected=$(nix-store --add-fixed --recursive sha256 "$TEST_ROOT/foo/bar")
|
|
actual=$(nix-store --add-fixed --recursive sha256 "$TEST_ROOT/foo-link/bar")
|
|
[[ "$expected" == "$actual" ]]
|
|
actual=$(nix-store --add "$TEST_ROOT/foo-link/bar")
|
|
[[ "$expected" == "$actual" ]]
|
|
|
|
# nix store add
|
|
actual=$(nix store add --hash-algo sha256 --mode nar "$TEST_ROOT/foo/bar")
|
|
[[ "$expected" == "$actual" ]]
|
|
|
|
# cleanup
|
|
rm -r "$TEST_ROOT/foo" "$TEST_ROOT/foo-link"
|
|
}
|
|
test_issue_11941
|
|
|
|
# A symlink is added to the store as a symlink, not as a copy of the target
|
|
test_add_symlink() {
|
|
ln -s /bin "$TEST_ROOT/my-bin"
|
|
|
|
# legacy
|
|
path=$(nix-store --add-fixed --recursive sha256 "$TEST_ROOT/my-bin")
|
|
[[ "$(readlink "$path")" == /bin ]]
|
|
path=$(nix-store --add "$TEST_ROOT/my-bin")
|
|
[[ "$(readlink "$path")" == /bin ]]
|
|
|
|
# nix store add
|
|
path=$(nix store add --hash-algo sha256 --mode nar "$TEST_ROOT/my-bin")
|
|
[[ "$(readlink "$path")" == /bin ]]
|
|
|
|
# cleanup
|
|
rm "$TEST_ROOT/my-bin"
|
|
}
|
|
test_add_symlink
|
|
|
|
#### New style commands
|
|
|
|
clearStoreIfPossible
|
|
|
|
(
|
|
path1=$(nix store add ./dummy)
|
|
path2=$(nix store add --mode nar ./dummy)
|
|
path3=$(nix store add-path ./dummy)
|
|
[[ "$path1" == "$path2" ]]
|
|
[[ "$path1" == "$path3" ]]
|
|
path4=$(nix store add --mode nar --hash-algo sha1 ./dummy)
|
|
)
|
|
(
|
|
path1=$(nix store add --mode flat ./dummy)
|
|
path2=$(nix store add-file ./dummy)
|
|
[[ "$path1" == "$path2" ]]
|
|
path4=$(nix store add --mode flat --hash-algo sha1 ./dummy)
|
|
)
|
|
(
|
|
path1=$(nix store add --mode text ./dummy)
|
|
path2=$(nix eval --impure --raw --expr 'builtins.toFile "dummy" (builtins.readFile ./dummy)')
|
|
[[ "$path1" == "$path2" ]]
|
|
)
|