diff options
Diffstat (limited to 'test/test_coverage.py')
-rw-r--r-- | test/test_coverage.py | 97 |
1 files changed, 64 insertions, 33 deletions
diff --git a/test/test_coverage.py b/test/test_coverage.py index 31f3aa17..5da9cb16 100644 --- a/test/test_coverage.py +++ b/test/test_coverage.py @@ -140,12 +140,33 @@ class SimpleStatementTest(CoverageTest): """Testing simple single-line statements.""" def test_expression(self): + # Bare expressions as statements are tricky: some implementations + # optimize some of them away. All implementations seem to count + # the implicit return at the end as executable. + self.check_coverage("""\ + 12 + 23 + """, + ([1,2],[2]), "") + self.check_coverage("""\ + 12 + 23 + a = 3 + """, + ([1,2,3],[3]), "") self.check_coverage("""\ 1 + 2 1 + \\ 2 """, - [1,2], "") + ([1,2], [2]), "") + self.check_coverage("""\ + 1 + 2 + 1 + \\ + 2 + a = 4 + """, + ([1,2,4], [4]), "") def test_assert(self): self.check_coverage("""\ @@ -560,7 +581,7 @@ class SimpleStatementTest(CoverageTest): c = 6 assert (a,b,c) == (1,3,6) """, - ([1,3,5,6,7], [1,3,4,5,6,7]), "") + ([1,3,6,7], [1,3,5,6,7], [1,3,4,5,6,7]), "") class CompoundStatementTest(CoverageTest): @@ -821,6 +842,16 @@ class CompoundStatementTest(CoverageTest): """, [1,2,4,5,7,9,10], "4, 7") + if sys.version_info >= (2, 4): + # In 2.4 and up, constant if's were compiled away. + def test_constant_if(self): + self.check_coverage("""\ + if 1: + a = 2 + assert a == 2 + """, + [2,3], "") + def test_while(self): self.check_coverage("""\ a = 3; b = 0 @@ -1134,7 +1165,7 @@ class ExcludeTest(CoverageTest): if 0: a = 4 # -cc """, - [1,3], "", ['-cc']) + [1,3], "", excludes=['-cc']) def test_two_excludes(self): self.check_coverage("""\ @@ -1146,7 +1177,7 @@ class ExcludeTest(CoverageTest): c = 6 # -xx assert a == 1 and b == 2 """, - [1,3,5,7], "5", ['-cc', '-xx']) + [1,3,5,7], "5", excludes=['-cc', '-xx']) def test_excluding_if_suite(self): self.check_coverage("""\ @@ -1158,7 +1189,7 @@ class ExcludeTest(CoverageTest): c = 6 assert a == 1 and b == 2 """, - [1,7], "", ['if 0:']) + [1,7], "", excludes=['if 0:']) def test_excluding_if_but_not_else_suite(self): self.check_coverage("""\ @@ -1173,7 +1204,7 @@ class ExcludeTest(CoverageTest): b = 9 assert a == 8 and b == 9 """, - [1,8,9,10], "", ['if 0:']) + [1,8,9,10], "", excludes=['if 0:']) def test_excluding_else_suite(self): self.check_coverage("""\ @@ -1188,7 +1219,7 @@ class ExcludeTest(CoverageTest): b = 9 assert a == 4 and b == 5 and c == 6 """, - [1,3,4,5,6,10], "", ['#pragma: NO COVER']) + [1,3,4,5,6,10], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 1; b = 2 @@ -1208,7 +1239,7 @@ class ExcludeTest(CoverageTest): b = 9 assert a == 4 and b == 5 and c == 6 """, - [1,3,4,5,6,17], "", ['#pragma: NO COVER']) + [1,3,4,5,6,17], "", excludes=['#pragma: NO COVER']) def test_excluding_elif_suites(self): self.check_coverage("""\ @@ -1226,7 +1257,7 @@ class ExcludeTest(CoverageTest): b = 12 assert a == 4 and b == 5 and c == 6 """, - [1,3,4,5,6,11,12,13], "11-12", ['#pragma: NO COVER']) + [1,3,4,5,6,11,12,13], "11-12", excludes=['#pragma: NO COVER']) def test_excluding_oneline_if(self): self.check_coverage("""\ @@ -1237,7 +1268,7 @@ class ExcludeTest(CoverageTest): foo() """, - [1,2,4,6], "", ["no cover"]) + [1,2,4,6], "", excludes=["no cover"]) def test_excluding_a_colon_not_a_suite(self): self.check_coverage("""\ @@ -1248,7 +1279,7 @@ class ExcludeTest(CoverageTest): foo() """, - [1,2,4,6], "", ["no cover"]) + [1,2,4,6], "", excludes=["no cover"]) def test_excluding_for_suite(self): self.check_coverage("""\ @@ -1257,7 +1288,7 @@ class ExcludeTest(CoverageTest): a += i assert a == 15 """, - [1,4], "", ['#pragma: NO COVER']) + [1,4], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 for i in [1, @@ -1266,7 +1297,7 @@ class ExcludeTest(CoverageTest): a += i assert a == 15 """, - [1,6], "", ['#pragma: NO COVER']) + [1,6], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 for i in [1,2,3,4,5 @@ -1276,7 +1307,7 @@ class ExcludeTest(CoverageTest): a = 99 assert a == 1 """, - [1,7], "", ['#pragma: NO COVER']) + [1,7], "", excludes=['#pragma: NO COVER']) def test_excluding_for_else(self): self.check_coverage("""\ @@ -1289,7 +1320,7 @@ class ExcludeTest(CoverageTest): a = 123 assert a == 1 """, - [1,2,3,4,5,8], "5", ['#pragma: NO COVER']) + [1,2,3,4,5,8], "5", excludes=['#pragma: NO COVER']) def test_excluding_while(self): self.check_coverage("""\ @@ -1300,7 +1331,7 @@ class ExcludeTest(CoverageTest): b = 99 assert a == 3 and b == 0 """, - [1,6], "", ['#pragma: NO COVER']) + [1,6], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 3; b = 0 while ( @@ -1311,7 +1342,7 @@ class ExcludeTest(CoverageTest): b = 99 assert a == 3 and b == 0 """, - [1,8], "", ['#pragma: NO COVER']) + [1,8], "", excludes=['#pragma: NO COVER']) def test_excluding_while_else(self): self.check_coverage("""\ @@ -1324,7 +1355,7 @@ class ExcludeTest(CoverageTest): b = 123 assert a == 3 and b == 1 """, - [1,2,3,4,5,8], "5", ['#pragma: NO COVER']) + [1,2,3,4,5,8], "5", excludes=['#pragma: NO COVER']) def test_excluding_try_except(self): self.check_coverage("""\ @@ -1335,7 +1366,7 @@ class ExcludeTest(CoverageTest): a = 99 assert a == 1 """, - [1,2,3,6], "", ['#pragma: NO COVER']) + [1,2,3,6], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 try: @@ -1345,7 +1376,7 @@ class ExcludeTest(CoverageTest): a = 99 assert a == 99 """, - [1,2,3,4,5,6,7], "", ['#pragma: NO COVER']) + [1,2,3,4,5,6,7], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 try: @@ -1357,7 +1388,7 @@ class ExcludeTest(CoverageTest): a = 123 assert a == 123 """, - [1,2,3,4,7,8,9], "", ['#pragma: NO COVER']) + [1,2,3,4,7,8,9], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 try: @@ -1368,7 +1399,7 @@ class ExcludeTest(CoverageTest): a = 123 assert a == 123 """, - [1,2,3,7,8], "", ['#pragma: NO COVER']) + [1,2,3,7,8], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 try: @@ -1380,7 +1411,7 @@ class ExcludeTest(CoverageTest): a = 123 assert a == 99 """, - [1,2,3,4,5,6,9], "", ['#pragma: NO COVER']) + [1,2,3,4,5,6,9], "", excludes=['#pragma: NO COVER']) def test_excluding_try_except_pass(self): self.check_coverage("""\ @@ -1391,7 +1422,7 @@ class ExcludeTest(CoverageTest): x = 2 assert a == 1 """, - [1,2,3,6], "", ['#pragma: NO COVER']) + [1,2,3,6], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 try: @@ -1403,7 +1434,7 @@ class ExcludeTest(CoverageTest): a = 123 assert a == 123 """, - [1,2,3,4,7,8,9], "", ['#pragma: NO COVER']) + [1,2,3,4,7,8,9], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 try: @@ -1414,7 +1445,7 @@ class ExcludeTest(CoverageTest): a = 123 assert a == 123 """, - [1,2,3,7,8], "", ['#pragma: NO COVER']) + [1,2,3,7,8], "", excludes=['#pragma: NO COVER']) self.check_coverage("""\ a = 0 try: @@ -1426,7 +1457,7 @@ class ExcludeTest(CoverageTest): x = 2 assert a == 99 """, - [1,2,3,4,5,6,9], "", ['#pragma: NO COVER']) + [1,2,3,4,5,6,9], "", excludes=['#pragma: NO COVER']) def test_excluding_if_pass(self): # From a comment on the coverage page by Michael McNeil Forbes: @@ -1439,7 +1470,7 @@ class ExcludeTest(CoverageTest): f() """, - [1,7], "", ["no cover"]) + [1,7], "", excludes=["no cover"]) def test_excluding_function(self): self.check_coverage("""\ @@ -1451,7 +1482,7 @@ class ExcludeTest(CoverageTest): x = 1 assert x == 1 """, - [6,7], "", ['#pragma: NO COVER']) + [6,7], "", excludes=['#pragma: NO COVER']) def test_excluding_method(self): self.check_coverage("""\ @@ -1465,7 +1496,7 @@ class ExcludeTest(CoverageTest): x = Fooey() assert x.a == 1 """, - [1,2,3,8,9], "", ['#pragma: NO COVER']) + [1,2,3,8,9], "", excludes=['#pragma: NO COVER']) def test_excluding_class(self): self.check_coverage("""\ @@ -1479,7 +1510,7 @@ class ExcludeTest(CoverageTest): x = 1 assert x == 1 """, - [8,9], "", ['#pragma: NO COVER']) + [8,9], "", excludes=['#pragma: NO COVER']) if sys.version_info >= (2, 4): @@ -1683,7 +1714,7 @@ class ReportingTest(CoverageTest): CoverageException, "No data to report.", self.command_line, "annotate -d ann" ) - self.assertFalse(os.path.exists("ann")) + self.assert_doesnt_exist("ann") def test_no_data_to_report_on_html(self): # Reporting with no data produces a nice message and no output dir. @@ -1691,7 +1722,7 @@ class ReportingTest(CoverageTest): CoverageException, "No data to report.", self.command_line, "html -d htmlcov" ) - self.assertFalse(os.path.exists("htmlcov")) + self.assert_doesnt_exist("htmlcov") def test_no_data_to_report_on_xml(self): # Reporting with no data produces a nice message. |