diff options
Diffstat (limited to 'tests/test_api.py')
-rw-r--r-- | tests/test_api.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/test_api.py b/tests/test_api.py index eb022ae3..228f0147 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -425,6 +425,49 @@ class ApiTest(CoverageTest): cov.combine() self.check_code1_code2(cov) + def test_ordered_combine(self): + # https://github.com/nedbat/coveragepy/issues/649 + # The order of the [paths] setting matters + def make_data_file(): + data = coverage.CoverageData(".coverage.1") + data.add_lines({os.path.abspath('ci/girder/g1.py'): dict.fromkeys(range(10))}) + data.add_lines({os.path.abspath('ci/girder/plugins/p1.py'): dict.fromkeys(range(10))}) + data.write() + + def get_combined_filenames(): + cov = coverage.Coverage() + cov.combine() + cov.save() + data = cov.get_data() + filenames = {os.path.relpath(f).replace("\\", "/") for f in data.measured_files()} + return filenames + + # Case 1: get the order right. + make_data_file() + self.make_file(".coveragerc", """\ + [paths] + plugins = + plugins/ + ci/girder/plugins/ + girder = + girder/ + ci/girder/ + """) + assert get_combined_filenames() == {'girder/g1.py', 'plugins/p1.py'} + + # Case 2: get the order wrong. + make_data_file() + self.make_file(".coveragerc", """\ + [paths] + girder = + girder/ + ci/girder/ + plugins = + plugins/ + ci/girder/plugins/ + """) + assert get_combined_filenames() == {'girder/g1.py', 'girder/plugins/p1.py'} + def test_warnings(self): self.make_file("hello.py", """\ import sys, os |