|
23 | 23 | from coverage.misc import import_local_file
|
24 | 24 |
|
25 | 25 | from tests.coveragetest import CoverageTest, TESTS_DIR, UsingModulesMixin
|
26 |
| -from tests.helpers import assert_count_equal, assert_coverage_warnings |
| 26 | +from tests.helpers import arcz_to_arcs, assert_count_equal, assert_coverage_warnings |
27 | 27 | from tests.helpers import change_dir, nice_file, os_sep
|
28 | 28 |
|
29 | 29 | BAD_SQLITE_REGEX = r"file( is encrypted or)? is not a database"
|
@@ -1456,3 +1456,103 @@ def test_combine_parallel_data_keep(self):
|
1456 | 1456 | # After combining, the .coverage file & the original combined file should still be there.
|
1457 | 1457 | self.assert_exists(".coverage")
|
1458 | 1458 | self.assert_file_count(".coverage.*", 2)
|
| 1459 | + |
| 1460 | + |
| 1461 | +class ReportMapsPathsTest(CoverageTest): |
| 1462 | + """Check that reporting implicitly maps paths.""" |
| 1463 | + |
| 1464 | + def make_files(self, data="lines", settings=False): |
| 1465 | + """Create the test files we need for line coverage.""" |
| 1466 | + src = """\ |
| 1467 | + if VER == 1: |
| 1468 | + print("line 2") |
| 1469 | + if VER == 2: |
| 1470 | + print("line 4") |
| 1471 | + if VER == 3: |
| 1472 | + print("line 6") |
| 1473 | + """ |
| 1474 | + self.make_file("src/program.py", src) |
| 1475 | + self.make_file("ver1/program.py", src) |
| 1476 | + self.make_file("ver2/program.py", src) |
| 1477 | + |
| 1478 | + if data == "line": |
| 1479 | + self.make_data_file( |
| 1480 | + lines={ |
| 1481 | + abs_file("ver1/program.py"): [1, 2, 3, 5], |
| 1482 | + abs_file("ver2/program.py"): [1, 3, 4, 5], |
| 1483 | + } |
| 1484 | + ) |
| 1485 | + else: |
| 1486 | + self.make_data_file( |
| 1487 | + arcs={ |
| 1488 | + abs_file("ver1/program.py"): arcz_to_arcs(".1 12 23 35 5."), |
| 1489 | + abs_file("ver2/program.py"): arcz_to_arcs(".1 13 34 45 5."), |
| 1490 | + } |
| 1491 | + ) |
| 1492 | + |
| 1493 | + if settings: |
| 1494 | + self.make_file(".coveragerc", """\ |
| 1495 | + [paths] |
| 1496 | + source = |
| 1497 | + src |
| 1498 | + ver1 |
| 1499 | + ver2 |
| 1500 | + """) |
| 1501 | + |
| 1502 | + def test_map_paths_during_line_report_without_setting(self): |
| 1503 | + self.make_files(data="line") |
| 1504 | + cov = coverage.Coverage() |
| 1505 | + cov.load() |
| 1506 | + cov.report(show_missing=True) |
| 1507 | + expected = textwrap.dedent(os_sep("""\ |
| 1508 | + Name Stmts Miss Cover Missing |
| 1509 | + ----------------------------------------------- |
| 1510 | + ver1/program.py 6 2 67% 4, 6 |
| 1511 | + ver2/program.py 6 2 67% 2, 6 |
| 1512 | + ----------------------------------------------- |
| 1513 | + TOTAL 12 4 67% |
| 1514 | + """)) |
| 1515 | + assert expected == self.stdout() |
| 1516 | + |
| 1517 | + def test_map_paths_during_line_report(self): |
| 1518 | + self.make_files(data="line", settings=True) |
| 1519 | + cov = coverage.Coverage() |
| 1520 | + cov.load() |
| 1521 | + cov.report(show_missing=True) |
| 1522 | + expected = textwrap.dedent(os_sep("""\ |
| 1523 | + Name Stmts Miss Cover Missing |
| 1524 | + ---------------------------------------------- |
| 1525 | + src/program.py 6 1 83% 6 |
| 1526 | + ---------------------------------------------- |
| 1527 | + TOTAL 6 1 83% |
| 1528 | + """)) |
| 1529 | + assert expected == self.stdout() |
| 1530 | + |
| 1531 | + def test_map_paths_during_branch_report_without_setting(self): |
| 1532 | + self.make_files(data="arcs") |
| 1533 | + cov = coverage.Coverage(branch=True) |
| 1534 | + cov.load() |
| 1535 | + cov.report(show_missing=True) |
| 1536 | + expected = textwrap.dedent(os_sep("""\ |
| 1537 | + Name Stmts Miss Branch BrPart Cover Missing |
| 1538 | + ------------------------------------------------------------- |
| 1539 | + ver1/program.py 6 2 6 3 58% 1->3, 4, 6 |
| 1540 | + ver2/program.py 6 2 6 3 58% 2, 3->5, 6 |
| 1541 | + ------------------------------------------------------------- |
| 1542 | + TOTAL 12 4 12 6 58% |
| 1543 | + """)) |
| 1544 | + assert expected == self.stdout() |
| 1545 | + |
| 1546 | + def test_map_paths_during_branch_report(self): |
| 1547 | + self.make_files(data="arcs", settings=True) |
| 1548 | + cov = coverage.Coverage(branch=True) |
| 1549 | + cov.load() |
| 1550 | + cov.report(show_missing=True) |
| 1551 | + expected = textwrap.dedent(os_sep("""\ |
| 1552 | + Name Stmts Miss Branch BrPart Cover Missing |
| 1553 | + ------------------------------------------------------------ |
| 1554 | + src/program.py 6 1 6 1 83% 6 |
| 1555 | + ------------------------------------------------------------ |
| 1556 | + TOTAL 6 1 6 1 83% |
| 1557 | + """)) |
| 1558 | + assert expected == self.stdout() |
0 commit comments