diff options
-rw-r--r-- | coverage/backward.py | 5 | ||||
-rw-r--r-- | coverage/debug.py | 9 | ||||
-rw-r--r-- | coverage/sqldata.py | 8 | ||||
-rw-r--r-- | tests/test_debug.py | 9 |
4 files changed, 27 insertions, 4 deletions
diff --git a/coverage/backward.py b/coverage/backward.py index 34ab2f1a..58759545 100644 --- a/coverage/backward.py +++ b/coverage/backward.py @@ -64,6 +64,11 @@ except ImportError: # in Python versions earlier than 3.3. from pipes import quote as shlex_quote +try: + import reprlib +except ImportError: + import repr as reprlib + # A function to iterate listlessly over a dict's items, and one to get the # items as a list. try: diff --git a/coverage/debug.py b/coverage/debug.py index 9dded1d9..de5d9319 100644 --- a/coverage/debug.py +++ b/coverage/debug.py @@ -15,7 +15,7 @@ try: except ImportError: import thread as _thread -from coverage.backward import StringIO +from coverage.backward import reprlib, StringIO from coverage.misc import isolate_module os = isolate_module(os) @@ -163,6 +163,13 @@ def dump_stack_frames(limit=None, out=None, skip=0): out.write("\n") +def clipped_repr(text, numchars=50): + """`repr(text)`, but limited to `numchars`.""" + r = reprlib.Repr() + r.maxstring = numchars + return r.repr(text) + + def short_id(id64): """Given a 64-bit id, make a shorter 16-bit one.""" id16 = 0 diff --git a/coverage/sqldata.py b/coverage/sqldata.py index 400b7f04..3142ee3f 100644 --- a/coverage/sqldata.py +++ b/coverage/sqldata.py @@ -19,7 +19,7 @@ import sys import zlib from coverage.backward import get_thread_id, iitems, to_bytes, to_string -from coverage.debug import NoDebugging, SimpleReprMixin +from coverage.debug import NoDebugging, SimpleReprMixin, clipped_repr from coverage.files import PathAliases from coverage.misc import CoverageException, file_be_gone, filename_suffix, isolate_module from coverage.misc import contract @@ -42,7 +42,7 @@ SCHEMA_VERSION = 7 # 6: Key-value in meta. # 7: line_map -> line_bits -SCHEMA = """ +SCHEMA = """\ CREATE TABLE coverage_schema ( -- One row, to record the version of the schema in this db. version integer @@ -887,7 +887,9 @@ class SqliteDb(SimpleReprMixin): def executescript(self, script): if self.debug: - self.debug.write("Executing script with {} chars".format(len(script))) + self.debug.write("Executing script with {} chars: {}".format( + len(script), clipped_repr(script, 100), + )) self.con.executescript(script) def dump(self): diff --git a/tests/test_debug.py b/tests/test_debug.py index e54a54e7..e3b929f6 100644 --- a/tests/test_debug.py +++ b/tests/test_debug.py @@ -10,6 +10,7 @@ import pytest import coverage from coverage.backward import StringIO from coverage.debug import filter_text, info_formatter, info_header, short_id, short_stack +from coverage.debug import clipped_repr from coverage.env import C_TRACER from tests.coveragetest import CoverageTest @@ -61,6 +62,14 @@ def test_short_id(id64, id16): assert short_id(id64) == id16 +@pytest.mark.parametrize("text, numchars, result", [ + ("hello", 10, "'hello'"), + ("0123456789abcdefghijklmnopqrstuvwxyz", 15, "'01234...vwxyz'"), +]) +def test_clipped_repr(text, numchars, result): + assert clipped_repr(text, numchars) == result + + @pytest.mark.parametrize("text, filters, result", [ ("hello", [], "hello"), ("hello\n", [], "hello\n"), |