summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/sqldata.py5
-rw-r--r--tests/test_api.py4
-rw-r--r--tests/test_data.py10
-rw-r--r--tests/test_debug.py13
-rw-r--r--tests/test_process.py13
5 files changed, 37 insertions, 8 deletions
diff --git a/coverage/sqldata.py b/coverage/sqldata.py
index c79ad175..3abc3af3 100644
--- a/coverage/sqldata.py
+++ b/coverage/sqldata.py
@@ -4,11 +4,14 @@
"""Sqlite coverage data."""
# TODO: get rid of skip_unless_data_storage_is_json
+# TODO: get rid of "JSON message" and "SQL message" in the tests
# TODO: check the schema
+# TODO: get rid of the application_id?
# TODO: factor out dataop debugging to a wrapper class?
# TODO: make sure all dataop debugging is in place somehow
# TODO: should writes be batched?
# TODO: settle the os.fork question
+# TODO: run_info
import glob
import os
@@ -323,7 +326,7 @@ class CoverageSqliteData(SimpleRepr):
self._have_read = True
def has_arcs(self):
- return self._has_arcs
+ return bool(self._has_arcs)
def measured_files(self):
"""A list of all files that had been measured."""
diff --git a/tests/test_api.py b/tests/test_api.py
index 3e7e2f06..854f9cc2 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -371,8 +371,12 @@ class ApiTest(CoverageTest):
self.make_bad_data_file()
cov = coverage.Coverage()
warning_regex = (
+ r"(" # JSON message:
r"Couldn't read data from '.*\.coverage\.foo': "
r"CoverageException: Doesn't seem to be a coverage\.py data file"
+ r"|" # SQL message:
+ r"Couldn't use data file '.*\.coverage\.foo': file is encrypted or is not a database"
+ r")"
)
with self.assert_warnings(cov, [warning_regex]):
cov.combine()
diff --git a/tests/test_data.py b/tests/test_data.py
index 876357eb..317e04da 100644
--- a/tests/test_data.py
+++ b/tests/test_data.py
@@ -559,8 +559,14 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest):
self.assertRegex(
debug.get_output(),
+ r"(" # JSON output:
r"^Writing data to '.*\.coverage'\n"
r"Reading data from '.*\.coverage'\n$"
+ r"|" # SQL output:
+ r"Erasing data file '.*\.coverage'\n"
+ r"Creating data file '.*\.coverage'\n"
+ r"Opening data file '.*\.coverage'\n$"
+ r")"
)
def test_debug_output_without_debug_option(self):
@@ -741,14 +747,14 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest):
self.assertEqual(covdata3.file_tracer(template_html), 'html.plugin')
def test_combining_from_different_directories(self):
+ os.makedirs('cov1')
covdata1 = CoverageData('cov1/.coverage.1')
covdata1.add_lines(LINES_1)
- os.makedirs('cov1')
covdata1.write()
+ os.makedirs('cov2')
covdata2 = CoverageData('cov2/.coverage.2')
covdata2.add_lines(LINES_2)
- os.makedirs('cov2')
covdata2.write()
# This data won't be included.
diff --git a/tests/test_debug.py b/tests/test_debug.py
index c46e3dae..c47dd343 100644
--- a/tests/test_debug.py
+++ b/tests/test_debug.py
@@ -128,8 +128,8 @@ class DebugTraceTest(CoverageTest):
def test_debug_callers(self):
out_lines = self.f1_debug_output(["pid", "dataop", "dataio", "callers"])
print(out_lines)
- # For every real message, there should be a stack
- # trace with a line like "f1_debug_output : /Users/ned/coverage/tests/test_debug.py @71"
+ # For every real message, there should be a stack trace with a line like
+ # "f1_debug_output : /Users/ned/coverage/tests/test_debug.py @71"
real_messages = re_lines(out_lines, r" @\d+", match=False).splitlines()
frame_pattern = r"\s+f1_debug_output : .*tests[/\\]test_debug.py @\d+$"
frames = re_lines(out_lines, frame_pattern).splitlines()
@@ -137,9 +137,14 @@ class DebugTraceTest(CoverageTest):
# The last message should be "Writing data", and the last frame should
# be _write_file in data.py.
- self.assertRegex(real_messages[-1], r"^\s*\d+\.\w{4}: Writing data")
last_line = out_lines.splitlines()[-1]
- self.assertRegex(last_line, r"\s+_write_file : .*coverage[/\\]data.py @\d+$")
+ from coverage.data import STORAGE
+ if STORAGE == "json":
+ self.assertRegex(real_messages[-1], r"^\s*\d+\.\w{4}: Writing data")
+ self.assertRegex(last_line, r"\s+_write_file : .*coverage[/\\]data.py @\d+$")
+ else:
+ self.assertRegex(real_messages[-1], r"^\s*\d+\.\w{4}: Creating data file")
+ self.assertRegex(last_line, r"\s+_create_db : .*coverage[/\\]sqldata.py @\d+$")
def test_debug_config(self):
out_lines = self.f1_debug_output(["config"])
diff --git a/tests/test_process.py b/tests/test_process.py
index 7c705739..49919b0f 100644
--- a/tests/test_process.py
+++ b/tests/test_process.py
@@ -127,8 +127,13 @@ class ProcessTest(CoverageTest):
self.assert_exists(".coverage")
self.assert_exists(".coverage.bad")
warning_regex = (
+ r"(" # JSON message:
r"Coverage.py warning: Couldn't read data from '.*\.coverage\.bad': "
r"CoverageException: Doesn't seem to be a coverage\.py data file"
+ r"|" # SQL message:
+ r"Coverage.py warning: Couldn't use data file '.*\.coverage\.bad': "
+ r"file is encrypted or is not a database"
+ r")"
)
self.assertRegex(out, warning_regex)
@@ -160,8 +165,14 @@ class ProcessTest(CoverageTest):
for n in "12":
self.assert_exists(".coverage.bad{0}".format(n))
warning_regex = (
+ r"(" # JSON message:
r"Coverage.py warning: Couldn't read data from '.*\.coverage\.bad{0}': "
- r"CoverageException: Doesn't seem to be a coverage\.py data file".format(n)
+ r"CoverageException: Doesn't seem to be a coverage\.py data file"
+ r"|" # SQL message:
+ r"Coverage.py warning: Couldn't use data file '.*\.coverage.bad{0}': "
+ r"file is encrypted or is not a database"
+ r")"
+ .format(n)
)
self.assertRegex(out, warning_regex)
self.assertRegex(out, r"No usable data files")