diff options
-rw-r--r-- | coverage/data.py | 24 | ||||
-rw-r--r-- | coverage/debug.py | 2 | ||||
-rw-r--r-- | tests/test_data.py | 56 |
3 files changed, 63 insertions, 19 deletions
diff --git a/coverage/data.py b/coverage/data.py index b0d6838e..77bfd380 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -8,7 +8,7 @@ import socket from coverage import env from coverage.backward import iitems, string_class -from coverage.debug import _TEST_NAME_FILE +from coverage.debug import _TEST_NAME_FILE, pretty_data from coverage.files import PathAliases from coverage.misc import CoverageException, file_be_gone @@ -542,7 +542,7 @@ class CoverageDataFiles(object): os.remove(f) -def debug_main(): +def debug_main(args): """Dump the raw data from data files. Run this as:: @@ -550,22 +550,12 @@ def debug_main(): $ python -m coverage.data [FILE] """ - from coverage.debug import pretty_data - import sys - - if len(sys.argv) > 1: - files = sys.argv[1:] - else: - files = [".coverage"] - - for filename in files: - data = CoverageData._read_raw_data_file(filename) + for filename in (args or [".coverage"]): print("--- {0} ------------------------------".format(filename)) - if data: - print(pretty_data(data)) - else: - print("No data collected") + data = CoverageData._read_raw_data_file(filename) + print(pretty_data(data)) if __name__ == '__main__': - debug_main() + import sys + debug_main(sys.argv[1:]) diff --git a/coverage/debug.py b/coverage/debug.py index e5bb6b0b..45d720c3 100644 --- a/coverage/debug.py +++ b/coverage/debug.py @@ -106,4 +106,6 @@ def pretty_data(data): out = json.dumps(data, indent=4, sort_keys=True) # But pairs of numbers shouldn't be split across lines... out = re.sub(r"\[\s+(-?\d+),\s+(-?\d+)\s+]", r"[\1, \2]", out) + # Trailing spaces mess with tests, get rid of them. + out = re.sub(r"(?m)\s+$", "", out) return out diff --git a/tests/test_data.py b/tests/test_data.py index ef058e51..708177f9 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -4,10 +4,11 @@ import glob import json import os import os.path +import textwrap import mock -from coverage.data import CoverageData, CoverageDataFiles +from coverage.data import CoverageData, CoverageDataFiles, debug_main from coverage.files import PathAliases, canonical_filename from coverage.misc import CoverageException @@ -358,9 +359,60 @@ class CoverageDataTestInTempDir(DataTestHelpers, CoverageTest): with self.assertRaisesRegex(CoverageException, msg.format("nonexistent.dat")): covdata.read_file("nonexistent.dat") - # and after all that, no data should be in our CoverageData. + # After all that, no data should be in our CoverageData. self.assertFalse(covdata) + def test_debug_main(self): + covdata1 = CoverageData() + covdata1.set_lines(LINES_1) + covdata1.write_file(".coverage") + debug_main([]) + + covdata2 = CoverageData() + covdata2.set_arcs(ARCS_3) + covdata2.set_plugins({"y.py": "magic_plugin"}) + covdata2.write_file("arcs.dat") + + covdata3 = CoverageData() + covdata3.write_file("empty.dat") + debug_main(["arcs.dat", "empty.dat"]) + + self.assertEqual(self.stdout(), textwrap.dedent("""\ + --- .coverage ------------------------------ + { + "lines": { + "a.py": [1, 2], + "b.py": [ + 3 + ] + } + } + --- arcs.dat ------------------------------ + { + "arcs": { + "x.py": [ + [1, 2], + [-1, 1], + [2, 3], + [3, -1] + ], + "y.py": [ + [-1, 17], + [23, -1], + [17, 23] + ] + }, + "plugins": { + "y.py": "magic_plugin" + } + } + --- empty.dat ------------------------------ + { + "lines": {} + } + """) + ) + class CoverageDataFilesTest(DataTestHelpers, CoverageTest): """Tests of CoverageDataFiles.""" |