From aefde5326dde3a6a232d888a1b1b4e1202ff2b3b Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 14 May 2023 14:10:23 -0400 Subject: refactor(test): move some tests to a new file --- tests/test_api.py | 146 +--------------------------------------- tests/test_report_common.py | 158 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+), 145 deletions(-) create mode 100644 tests/test_report_common.py diff --git a/tests/test_api.py b/tests/test_api.py index 596510eb..5c903d65 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -28,8 +28,7 @@ from coverage.misc import import_local_file from coverage.types import FilePathClasses, FilePathType, Protocol, TCovKwargs from tests.coveragetest import CoverageTest, TESTS_DIR, UsingModulesMixin -from tests.goldtest import contains, doesnt_contain -from tests.helpers import arcz_to_arcs, assert_count_equal, assert_coverage_warnings +from tests.helpers import assert_count_equal, assert_coverage_warnings from tests.helpers import change_dir, nice_file, os_sep BAD_SQLITE_REGEX = r"file( is encrypted or)? is not a database" @@ -1489,146 +1488,3 @@ class CombiningTest(CoverageTest): # After combining, the .coverage file & the original combined file should still be there. self.assert_exists(".coverage") self.assert_file_count(".coverage.*", 2) - - -class ReportMapsPathsTest(CoverageTest): - """Check that reporting implicitly maps paths.""" - - def make_files(self, data: str, settings: bool = False) -> None: - """Create the test files we need for line coverage.""" - src = """\ - if VER == 1: - print("line 2") - if VER == 2: - print("line 4") - if VER == 3: - print("line 6") - """ - self.make_file("src/program.py", src) - self.make_file("ver1/program.py", src) - self.make_file("ver2/program.py", src) - - if data == "line": - self.make_data_file( - lines={ - abs_file("ver1/program.py"): [1, 2, 3, 5], - abs_file("ver2/program.py"): [1, 3, 4, 5], - } - ) - else: - self.make_data_file( - arcs={ - abs_file("ver1/program.py"): arcz_to_arcs(".1 12 23 35 5."), - abs_file("ver2/program.py"): arcz_to_arcs(".1 13 34 45 5."), - } - ) - - if settings: - self.make_file(".coveragerc", """\ - [paths] - source = - src - ver1 - ver2 - """) - - def test_map_paths_during_line_report_without_setting(self) -> None: - self.make_files(data="line") - cov = coverage.Coverage() - cov.load() - cov.report(show_missing=True) - expected = textwrap.dedent(os_sep("""\ - Name Stmts Miss Cover Missing - ----------------------------------------------- - ver1/program.py 6 2 67% 4, 6 - ver2/program.py 6 2 67% 2, 6 - ----------------------------------------------- - TOTAL 12 4 67% - """)) - assert expected == self.stdout() - - def test_map_paths_during_line_report(self) -> None: - self.make_files(data="line", settings=True) - cov = coverage.Coverage() - cov.load() - cov.report(show_missing=True) - expected = textwrap.dedent(os_sep("""\ - Name Stmts Miss Cover Missing - ---------------------------------------------- - src/program.py 6 1 83% 6 - ---------------------------------------------- - TOTAL 6 1 83% - """)) - assert expected == self.stdout() - - def test_map_paths_during_branch_report_without_setting(self) -> None: - self.make_files(data="arcs") - cov = coverage.Coverage(branch=True) - cov.load() - cov.report(show_missing=True) - expected = textwrap.dedent(os_sep("""\ - Name Stmts Miss Branch BrPart Cover Missing - ------------------------------------------------------------- - ver1/program.py 6 2 6 3 58% 1->3, 4, 6 - ver2/program.py 6 2 6 3 58% 2, 3->5, 6 - ------------------------------------------------------------- - TOTAL 12 4 12 6 58% - """)) - assert expected == self.stdout() - - def test_map_paths_during_branch_report(self) -> None: - self.make_files(data="arcs", settings=True) - cov = coverage.Coverage(branch=True) - cov.load() - cov.report(show_missing=True) - expected = textwrap.dedent(os_sep("""\ - Name Stmts Miss Branch BrPart Cover Missing - ------------------------------------------------------------ - src/program.py 6 1 6 1 83% 6 - ------------------------------------------------------------ - TOTAL 6 1 6 1 83% - """)) - assert expected == self.stdout() - - def test_map_paths_during_annotate(self) -> None: - self.make_files(data="line", settings=True) - cov = coverage.Coverage() - cov.load() - cov.annotate() - self.assert_exists(os_sep("src/program.py,cover")) - self.assert_doesnt_exist(os_sep("ver1/program.py,cover")) - self.assert_doesnt_exist(os_sep("ver2/program.py,cover")) - - def test_map_paths_during_html_report(self) -> None: - self.make_files(data="line", settings=True) - cov = coverage.Coverage() - cov.load() - cov.html_report() - contains("htmlcov/index.html", os_sep("src/program.py")) - doesnt_contain("htmlcov/index.html", os_sep("ver1/program.py"), os_sep("ver2/program.py")) - - def test_map_paths_during_xml_report(self) -> None: - self.make_files(data="line", settings=True) - cov = coverage.Coverage() - cov.load() - cov.xml_report() - contains("coverage.xml", "src/program.py") - doesnt_contain("coverage.xml", "ver1/program.py", "ver2/program.py") - - def test_map_paths_during_json_report(self) -> None: - self.make_files(data="line", settings=True) - cov = coverage.Coverage() - cov.load() - cov.json_report() - def os_sepj(s: str) -> str: - return os_sep(s).replace("\\", r"\\") - contains("coverage.json", os_sepj("src/program.py")) - doesnt_contain("coverage.json", os_sepj("ver1/program.py"), os_sepj("ver2/program.py")) - - def test_map_paths_during_lcov_report(self) -> None: - self.make_files(data="line", settings=True) - cov = coverage.Coverage() - cov.load() - cov.lcov_report() - contains("coverage.lcov", os_sep("src/program.py")) - doesnt_contain("coverage.lcov", os_sep("ver1/program.py"), os_sep("ver2/program.py")) diff --git a/tests/test_report_common.py b/tests/test_report_common.py new file mode 100644 index 00000000..2b20ed92 --- /dev/null +++ b/tests/test_report_common.py @@ -0,0 +1,158 @@ +# 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 of behavior common to all reporting.""" + +from __future__ import annotations + +import textwrap + +import coverage +from coverage.files import abs_file + +from tests.coveragetest import CoverageTest +from tests.goldtest import contains, doesnt_contain +from tests.helpers import arcz_to_arcs, os_sep + + +class ReportMapsPathsTest(CoverageTest): + """Check that reporting implicitly maps paths.""" + + def make_files(self, data: str, settings: bool = False) -> None: + """Create the test files we need for line coverage.""" + src = """\ + if VER == 1: + print("line 2") + if VER == 2: + print("line 4") + if VER == 3: + print("line 6") + """ + self.make_file("src/program.py", src) + self.make_file("ver1/program.py", src) + self.make_file("ver2/program.py", src) + + if data == "line": + self.make_data_file( + lines={ + abs_file("ver1/program.py"): [1, 2, 3, 5], + abs_file("ver2/program.py"): [1, 3, 4, 5], + } + ) + else: + self.make_data_file( + arcs={ + abs_file("ver1/program.py"): arcz_to_arcs(".1 12 23 35 5."), + abs_file("ver2/program.py"): arcz_to_arcs(".1 13 34 45 5."), + } + ) + + if settings: + self.make_file(".coveragerc", """\ + [paths] + source = + src + ver1 + ver2 + """) + + def test_map_paths_during_line_report_without_setting(self) -> None: + self.make_files(data="line") + cov = coverage.Coverage() + cov.load() + cov.report(show_missing=True) + expected = textwrap.dedent(os_sep("""\ + Name Stmts Miss Cover Missing + ----------------------------------------------- + ver1/program.py 6 2 67% 4, 6 + ver2/program.py 6 2 67% 2, 6 + ----------------------------------------------- + TOTAL 12 4 67% + """)) + assert expected == self.stdout() + + def test_map_paths_during_line_report(self) -> None: + self.make_files(data="line", settings=True) + cov = coverage.Coverage() + cov.load() + cov.report(show_missing=True) + expected = textwrap.dedent(os_sep("""\ + Name Stmts Miss Cover Missing + ---------------------------------------------- + src/program.py 6 1 83% 6 + ---------------------------------------------- + TOTAL 6 1 83% + """)) + assert expected == self.stdout() + + def test_map_paths_during_branch_report_without_setting(self) -> None: + self.make_files(data="arcs") + cov = coverage.Coverage(branch=True) + cov.load() + cov.report(show_missing=True) + expected = textwrap.dedent(os_sep("""\ + Name Stmts Miss Branch BrPart Cover Missing + ------------------------------------------------------------- + ver1/program.py 6 2 6 3 58% 1->3, 4, 6 + ver2/program.py 6 2 6 3 58% 2, 3->5, 6 + ------------------------------------------------------------- + TOTAL 12 4 12 6 58% + """)) + assert expected == self.stdout() + + def test_map_paths_during_branch_report(self) -> None: + self.make_files(data="arcs", settings=True) + cov = coverage.Coverage(branch=True) + cov.load() + cov.report(show_missing=True) + expected = textwrap.dedent(os_sep("""\ + Name Stmts Miss Branch BrPart Cover Missing + ------------------------------------------------------------ + src/program.py 6 1 6 1 83% 6 + ------------------------------------------------------------ + TOTAL 6 1 6 1 83% + """)) + assert expected == self.stdout() + + def test_map_paths_during_annotate(self) -> None: + self.make_files(data="line", settings=True) + cov = coverage.Coverage() + cov.load() + cov.annotate() + self.assert_exists(os_sep("src/program.py,cover")) + self.assert_doesnt_exist(os_sep("ver1/program.py,cover")) + self.assert_doesnt_exist(os_sep("ver2/program.py,cover")) + + def test_map_paths_during_html_report(self) -> None: + self.make_files(data="line", settings=True) + cov = coverage.Coverage() + cov.load() + cov.html_report() + contains("htmlcov/index.html", os_sep("src/program.py")) + doesnt_contain("htmlcov/index.html", os_sep("ver1/program.py"), os_sep("ver2/program.py")) + + def test_map_paths_during_xml_report(self) -> None: + self.make_files(data="line", settings=True) + cov = coverage.Coverage() + cov.load() + cov.xml_report() + contains("coverage.xml", "src/program.py") + doesnt_contain("coverage.xml", "ver1/program.py", "ver2/program.py") + + def test_map_paths_during_json_report(self) -> None: + self.make_files(data="line", settings=True) + cov = coverage.Coverage() + cov.load() + cov.json_report() + def os_sepj(s: str) -> str: + return os_sep(s).replace("\\", r"\\") + contains("coverage.json", os_sepj("src/program.py")) + doesnt_contain("coverage.json", os_sepj("ver1/program.py"), os_sepj("ver2/program.py")) + + def test_map_paths_during_lcov_report(self) -> None: + self.make_files(data="line", settings=True) + cov = coverage.Coverage() + cov.load() + cov.lcov_report() + contains("coverage.lcov", os_sep("src/program.py")) + doesnt_contain("coverage.lcov", os_sep("ver1/program.py"), os_sep("ver2/program.py")) -- cgit v1.2.1