from collections.abc import Callable from pathlib import Path from lang.test_lang import test_eval_fail as nix_eval_fail, test_eval_okay as nix_eval_okay from testlib.fixtures.file_helper import AssetSymlink, CopyFile, CopyTree, with_files from testlib.fixtures.nix import Nix from testlib.fixtures.snapshot import Snapshot @with_files( { "dir1": CopyTree("dir1"), "dir2": CopyTree("dir2"), "dir3": CopyTree("dir3"), "dir4": CopyTree("dir4"), "lib.nix": CopyFile("../lib.nix"), "in.nix": CopyFile("in.nix"), "out.exp": AssetSymlink("eval-okay.out.exp"), "err.exp": AssetSymlink("eval-okay.err.exp"), } ) def test_search_path(files: Path, nix: Nix, snapshot: Callable[[str], Snapshot]): nix.env.set_env("NIX_PATH", "dir3:dir4") nix_eval_okay( files, nix, [ "--extra-deprecated-features", "shadow-internal-symbols", "-I", "dir1", "-I", "dir2", "-I", "dir5=dir3", ], snapshot, ) @with_files( { "nix-shadow": CopyTree("nix-shadow"), "in.nix": CopyFile("in-fetchurl.nix"), "out.exp": AssetSymlink("eval-okay-prefixed.out.exp"), } ) def test_prefixed_search_path_deprecated( files: Path, nix: Nix, snapshot: Callable[[str], Snapshot] ): nix.env.set_env("NIX_PATH", "nix=nix-shadow") nix.settings.add_dp_feature("nix-path-shadow") nix_eval_okay(files, nix, [], snapshot) @with_files( { "nix-shadow": CopyTree("nix-shadow"), "in.nix": CopyFile("in-fetchurl.nix"), "err.exp": AssetSymlink("eval-okay-prefixed.err.exp"), } ) def test_prefixed_search_path(files: Path, nix: Nix, snapshot: Callable[[str], Snapshot]): nix.env.set_env("NIX_PATH", "nix=nix-shadow") nix_eval_fail(files, nix, [], snapshot) @with_files( { "nix-shadow": CopyTree("nix-shadow"), "in.nix": CopyFile("in-fetchurl.nix"), "out.exp": AssetSymlink("eval-okay-prefixless.out.exp"), } ) def test_prefixless_search_path_deprecated( files: Path, nix: Nix, snapshot: Callable[[str], Snapshot] ): nix.settings.add_dp_feature("nix-path-shadow") nix_eval_okay(files, nix, ["-I", "nix-shadow"], snapshot) @with_files( { "nix-shadow": CopyTree("nix-shadow"), "in.nix": CopyFile("in-fetchurl.nix"), "err.exp": AssetSymlink("eval-okay-prefixless.err.exp"), } ) def test_prefixless_search_path(files: Path, nix: Nix, snapshot: Callable[[str], Snapshot]): nix_eval_fail(files, nix, ["-I", "nix-shadow"], snapshot) @with_files( { "in.nix": CopyFile("in-fetchurl.nix"), "out.exp": AssetSymlink("eval-okay-fetchurl.out.exp"), "err.exp": AssetSymlink("eval-okay-fetchurl.err.exp"), } ) def test_empty_search_path(files: Path, nix: Nix, snapshot: Callable[[str], Snapshot]): nix_eval_okay(files, nix, [], snapshot)