diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2018-09-18 07:49:54 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2018-09-21 17:56:49 -0400 |
commit | 5ff763737475f8fa1a587f6903de1329b41090ae (patch) | |
tree | 99fca35d66bfd1a018b50368af783a460d59744c /tests/test_context.py | |
parent | d2f77ab2ffc308e616af0207546ee1bef1cb8c75 (diff) | |
download | python-coveragepy-git-5ff763737475f8fa1a587f6903de1329b41090ae.tar.gz |
Combining contexts works
Diffstat (limited to 'tests/test_context.py')
-rw-r--r-- | tests/test_context.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/test_context.py b/tests/test_context.py index ec1e4885..e20eb9bb 100644 --- a/tests/test_context.py +++ b/tests/test_context.py @@ -3,7 +3,10 @@ """Tests for context support.""" +import os.path + import coverage +from coverage.data import CoverageData, combine_parallel_data from tests.coveragetest import CoverageTest @@ -28,3 +31,59 @@ class GlobalContextTest(CoverageTest): self.start_import_stop(cov, "main") data = cov.get_data() self.assertCountEqual(data.measured_contexts(), ["gooey"]) + + def run_red_blue(self, **options): + self.make_file("red.py", """\ + a = 1 + if a > 2: + a = 3 + assert a == 1 + """) + red_cov = coverage.Coverage(context="red", data_suffix="r", source=["."], **options) + self.start_import_stop(red_cov, "red") + red_cov.save() + + self.make_file("blue.py", """\ + b = 1 + if b > 2: + b = 3 + assert b == 1 + """) + blue_cov = coverage.Coverage(context="blue", data_suffix="b", source=["."], **options) + self.start_import_stop(blue_cov, "blue") + blue_cov.save() + + def test_combining_line_contexts(self): + self.run_red_blue() + combined = CoverageData() + combine_parallel_data(combined) + + self.assertEqual(combined.measured_contexts(), {'red', 'blue'}) + + full_names = {os.path.basename(f): f for f in combined.measured_files()} + self.assertCountEqual(full_names, ['red.py', 'blue.py']) + + self.assertEqual(combined.lines(full_names['red.py'], context='red'), [1, 2, 4]) + self.assertEqual(combined.lines(full_names['red.py'], context='blue'), []) + self.assertEqual(combined.lines(full_names['blue.py'], context='red'), []) + self.assertEqual(combined.lines(full_names['blue.py'], context='blue'), [1, 2, 4]) + + def test_combining_arc_contexts(self): + self.run_red_blue(branch=True) + combined = CoverageData() + combine_parallel_data(combined) + + self.assertEqual(combined.measured_contexts(), {'red', 'blue'}) + + full_names = {os.path.basename(f): f for f in combined.measured_files()} + self.assertCountEqual(full_names, ['red.py', 'blue.py']) + + self.assertEqual(combined.lines(full_names['red.py'], context='red'), [1, 2, 4]) + self.assertEqual(combined.lines(full_names['red.py'], context='blue'), []) + self.assertEqual(combined.lines(full_names['blue.py'], context='red'), []) + self.assertEqual(combined.lines(full_names['blue.py'], context='blue'), [1, 2, 4]) + + self.assertEqual(combined.arcs(full_names['red.py'], context='red'), [(-1, 1), (1, 2), (2, 4), (4, -1)]) + self.assertEqual(combined.arcs(full_names['red.py'], context='blue'), []) + self.assertEqual(combined.arcs(full_names['blue.py'], context='red'), []) + self.assertEqual(combined.arcs(full_names['blue.py'], context='blue'), [(-1, 1), (1, 2), (2, 4), (4, -1)]) |