diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2021-10-10 13:49:18 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2021-10-10 13:49:18 -0400 |
commit | 6cc672fe011b8df3521abe3d48f52605574deacc (patch) | |
tree | 5a0e64313605751d8cc1455179f4c86d6fcd2f90 | |
parent | 982eca893a895db262ae56650bd05d9f7ab6a076 (diff) | |
download | python-coveragepy-git-6cc672fe011b8df3521abe3d48f52605574deacc.tar.gz |
test: cover the last edge cases in sqldata.py
-rw-r--r-- | coverage/sqldata.py | 8 | ||||
-rw-r--r-- | tests/test_data.py | 14 |
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)") |