summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-10-10 13:49:18 -0400
committerNed Batchelder <ned@nedbatchelder.com>2021-10-10 13:49:18 -0400
commit6cc672fe011b8df3521abe3d48f52605574deacc (patch)
tree5a0e64313605751d8cc1455179f4c86d6fcd2f90
parent982eca893a895db262ae56650bd05d9f7ab6a076 (diff)
downloadpython-coveragepy-git-6cc672fe011b8df3521abe3d48f52605574deacc.tar.gz
test: cover the last edge cases in sqldata.py
-rw-r--r--coverage/sqldata.py8
-rw-r--r--tests/test_data.py14
2 files changed, 16 insertions, 6 deletions
diff --git a/coverage/sqldata.py b/coverage/sqldata.py
index 2411fbca..a7df987f 100644
--- a/coverage/sqldata.py
+++ b/coverage/sqldata.py
@@ -1068,7 +1068,7 @@ class SqliteDb(SimpleReprMixin):
except Exception as exc:
if self.debug:
self.debug.write(f"EXCEPTION from __exit__: {exc}")
- raise
+ raise CoverageException(f"Couldn't end data file {self.filename!r}: {exc}") from exc
def execute(self, sql, parameters=()):
"""Same as :meth:`python:sqlite3.Connection.execute`."""
@@ -1095,7 +1095,7 @@ class SqliteDb(SimpleReprMixin):
"Looks like a coverage 4.x data file. " +
"Are you mixing versions of coverage?"
)
- except Exception:
+ except Exception: # pragma: cant happen
pass
if self.debug:
self.debug.write(f"EXCEPTION from execute: {msg}")
@@ -1116,7 +1116,7 @@ class SqliteDb(SimpleReprMixin):
elif len(rows) == 1:
return rows[0]
else:
- raise CoverageException(f"Sql {sql!r} shouldn't return {len(rows)} rows")
+ raise AssertionError(f"SQL {sql!r} shouldn't return {len(rows)} rows")
def executemany(self, sql, data):
"""Same as :meth:`python:sqlite3.Connection.executemany`."""
@@ -1125,7 +1125,7 @@ class SqliteDb(SimpleReprMixin):
self.debug.write(f"Executing many {sql!r} with {len(data)} rows")
try:
return self.con.executemany(sql, data)
- except Exception:
+ except Exception: # pragma: cant happen
# In some cases, an error might happen that isn't really an
# error. Try again immediately.
# https://github.com/nedbat/coveragepy/issues/1010
diff --git a/tests/test_data.py b/tests/test_data.py
index 735a12b3..a2737a9b 100644
--- a/tests/test_data.py
+++ b/tests/test_data.py
@@ -601,11 +601,21 @@ class CoverageDataInTempDirTest(CoverageTest):
def test_hard_read_error(self):
self.make_file("noperms.dat", "go away")
os.chmod("noperms.dat", 0)
- msg = r"Couldn't .* '.*[/\\]{}': \S+"
- with pytest.raises(CoverageException, match=msg.format("noperms.dat")):
+ with pytest.raises(CoverageException, match=r"Couldn't .* '.*[/\\]noperms.dat': "):
covdata = DebugCoverageData("noperms.dat")
covdata.read()
+ @pytest.mark.parametrize("klass", [CoverageData, DebugCoverageData])
+ def test_error_when_closing(self, klass):
+ msg = r"Couldn't .* '.*[/\\]flaked.dat': \S+"
+ with pytest.raises(CoverageException, match=msg):
+ covdata = klass("flaked.dat")
+ covdata.add_lines(LINES_1)
+ # I don't know how to make a real error, so let's fake one.
+ sqldb = list(covdata._dbs.values())[0]
+ sqldb.close = lambda: 1/0
+ covdata.add_lines(LINES_1)
+
def test_read_sql_errors(self):
with sqlite3.connect("wrong_schema.db") as con:
con.execute("create table coverage_schema (version integer)")