tests: migrate export.sh
Change-Id: I9416b71b0a15a7703aa9d7c2dea866a1f556e657
This commit is contained in:
@@ -1,36 +0,0 @@
|
||||
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
|
||||
@@ -77,7 +77,6 @@ functional_tests_scripts = [
|
||||
'repl.sh',
|
||||
'binary-cache-build-remote.sh',
|
||||
'logging.sh',
|
||||
'export.sh',
|
||||
'config.sh',
|
||||
'filter-source.sh',
|
||||
'misc.sh',
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
from collections.abc import Callable
|
||||
from testlib.fixtures.command import Command
|
||||
from testlib.fixtures.file_helper import with_files
|
||||
from testlib.utils import get_global_asset_pack
|
||||
from testlib.fixtures.nix import Nix
|
||||
|
||||
|
||||
@with_files(get_global_asset_pack("dependencies"))
|
||||
def test_export(nix: Nix):
|
||||
out_path = nix.nix_build(["dependencies.nix", "--no-out-link"]).run().ok().stdout_plain
|
||||
|
||||
res = nix.nix_store(["--export", out_path]).run().ok()
|
||||
exported = res.stdout
|
||||
|
||||
nix.clear_store()
|
||||
|
||||
res = nix.nix_store(["--import"]).with_stdin(exported).run().expect(1)
|
||||
# importing a non-closure should fail
|
||||
assert "does not exist in the Lix database" in res.stderr_plain
|
||||
|
||||
|
||||
@with_files(get_global_asset_pack("dependencies"))
|
||||
def test_export_full(nix: Nix):
|
||||
out_path = nix.nix_build(["dependencies.nix", "--no-out-link"]).run().ok().stdout_plain
|
||||
|
||||
paths = nix.nix_store(["-qR", out_path]).run().ok().stdout_plain.splitlines()
|
||||
res = nix.nix_store(["--export", *paths]).run().ok()
|
||||
exported = res.stdout
|
||||
|
||||
nix.clear_store()
|
||||
|
||||
res = nix.nix_store(["--import"]).with_stdin(exported).run().ok()
|
||||
|
||||
assert set(res.stdout_plain.splitlines()) == set(paths)
|
||||
|
||||
res = nix.nix_store(["--export", *paths]).run().ok()
|
||||
|
||||
nix.clear_store()
|
||||
|
||||
# Regression test: the derivers in exp_all2 are empty, which shouldn't
|
||||
# cause a failure.
|
||||
|
||||
res = nix.nix_store(["--import"]).with_stdin(res.stdout).run().ok()
|
||||
assert set(res.stdout_plain.splitlines()) == set(paths)
|
||||
|
||||
|
||||
@with_files(get_global_asset_pack("dependencies"))
|
||||
def test_bad_fd(nix: Nix, command: Callable[[list[str]], Command]):
|
||||
out_path = nix.nix_build(["dependencies.nix", "--no-out-link"]).run().ok().stdout_plain
|
||||
# HACK(rootile, 2026-06): we can't pipe things into files from within our framework
|
||||
cmd = command(["bash", "-c", 'nix-store --export "$1" > /dev/full', "nix-store", out_path])
|
||||
res = cmd.run().expect(1)
|
||||
assert (
|
||||
"error: writing to file:" in res.stderr_plain
|
||||
or "Operation not permitted" in res.stderr_plain
|
||||
)
|
||||
Reference in New Issue
Block a user