summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/data.py24
-rw-r--r--coverage/debug.py2
-rw-r--r--tests/test_data.py56
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."""