File: test_validate.py

package info (click to toggle)
python-plumbum 1.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,300 kB
  • sloc: python: 10,016; makefile: 130; sh: 8
file content (89 lines) | stat: -rw-r--r-- 2,666 bytes parent folder | download
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from __future__ import annotations

from plumbum import cli


class TestValidator:
    def test_named(self):
        class Try:
            @cli.positional(x=abs, y=str)
            def main(selfy, x, y):
                pass

        assert Try.main.positional == [abs, str]
        assert Try.main.positional_varargs is None

    def test_position(self):
        class Try:
            @cli.positional(abs, str)
            def main(selfy, x, y):
                pass

        assert Try.main.positional == [abs, str]
        assert Try.main.positional_varargs is None

    def test_mix(self):
        class Try:
            @cli.positional(abs, str, d=bool)
            def main(selfy, x, y, z, d):
                pass

        assert Try.main.positional == [abs, str, None, bool]
        assert Try.main.positional_varargs is None

    def test_var(self):
        class Try:
            @cli.positional(abs, str, int)
            def main(selfy, x, y, *g):
                pass

        assert Try.main.positional == [abs, str]
        assert Try.main.positional_varargs is int

    def test_defaults(self):
        class Try:
            @cli.positional(abs, str)
            def main(selfy, x, y="hello"):
                pass

        assert Try.main.positional == [abs, str]


class TestProg:
    def test_prog(self, capsys):
        class MainValidator(cli.Application):
            @cli.positional(int, int, int)
            def main(self, myint, myint2, *mylist):
                print(repr(myint), myint2, mylist)

        _, rc = MainValidator.run(["prog", "1", "2", "3", "4", "5"], exit=False)
        assert rc == 0
        assert capsys.readouterr()[0].strip() == "1 2 (3, 4, 5)"

    def test_failure(self, capsys):
        class MainValidator(cli.Application):
            @cli.positional(int, int, int)
            def main(self, myint, myint2, *mylist):
                print(myint, myint2, mylist)

        _, rc = MainValidator.run(["prog", "1.2", "2", "3", "4", "5"], exit=False)

        assert rc == 2
        value = capsys.readouterr()[0].strip()
        assert "int" in value
        assert "not" in value
        assert "1.2" in value

    def test_defaults(self, capsys):
        class MainValidator(cli.Application):
            @cli.positional(int, int)
            def main(self, myint, myint2=2):
                print(repr(myint), repr(myint2))

        _, rc = MainValidator.run(["prog", "1"], exit=False)
        assert rc == 0
        assert capsys.readouterr()[0].strip() == "1 2"

        _, rc = MainValidator.run(["prog", "1", "3"], exit=False)
        assert rc == 0
        assert capsys.readouterr()[0].strip() == "1 3"