forked from Vanuan/coveragepy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_data.py
156 lines (126 loc) · 4.64 KB
/
test_data.py
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
"""Tests for coverage.data"""
from coverage.backward import pickle
from coverage.data import CoverageData
from coverage.files import PathAliases
from tests.coveragetest import CoverageTest
DATA_1 = {
'a.py': {1: None, 2: None},
'b.py': {3: None},
}
SUMMARY_1 = {'a.py': 2, 'b.py': 1}
MEASURED_FILES_1 = ['a.py', 'b.py']
A_PY_LINES_1 = [1, 2]
B_PY_LINES_1 = [3]
DATA_2 = {
'a.py': {1: None, 5: None},
'c.py': {17: None},
}
SUMMARY_1_2 = {'a.py': 3, 'b.py': 1, 'c.py': 1}
MEASURED_FILES_1_2 = ['a.py', 'b.py', 'c.py']
ARC_DATA_3 = {
'x.py': {
(1, 2): None,
(2, 3): None,
},
'y.py': {
(17, 23): None,
},
}
X_PY_ARCS_3 = [(1, 2), (2, 3)]
Y_PY_ARCS_3 = [(17, 23)]
class DataTest(CoverageTest):
"""Test cases for coverage.data."""
run_in_temp_dir = False
def assert_summary(self, covdata, summary, fullpath=False):
"""Check that the summary of `covdata` is `summary`."""
self.assertEqual(covdata.summary(fullpath), summary)
def assert_measured_files(self, covdata, measured):
"""Check that `covdata`'s measured files are `measured`."""
self.assertCountEqual(covdata.measured_files(), measured)
def test_reading_empty(self):
covdata = CoverageData()
covdata.read()
self.assert_summary(covdata, {})
def test_adding_data(self):
covdata = CoverageData()
covdata.add_line_data(DATA_1)
self.assert_summary(covdata, SUMMARY_1)
self.assert_measured_files(covdata, MEASURED_FILES_1)
def test_touch_file(self):
covdata = CoverageData()
covdata.add_line_data(DATA_1)
covdata.touch_file('x.py')
self.assert_measured_files(covdata, MEASURED_FILES_1 + ['x.py'])
def test_writing_and_reading(self):
covdata1 = CoverageData()
covdata1.add_line_data(DATA_1)
covdata1.write()
covdata2 = CoverageData()
covdata2.read()
self.assert_summary(covdata2, SUMMARY_1)
def test_combining(self):
covdata1 = CoverageData()
covdata1.add_line_data(DATA_1)
covdata1.write(suffix='1')
covdata2 = CoverageData()
covdata2.add_line_data(DATA_2)
covdata2.write(suffix='2')
covdata3 = CoverageData()
covdata3.combine_parallel_data()
self.assert_summary(covdata3, SUMMARY_1_2)
self.assert_measured_files(covdata3, MEASURED_FILES_1_2)
def test_erasing(self):
covdata1 = CoverageData()
covdata1.add_line_data(DATA_1)
covdata1.write()
covdata1.erase()
self.assert_summary(covdata1, {})
covdata2 = CoverageData()
covdata2.read()
self.assert_summary(covdata2, {})
def test_file_format(self):
# Write with CoverageData, then read the pickle explicitly.
covdata = CoverageData()
covdata.add_line_data(DATA_1)
covdata.write()
with open(".coverage", 'rb') as fdata:
data = pickle.load(fdata)
lines = data['lines']
self.assertCountEqual(lines.keys(), MEASURED_FILES_1)
self.assertCountEqual(lines['a.py'], A_PY_LINES_1)
self.assertCountEqual(lines['b.py'], B_PY_LINES_1)
# If not measuring branches, there's no arcs entry.
self.assertEqual(data.get('arcs', 'not there'), 'not there')
def test_file_format_with_arcs(self):
# Write with CoverageData, then read the pickle explicitly.
covdata = CoverageData()
covdata.add_arc_data(ARC_DATA_3)
covdata.write()
with open(".coverage", 'rb') as fdata:
data = pickle.load(fdata)
self.assertCountEqual(data['lines'].keys(), [])
arcs = data['arcs']
self.assertCountEqual(arcs['x.py'], X_PY_ARCS_3)
self.assertCountEqual(arcs['y.py'], Y_PY_ARCS_3)
def test_combining_with_aliases(self):
covdata1 = CoverageData()
covdata1.add_line_data({
'/home/ned/proj/src/a.py': {1: None, 2: None},
'/home/ned/proj/src/sub/b.py': {3: None},
})
covdata1.write(suffix='1')
covdata2 = CoverageData()
covdata2.add_line_data({
r'c:\ned\test\a.py': {4: None, 5: None},
r'c:\ned\test\sub\b.py': {6: None},
})
covdata2.write(suffix='2')
covdata3 = CoverageData()
aliases = PathAliases()
aliases.add("/home/ned/proj/src/", "./")
aliases.add(r"c:\ned\test", "./")
covdata3.combine_parallel_data(aliases=aliases)
self.assert_summary(
covdata3, {'./a.py': 4, './sub/b.py': 2}, fullpath=True
)
self.assert_measured_files(covdata3, ['./a.py', './sub/b.py'])