File: test_chooser_test.py

package info (click to toggle)
python-noseofyeti 2.4.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 360 kB
  • sloc: python: 2,581; sh: 31; makefile: 12
file content (118 lines) | stat: -rw-r--r-- 4,209 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import pytest

from noseOfYeti.tokeniser.chooser import TestChooser as Chooser


@pytest.fixture()
def test_chooser():
    return Chooser()


@pytest.fixture()
def Classes():
    class Classes:
        class TestKlsForTest:
            def ignore__test(self):
                pass

            def test_with__test__set(self):
                pass

            test_with__test__set.__test__ = False

            def test_actual(self):
                pass

        class TestIgnoredKls:
            def test_things(self):
                pass

        class TestKlsWithInherited(TestKlsForTest):
            def test_on_subclass(self):
                pass

        class TestKlsParent:
            __only_run_tests_in_children__ = True

            def test_one(self):
                pass

            def test_two(self):
                pass

        class TestKlsChild(TestKlsParent):
            pass

        class TestKlsGrandChild(TestKlsChild):
            pass

    return Classes


class Test_TestChooser:
    def test_it_resets_done_when_told_about_new_module(self, test_chooser):
        assert test_chooser.done == {}

        test_chooser.done["a"] = 3
        assert test_chooser.done == {"a": 3}

        test_chooser.new_module()
        assert test_chooser.done == {}

    def test_already_visited_puts_kls_name_key_in_done_or_returns_True(self, test_chooser):
        assert test_chooser.done == {}
        assert not test_chooser.already_visited("a", "b")
        assert test_chooser.done == {"a.b": True}
        assert test_chooser.already_visited("a", "b")

        assert not test_chooser.already_visited("c", "d")
        assert test_chooser.done == {"a.b": True, "c.d": True}
        assert test_chooser.already_visited("c", "d")


class Test_TestChooser_Consider:
    def test_it_ignores_if_method_starts_with_ignore(self, test_chooser, Classes):
        assert not test_chooser.consider(Classes.TestKlsForTest().ignore__test)

    def test_it_ignores_if_method_has__test__set_to_false(self, test_chooser, Classes):
        assert not test_chooser.consider(Classes.TestKlsForTest().test_with__test__set)

    def test_it_returns_None_if_kls_does_not_have_is_noy_test_set(self, test_chooser, Classes):
        assert test_chooser.consider(Classes.TestKlsForTest().test_actual) is None

    def test_it_ignores_inherited_tests_if_is_noy_test_is_set_on_kls(self, test_chooser, Classes):
        assert test_chooser.consider(Classes.TestKlsWithInherited().test_actual) is None
        Classes.TestKlsWithInherited.is_noy_spec = True
        assert not test_chooser.consider(Classes.TestKlsWithInherited().test_actual)
        assert test_chooser.consider(Classes.TestKlsWithInherited().test_on_subclass)

    def test_it_ignores_functions_already_visited(self, test_chooser, Classes):
        Classes.TestKlsWithInherited.is_noy_spec = True
        assert test_chooser.consider(Classes.TestKlsWithInherited().test_on_subclass)
        assert not test_chooser.consider(Classes.TestKlsWithInherited().test_on_subclass)

    def test_it_ignores_parent_if_specified_to_only_run_tests_in_children(
        self, test_chooser, Classes
    ):
        Classes.TestKlsParent.is_noy_spec = True
        assert not test_chooser.consider(Classes.TestKlsParent().test_one)
        assert not test_chooser.consider(Classes.TestKlsParent().test_two)

    def test_it_runs_parent_tests_in_child_if_specified_in_parent_to_only_run_tests_in_children(
        self, test_chooser, Classes
    ):
        Classes.TestKlsParent.is_noy_spec = True
        Classes.TestKlsChild.is_noy_spec = True
        assert test_chooser.consider(Classes.TestKlsChild().test_one)
        assert test_chooser.consider(Classes.TestKlsChild().test_two)

    def test_it_doesnt_run_grandparent_tests_if_specified_in_grandparent_to_only_run_tests_in_children(
        self,
        test_chooser,
        Classes,
    ):
        Classes.TestKlsParent.is_noy_spec = True
        Classes.TestKlsChild.is_noy_spec = True
        Classes.TestKlsGrandChild.is_noy_spec = True
        assert not test_chooser.consider(Classes.TestKlsGrandChild().test_one)
        assert not test_chooser.consider(Classes.TestKlsGrandChild().test_two)