diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2019-07-11 15:44:15 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2019-07-15 20:18:02 -0400 |
commit | 3abb819fb68671d9b3a167a06bdbeaa5569df0c7 (patch) | |
tree | 8f3c67c79cc4c5db5f155b8c714cf832d51c1b41 /coverage/sqldata.py | |
parent | 67c9a07c64210f66c1e3ef53b6ce1e51781193c4 (diff) | |
download | python-coveragepy-git-3abb819fb68671d9b3a167a06bdbeaa5569df0c7.tar.gz |
:memory: support
Diffstat (limited to 'coverage/sqldata.py')
-rw-r--r-- | coverage/sqldata.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/coverage/sqldata.py b/coverage/sqldata.py index a9ba0d41..67bcf77a 100644 --- a/coverage/sqldata.py +++ b/coverage/sqldata.py @@ -147,7 +147,8 @@ class CoverageData(SimpleReprMixin): """ - def __init__(self, basename=None, suffix=None, warn=None, debug=None): + def __init__(self, basename=None, suffix=None, no_disk=False, warn=None, debug=None): + self._no_disk = no_disk self._basename = os.path.abspath(basename or ".coverage") self._suffix = suffix self._warn = warn @@ -171,10 +172,13 @@ class CoverageData(SimpleReprMixin): self._query_context_ids = None def _choose_filename(self): - self._filename = self._basename - suffix = filename_suffix(self._suffix) - if suffix: - self._filename += "." + suffix + if self._no_disk: + self._filename = ":memory:" + else: + self._filename = self._basename + suffix = filename_suffix(self._suffix) + if suffix: + self._filename += "." + suffix def _reset(self): if self._dbs: @@ -756,8 +760,11 @@ class SqliteDb(SimpleReprMixin): self.debug = debug if debug.should('sql') else None self.filename = filename self.nest = 0 + self.con = None def connect(self): + if self.con is not None: + return # SQLite on Windows on py2 won't open a file if the filename argument # has non-ascii characters in it. Opening a relative file name avoids # a problem if the current directory has non-ascii. @@ -779,7 +786,9 @@ class SqliteDb(SimpleReprMixin): self.execute("pragma synchronous=off").close() def close(self): - self.con.close() + if self.con is not None and self.filename != ":memory:": + self.con.close() + self.con = None def __enter__(self): if self.nest == 0: |