diff --git a/tests/functional/flakes/flakes.sh b/tests/functional/flakes/flakes.sh index 4063ea99f..ea58d3b41 100644 --- a/tests/functional/flakes/flakes.sh +++ b/tests/functional/flakes/flakes.sh @@ -180,71 +180,3 @@ nix flake lock $flake3Dir nix flake update --flake "$flake3Dir" --override-flake flake2 nixpkgs [[ ! -z $(git -C "$flake3Dir" diff master || echo failed) ]] - -# Make branch "removeXyzzy" where flake3 doesn't have xyzzy anymore -git -C $flake3Dir checkout -b removeXyzzy -rm $flake3Dir/flake.nix - -cat > $flake3Dir/flake.nix < \$out - ''; - }; - }; -} -EOF -nix flake lock $flake3Dir -git -C $flake3Dir add flake.nix flake.lock -git -C $flake3Dir commit -m 'Remove packages.xyzzy' -git -C $flake3Dir checkout master - -# Test overriding inputs of inputs. -writeTrivialFlake $flake7Dir -git -C $flake7Dir add flake.nix -git -C $flake7Dir commit -m 'Initial' - -cat > $flake3Dir/flake.nix < $flake3Dir/flake.nix < Path: return path +@pytest.fixture +def flake7(git: Git, env: ManagedEnv, request: pytest.FixtureRequest) -> Path: + return _make_flake_repo("flake7", flake7_files, git, env, request) + + @pytest.fixture def nonflake(env: ManagedEnv, request: pytest.FixtureRequest) -> Path: _init_files(nonflake_files, env.dirs.test_root, request.path.parent, env) @@ -612,6 +621,32 @@ class TestLock: lock = json.loads((flake3 / "flake.lock").read_text()) assert lock["nodes"]["root"]["inputs"]["bar"] == ["flake2"] + class TestInputOverrides: + def test_simple_explicit(self, nix: Nix, flake3: Path, flake7: Path): + (flake3 / "flake.nix").write_text(f"""{{ + inputs.flake2.inputs.flake1 = {{ + type = "git"; + url = "file://{flake7}"; + }}; + + outputs = {{ self, flake2 }}: {{}}; + }}""") + nix.nix(["flake", "lock", flake3]).run().ok() + lock = json.loads((flake3 / "flake.lock").read_text()) + assert lock["nodes"]["flake1"]["locked"]["url"] == f"file://{flake7}" + + def test_simple_follows(self, nix: Nix, flake3: Path, flake7: Path): + (flake3 / "flake.nix").write_text(f"""{{ + inputs.flake2.inputs.flake1.follows = "foo"; + inputs.foo.url = "git+file://{flake7}"; + + outputs = {{ self, flake2 }}: {{}}; + }}""") + nix.nix(["flake", "lock", flake3]).run().ok() + lock = json.loads((flake3 / "flake.lock").read_text()) + assert lock["nodes"]["flake2"]["inputs"]["flake1"] == ["foo"] + assert lock["nodes"]["foo"]["locked"]["url"] == f"file://{flake7}" + @pytest.mark.usefixtures("registry") class TestMetadata: