From b60308322ad044187b550c817ed20172178353ea Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 13 Mar 2011 08:06:55 -0400 Subject: Adjust some tests for PyPy: it's more aggressive about optimizing away expressions with no side effects. --- test/test_coverage.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/test_coverage.py b/test/test_coverage.py index 31f3aa17..b455dbe9 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 + """, + [2], "") + self.check_coverage("""\ + 12 + 23 + a = 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): -- cgit v1.2.1 From 6ff043882cbba1cf28128207dafb832128e9d1c0 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 13 Mar 2011 08:49:49 -0400 Subject: Figures 2.4 has different answers for the psycho edge cases. --- test/test_coverage.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/test_coverage.py b/test/test_coverage.py index b455dbe9..4d3c37f5 100644 --- a/test/test_coverage.py +++ b/test/test_coverage.py @@ -147,13 +147,13 @@ class SimpleStatementTest(CoverageTest): 12 23 """, - [2], "") + ([1,2],[2]), "") self.check_coverage("""\ 12 23 a = 3 """, - [3], "") + ([1,2,3],[3]), "") self.check_coverage("""\ 1 + 2 1 + \\ -- cgit v1.2.1 From bdd144d86aacc204d7808cb9392a7a06aaeb624a Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Tue, 15 Mar 2011 18:10:00 -0400 Subject: Put the missing-continue test back into the mix. --- test/test_coverage.py | 57 +++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 29 deletions(-) (limited to 'test') diff --git a/test/test_coverage.py b/test/test_coverage.py index 4d3c37f5..5c35e12c 100644 --- a/test/test_coverage.py +++ b/test/test_coverage.py @@ -403,35 +403,34 @@ class SimpleStatementTest(CoverageTest): """, [1,2,3,4,5], "4") - if 0: - # Peephole optimization of jumps to jumps can mean that some statements - # never hit the line tracer. The behavior is different in different - # versions of Python, so don't run this test: - def test_strange_unexecuted_continue(self): - self.check_coverage("""\ - a = b = c = 0 - for n in range(100): - if n % 2: - if n % 4: - a += 1 - continue # <-- This line may not be hit. - else: - b += 1 - c += 1 - assert a == 50 and b == 50 and c == 50 - - a = b = c = 0 - for n in range(100): - if n % 2: - if n % 3: - a += 1 - continue # <-- This line is always hit. - else: - b += 1 - c += 1 - assert a == 33 and b == 50 and c == 50 - """, - [1,2,3,4,5,6,8,9,10, 12,13,14,15,16,17,19,20,21], "") + # Peephole optimization of jumps to jumps can mean that some statements + # never hit the line tracer. The behavior is different in different + # versions of Python, so don't run this test: + def test_strange_unexecuted_continue(self): + self.check_coverage("""\ + a = b = c = 0 + for n in range(100): + if n % 2: + if n % 4: + a += 1 + continue # <-- This line may not be hit. + else: + b += 1 + c += 1 + assert a == 50 and b == 50 and c == 50 + + a = b = c = 0 + for n in range(100): + if n % 2: + if n % 3: + a += 1 + continue # <-- This line is always hit. + else: + b += 1 + c += 1 + assert a == 33 and b == 50 and c == 50 + """, + [1,2,3,4,5,6,8,9,10, 12,13,14,15,16,17,19,20,21], "") def test_import(self): self.check_coverage("""\ -- cgit v1.2.1