diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2018-08-11 19:08:19 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2018-08-11 19:13:42 -0400 |
commit | c362e44f3ebeda9929c3537df96eecfa218d83c2 (patch) | |
tree | d344f0c89c23e67cc0a82388411a97716f03734d /coverage/sqldata.py | |
parent | 0812699cab9226a342dd9b914d3e14ceccdf7691 (diff) | |
download | python-coveragepy-git-c362e44f3ebeda9929c3537df96eecfa218d83c2.tar.gz |
Error handling in add_file_tracers
Diffstat (limited to 'coverage/sqldata.py')
-rw-r--r-- | coverage/sqldata.py | 19 |
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) |