tests: migrate export.sh
Change-Id: I9416b71b0a15a7703aa9d7c2dea866a1f556e657
This commit is contained in:
@@ -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