summaryrefslogtreecommitdiff
path: root/coverage/sqldata.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2018-08-11 19:08:19 -0400
committerNed Batchelder <ned@nedbatchelder.com>2018-08-11 19:13:42 -0400
commitc362e44f3ebeda9929c3537df96eecfa218d83c2 (patch)
treed344f0c89c23e67cc0a82388411a97716f03734d /coverage/sqldata.py
parent0812699cab9226a342dd9b914d3e14ceccdf7691 (diff)
downloadpython-coveragepy-git-c362e44f3ebeda9929c3537df96eecfa218d83c2.tar.gz
Error handling in add_file_tracers
Diffstat (limited to 'coverage/sqldata.py')
-rw-r--r--coverage/sqldata.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/coverage/sqldata.py b/coverage/sqldata.py
index ce78c63b..dbeced84 100644
--- a/coverage/sqldata.py
+++ b/coverage/sqldata.py
@@ -3,6 +3,10 @@
"""Sqlite coverage data."""
+# TODO: check the schema
+# TODO: factor out dataop debugging to a wrapper class?
+# TODO: make sure all dataop debugging is in place somehow
+
import glob
import os
import sqlite3
@@ -210,6 +214,21 @@ class CoverageSqliteData(SimpleRepr):
self._start_writing()
with self._connect() as con:
for filename, plugin_name in iitems(file_tracers):
+ file_id = self._file_id(filename)
+ if file_id is None:
+ raise CoverageException(
+ "Can't add file tracer data for unmeasured file '%s'" % (filename,)
+ )
+
+ cur = con.execute("select tracer from file where id = ?", (file_id,))
+ [existing_plugin] = cur.fetchone()
+ if existing_plugin is not None and existing_plugin != plugin_name:
+ raise CoverageException(
+ "Conflicting file tracer name for '%s': %r vs %r" % (
+ filename, existing_plugin, plugin_name,
+ )
+ )
+
con.execute(
"update file set tracer = ? where path = ?",
(plugin_name, filename)