Passed
Push — master ( 18b92d...e7c449 )
by Ramon
50s queued 12s
created

TestDiscoverClasses.test_discover_classes_with_exclusions()   A

Complexity

Conditions 1

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 9
nop 1
dl 0
loc 14
rs 9.95
c 0
b 0
f 0
1
import sys
2
from pathlib import Path
3
from unittest import TestCase
4
5
from barentsz import discover_classes
6
7
sys.path.append(str(Path(__file__).parent.parent / 'test_resources'))
8
9
from examples_for_tests._private_module import PublicClass
10
from examples_for_tests.level2 import module1
11
from examples_for_tests.module1 import Class1, _PrivateClass
12
from examples_for_tests.level2.module1 import Class1 as Class1_level2
13
14
15
class TestDiscoverClasses(TestCase):
16
17
    def test_discover_classes_in_path(self):
18
        # SETUP
19
        path_to_resources = (Path(__file__).parent.parent / 'test_resources'
20
                             / 'examples_for_tests')
21
22
        # EXECUTE
23
        classes = discover_classes(path_to_resources)
24
25
        # VERIFY
26
        self.assertEqual(2, len(classes))
27
        self.assertIn(Class1, classes)
28
        self.assertIn(Class1_level2, classes)
29
30
    def test_discover_classes_in_module(self):
31
        # EXECUTE
32
        classes = discover_classes(module1)
33
34
        # VERIFY
35
        self.assertEqual(1, len(classes))
36
        self.assertIn(Class1_level2, classes)
37
38
    def test_discover_classes_in_private_modules(self):
39
        # SETUP
40
        path_to_resources = (Path(__file__).parent.parent / 'test_resources'
41
                             / 'examples_for_tests')
42
43
        # EXECUTE
44
        classes = discover_classes(path_to_resources, in_private_modules=True)
45
46
        # VERIFY
47
        self.assertEqual(3, len(classes))
48
        self.assertIn(Class1, classes)
49
        self.assertIn(Class1_level2, classes)
50
        self.assertIn(PublicClass, classes)
51
52
    def test_discover_private_classes(self):
53
        # SETUP
54
        path_to_resources = (Path(__file__).parent.parent / 'test_resources'
55
                             / 'examples_for_tests')
56
57
        # EXECUTE
58
        classes = discover_classes(path_to_resources, include_privates=True)
59
60
        # VERIFY
61
        self.assertEqual(3, len(classes))
62
        self.assertIn(Class1, classes)
63
        self.assertIn(Class1_level2, classes)
64
        self.assertIn(_PrivateClass, classes)
65
66
    def test_discover_classes_with_signature(self):
67
        # SETUP
68
        path_to_resources = (Path(__file__).parent.parent / 'test_resources'
69
                             / 'examples_for_tests')
70
71
        # EXECUTE
72
        classes = discover_classes(path_to_resources, include_privates=True, in_private_modules=True, signature=str)
73
74
        # VERIFY
75
        self.assertEqual(1, len(classes))
76
        self.assertIn(Class1, classes)
77
78
    def test_discover_classes_with_wrong_argument(self):
79
        # EXECUTE & VALIDATE
80
        with self.assertRaises(ValueError):
81
            discover_classes(123)
82
83
    def test_discover_classes_with_exclusions(self):
84
        # SETUP
85
        path_to_resources = (Path(__file__).parent.parent / 'test_resources'
86
                             / 'examples_for_tests')
87
88
        # EXECUTE
89
        classes1 = discover_classes(path_to_resources, exclude=Class1)
90
        classes2 = discover_classes(path_to_resources, exclude=[Class1])
91
92
        # VERIFY
93
        self.assertEqual(1, len(classes1))
94
        self.assertIn(Class1_level2, classes1)
95
        self.assertEqual(1, len(classes2))
96
        self.assertIn(Class1_level2, classes2)
97