File: test_parse_arguments.py

package info (click to toggle)
pytest-watcher 0.4.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 856 kB
  • sloc: python: 925; makefile: 28; sh: 13
file content (96 lines) | stat: -rw-r--r-- 2,530 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
90
91
92
93
94
95
96
from pathlib import Path
from typing import List

import pytest

from pytest_watcher.watcher import VERSION, parse_arguments


@pytest.mark.parametrize(
    ("args", "path_to_watch"),
    [
        (["."], Path(".")),
        (["/project/"], Path("/project")),
        (["../project/"], Path("../project")),
        (["/project/", "/tests/"], Path("/project")),
    ],
)
def test_path(args: List[str], path_to_watch: str):
    parsed, _ = parse_arguments(args)

    assert parsed.path == path_to_watch


def test_delay():
    parsed, _ = parse_arguments([".", "--delay", "999"])
    assert parsed.delay == 999


def test_now():
    parsed, _ = parse_arguments([".", "--now"])
    assert parsed.now is True


def test_runner():
    parsed, _ = parse_arguments([".", "--runner", "tox"])
    assert parsed.runner == "tox"


def test_clear():
    parsed, _ = parse_arguments([".", "--clear"])
    assert parsed.clear is True


@pytest.mark.parametrize(
    ("args", "patterns"),
    [
        ([".", "--patterns", "*.py,*.env"], ["*.py", "*.env"]),
        (
            [".", "--patterns", "*.py,*.env,project/pyproject.toml"],
            ["*.py", "*.env", "project/pyproject.toml"],
        ),
    ],
)
def test_patterns(args: List[str], patterns: List[str]):
    parsed, _ = parse_arguments(args)
    assert parsed.patterns == patterns


@pytest.mark.parametrize(
    ("args", "ignore_patterns"),
    [
        (
            [".", "--ignore-patterns", "long-long-long-path,templates/*.py"],
            ["long-long-long-path", "templates/*.py"],
        ),
    ],
)
def test_ignore_patterns(args: List[str], ignore_patterns: List[str]):
    parsed, _ = parse_arguments(args)
    assert parsed.ignore_patterns == ignore_patterns


@pytest.mark.parametrize(
    ("args", "runner_args"),
    [
        (["."], []),
        ([".", "--lf", "--nf", "-vv"], ["--lf", "--nf", "-vv"]),
        ([".", "--runner", "tox", "--lf", "--nf", "-vv"], ["--lf", "--nf", "-vv"]),
        ([".", "--lf", "--nf", "-vv", "--runner", "tox"], ["--lf", "--nf", "-vv"]),
        (
            [".", "--ignore", "tests/test_watcher.py"],
            ["--ignore", "tests/test_watcher.py"],
        ),
    ],
)
def test_runner_args(args: List[str], runner_args: List[str]):
    _, parsed_args = parse_arguments(args)
    assert parsed_args == runner_args


def test_version(capsys: pytest.CaptureFixture):
    with pytest.raises(SystemExit):
        parse_arguments(["--version"])

    captured = capsys.readouterr()
    assert captured.out == f"{VERSION}\n"