1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
import pytest
from testlib.fixtures.nix import Nix
from testlib.fixtures.file_helper import File, with_files
@with_files(
{
"flake.nix": File("""{
outputs = a: {
packages.system = {
foo = 1;
fo1 = 1;
fo2 = 1;
fooo = 1;
foooo = 1;
fooooo = 1;
fooooo1 = 1;
fooooo2 = 1;
fooooo3 = 1;
fooooo4 = 1;
fooooo5 = 1;
fooooo6 = 1;
};
};
}""")
}
)
class TestSuggestions:
@pytest.fixture(autouse=True)
def setup(self, nix: Nix):
nix.settings.add_xp_feature("nix-command", "flakes")
nix.settings.system = "system"
@pytest.mark.parametrize(
"args",
[
[".#fob"],
["--impure", "--expr", "(builtins.getFlake (builtins.toPath ./.)).packages.system.fob"],
],
)
def test_three_closest(self, nix: Nix, args: list[str]):
err = nix.nix(["build", *args]).run().expect(1).stderr_s
assert "Did you mean one of fo1, fo2, foo or fooo?" in err
def test_only_suggest_relevant(self, nix: Nix):
assert "Did you mean" not in nix.nix(["build", ".#bar"]).run().expect(1).stderr_s
def test_inactive_if_all_args_provided(self, nix: Nix):
assert "Did you mean" not in (
nix.nix(["build", "--impure", "--expr", "({ foo }: foo) { foo = 1; fob = 2; }"])
.run()
.expect(1)
.stderr_s
)
def test_expr(self, nix: Nix):
assert "Did you mean foo?" in (
nix.nix(["build", "--impure", "--expr", "({ foo ? 1 }: foo) { fob = 2; }"])
.run()
.expect(1)
.stderr_s
)
|