56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
from testlib.fixtures.nix import Nix
|
|
from testlib.fixtures.git import Git
|
|
from testlib.fixtures.file_helper import with_files, File
|
|
from testlib.utils import get_global_asset_pack
|
|
from pathlib import Path
|
|
|
|
|
|
@with_files(
|
|
{
|
|
"flakeA": get_global_asset_pack(".git")
|
|
| {
|
|
"flake.nix": File("""{
|
|
inputs.b.url = "git+file://$flakeB";
|
|
inputs.b.inputs.a.follows = "/";
|
|
|
|
outputs = { self, b }: {
|
|
foo = 123 + b.bar;
|
|
xyzzy = 1000;
|
|
};
|
|
}""")
|
|
},
|
|
"flakeB": get_global_asset_pack(".git")
|
|
| {
|
|
"flake.nix": File("""{
|
|
inputs.a.url = "git+file://$flakeA";
|
|
|
|
outputs = { self, a }: {
|
|
bar = 456 + a.xyzzy;
|
|
};
|
|
}""")
|
|
},
|
|
}
|
|
)
|
|
def test_circular(nix: Nix, files: Path, git: Git):
|
|
nix.settings.add_xp_feature("nix-command", "flakes")
|
|
|
|
path = files / "flakeA/flake.nix"
|
|
path.write_text(path.read_text().replace("$flakeB", str(files / "flakeB")))
|
|
git(files / "flakeA", "add", "flake.nix")
|
|
|
|
path = files / "flakeB/flake.nix"
|
|
path.write_text(path.read_text().replace("$flakeA", str(files / "flakeA")))
|
|
git(files / "flakeB", "add", "flake.nix")
|
|
git(files / "flakeB", "commit", "-a", "-m", "Foo")
|
|
|
|
assert nix.nix(["eval", f"{files}/flakeA#foo"]).run().ok().stdout_s == "1579\n"
|
|
|
|
path = files / "flakeB/flake.nix"
|
|
path.write_text(path.read_text().replace("456", "789"))
|
|
git(files / "flakeB", "commit", "-a", "-m", "Foo")
|
|
nix.nix(["flake", "update", "b", "--flake", f"{files}/flakeA"]).run().ok()
|
|
assert nix.nix(["eval", f"{files}/flakeA#foo"]).run().ok().stdout_s == "1912\n"
|
|
|
|
# Test list-inputs with circular dependencies
|
|
nix.nix(["flake", "metadata", f"{files}/flakeA"]).run().ok()
|