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
|
# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
"""Tests for annotation from coverage.py."""
import coverage
from tests.coveragetest import CoverageTest
from tests.goldtest import compare, gold_path
class AnnotationGoldTest(CoverageTest):
"""Test the annotate feature with gold files."""
def make_multi(self):
"""Make a few source files we need for the tests."""
self.make_file("multi.py", """\
import a.a
import b.b
a.a.a(1)
b.b.b(2)
""")
self.make_file("a/__init__.py")
self.make_file("a/a.py", """\
def a(x):
if x == 1:
print("x is 1")
else:
print("x is not 1")
""")
self.make_file("b/__init__.py")
self.make_file("b/b.py", """\
def b(x):
msg = "x is %s" % x
print(msg)
""")
def test_multi(self):
self.make_multi()
cov = coverage.Coverage()
self.start_import_stop(cov, "multi")
cov.annotate()
compare(gold_path("annotate/multi"), ".", "*,cover")
def test_annotate_dir(self):
self.make_multi()
cov = coverage.Coverage(source=["."])
self.start_import_stop(cov, "multi")
cov.annotate(directory="out_anno_dir")
compare(gold_path("annotate/anno_dir"), "out_anno_dir", "*,cover")
def test_encoding(self):
self.make_file("utf8.py", """\
# -*- coding: utf-8 -*-
# This comment has an accent: é
print("spam eggs")
""")
cov = coverage.Coverage()
self.start_import_stop(cov, "utf8")
cov.annotate()
compare(gold_path("annotate/encodings"), ".", "*,cover")
def test_white(self):
self.make_file("white.py", """\
# A test case sent to me by Steve White
def f(self):
if self==1:
pass
elif self.m('fred'):
pass
elif (g==1) and (b==2):
pass
elif self.m('fred')==True:
pass
elif ((g==1) and (b==2))==True:
pass
else:
pass
def g(x):
if x == 1:
a = 1
else:
a = 2
g(1)
def h(x):
if 0: #pragma: no cover
pass
if x == 1:
a = 1
else:
a = 2
h(2)
""")
cov = coverage.Coverage()
self.start_import_stop(cov, "white")
cov.annotate()
compare(gold_path("annotate/annotate"), ".", "*,cover")
def test_missing_after_else(self):
self.make_file("mae.py", """\
def f(x):
if x == 1:
print("1")
else:
print("2")
if f(1):
print("nope")
if f(2):
print("nope")
""")
cov = coverage.Coverage()
self.start_import_stop(cov, "mae")
cov.annotate()
assert self.stdout() == "1\n2\n"
compare(gold_path("annotate/mae"), ".", "*,cover")
|