summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-10-12 08:46:25 -0400
committerNed Batchelder <ned@nedbatchelder.com>2021-10-12 08:46:25 -0400
commit0eaeb99f2de1330a562752d30d02d1898f681cf8 (patch)
treed51b41a302dddafd3092c0fc367b1676bab56a6d /tests
parent5b6b6ecb87f4aa1145977b1a4c8359b202da0d7a (diff)
downloadpython-coveragepy-git-0eaeb99f2de1330a562752d30d02d1898f681cf8.tar.gz
fix: use human sorting on human-readable things
Diffstat (limited to 'tests')
-rw-r--r--tests/test_misc.py21
-rw-r--r--tests/test_summary.py26
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.