Linus Heckemann
78ac3eb4eb
nix-store --export, nix-store --dump, and nix dump-path would previously fail silently if writing the data out failed, because a) FdSink::write ignored exceptions, and b) the commands relied on FdSink's destructor, which ignores exceptions, to flush the data out. This could cause rather opaque issues with installing nixos, because nix-store --export would happily proceed even if it couldn't write its data out (e.g. if nix-store --import on the other side of the pipe failed). This commit adds tests that expose these issues in the nix-store commands, and fixes them for all three.
36 lines
704 B
Bash
36 lines
704 B
Bash
source common.sh
|
|
|
|
clearStore
|
|
|
|
outPath=$(nix-build dependencies.nix --no-out-link)
|
|
|
|
nix-store --export $outPath > $TEST_ROOT/exp
|
|
|
|
nix-store --export $(nix-store -qR $outPath) > $TEST_ROOT/exp_all
|
|
|
|
if nix-store --export $outPath >/dev/full ; then
|
|
echo "exporting to a bad file descriptor should fail"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
clearStore
|
|
|
|
if nix-store --import < $TEST_ROOT/exp; then
|
|
echo "importing a non-closure should fail"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
clearStore
|
|
|
|
nix-store --import < $TEST_ROOT/exp_all
|
|
|
|
nix-store --export $(nix-store -qR $outPath) > $TEST_ROOT/exp_all2
|
|
|
|
|
|
clearStore
|
|
|
|
# Regression test: the derivers in exp_all2 are empty, which shouldn't
|
|
# cause a failure.
|
|
nix-store --import < $TEST_ROOT/exp_all2
|