diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_misc.py | 21 | ||||
-rw-r--r-- | tests/test_summary.py | 26 |
2 files changed, 39 insertions, 8 deletions
diff --git a/tests/test_misc.py b/tests/test_misc.py index 74002232..58dba6a8 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -10,6 +10,7 @@ import pytest from coverage.exceptions import CoverageException from coverage.misc import contract, dummy_decorator_with_args, file_be_gone from coverage.misc import Hasher, one_of, substitute_variables, import_third_party +from coverage.misc import human_sorted, human_sorted_items from coverage.misc import USE_CONTRACTS from tests.coveragetest import CoverageTest @@ -180,3 +181,23 @@ class ImportThirdPartyTest(CoverageTest): mod = import_third_party("xyzzy") assert mod is None assert "xyzzy" not in sys.modules + + +HUMAN_DATA = [ + ("z1 a2z a2a a3 a1", "a1 a2a a2z a3 z1"), + ("a10 a9 a100 a1", "a1 a9 a10 a100"), + ("4.0 3.10-win 3.10-mac 3.9-mac 3.9-win", "3.9-mac 3.9-win 3.10-mac 3.10-win 4.0"), +] + +@pytest.mark.parametrize("words, ordered", HUMAN_DATA) +def test_human_sorted(words, ordered): + assert " ".join(human_sorted(words.split())) == ordered + +@pytest.mark.parametrize("words, ordered", HUMAN_DATA) +def test_human_sorted_items(words, ordered): + keys = words.split() + items = [(k, 1) for k in keys] + [(k, 2) for k in keys] + okeys = ordered.split() + oitems = [(k, v) for k in okeys for v in [1, 2]] + assert human_sorted_items(items) == oitems + assert human_sorted_items(items, reverse=True) == oitems[::-1] diff --git a/tests/test_summary.py b/tests/test_summary.py index b71921c7..4dbd3c08 100644 --- a/tests/test_summary.py +++ b/tests/test_summary.py @@ -847,8 +847,8 @@ class SummaryReporterConfigurationTest(CoverageTest): """ self.make_rigged_file("file1.py", 339, 155) self.make_rigged_file("file2.py", 13, 3) - self.make_rigged_file("file3.py", 234, 228) - self.make_file("doit.py", "import file1, file2, file3") + self.make_rigged_file("file10.py", 234, 228) + self.make_file("doit.py", "import file1, file2, file10") cov = Coverage(source=["."], omit=["doit.py"]) cov.start() @@ -871,7 +871,7 @@ class SummaryReporterConfigurationTest(CoverageTest): # ------------------------------ # file1.py 339 155 54% # file2.py 13 3 77% - # file3.py 234 228 3% + # file10.py 234 228 3% # ------------------------------ # TOTAL 586 386 34% @@ -906,30 +906,40 @@ class SummaryReporterConfigurationTest(CoverageTest): msg = f"The words {words!r} don't appear in order in {text!r}" assert indexes == sorted(indexes), msg + def test_default_sort_report(self): + # Sort the text report by the default (Name) column. + report = self.get_summary_text() + self.assert_ordering(report, "file1.py", "file2.py", "file10.py") + + def test_sort_report_by_name(self): + # Sort the text report explicitly by the Name column. + report = self.get_summary_text(('report:sort', 'Name')) + self.assert_ordering(report, "file1.py", "file2.py", "file10.py") + def test_sort_report_by_stmts(self): # Sort the text report by the Stmts column. report = self.get_summary_text(('report:sort', 'Stmts')) - self.assert_ordering(report, "file2.py", "file3.py", "file1.py") + self.assert_ordering(report, "file2.py", "file10.py", "file1.py") def test_sort_report_by_missing(self): # Sort the text report by the Missing column. report = self.get_summary_text(('report:sort', 'Miss')) - self.assert_ordering(report, "file2.py", "file1.py", "file3.py") + self.assert_ordering(report, "file2.py", "file1.py", "file10.py") def test_sort_report_by_cover(self): # Sort the text report by the Cover column. report = self.get_summary_text(('report:sort', 'Cover')) - self.assert_ordering(report, "file3.py", "file1.py", "file2.py") + self.assert_ordering(report, "file10.py", "file1.py", "file2.py") def test_sort_report_by_cover_plus(self): # Sort the text report by the Cover column, including the explicit + sign. report = self.get_summary_text(('report:sort', '+Cover')) - self.assert_ordering(report, "file3.py", "file1.py", "file2.py") + self.assert_ordering(report, "file10.py", "file1.py", "file2.py") def test_sort_report_by_cover_reversed(self): # Sort the text report by the Cover column reversed. report = self.get_summary_text(('report:sort', '-Cover')) - self.assert_ordering(report, "file2.py", "file1.py", "file3.py") + self.assert_ordering(report, "file2.py", "file1.py", "file10.py") def test_sort_report_by_invalid_option(self): # Sort the text report by a nonsense column. |