summaryrefslogtreecommitdiff
path: root/coverage/sqldata.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-10-09 16:41:59 -0400
committerNed Batchelder <ned@nedbatchelder.com>2021-10-09 16:41:59 -0400
commit498b1484e466588a22cef520095f1fd0ed8b8ff8 (patch)
tree84979ae5f419d8632ba898d8464dc142778e9f1c /coverage/sqldata.py
parent4d55ada1bdca638b0fd12e887fb0faaa574dee8d (diff)
downloadpython-coveragepy-git-498b1484e466588a22cef520095f1fd0ed8b8ff8.tar.gz
fix: contexts_by_lineno now returns a true dict
Diffstat (limited to 'coverage/sqldata.py')
-rw-r--r--coverage/sqldata.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/coverage/sqldata.py b/coverage/sqldata.py
index 412a9eb7..108a25ef 100644
--- a/coverage/sqldata.py
+++ b/coverage/sqldata.py
@@ -942,12 +942,13 @@ class CoverageData(SimpleReprMixin):
.. versionadded:: 5.0
"""
- lineno_contexts_map = collections.defaultdict(list)
self._start_using()
with self._connect() as con:
file_id = self._file_id(filename)
if file_id is None:
- return lineno_contexts_map
+ return {}
+
+ lineno_contexts_map = collections.defaultdict(set)
if self.has_arcs():
query = (
"select arc.fromno, arc.tono, context.context " +
@@ -960,10 +961,10 @@ class CoverageData(SimpleReprMixin):
query += " and arc.context_id in (" + ids_array + ")"
data += self._query_context_ids
for fromno, tono, context in con.execute(query, data):
- if context not in lineno_contexts_map[fromno]:
- lineno_contexts_map[fromno].append(context)
- if context not in lineno_contexts_map[tono]:
- lineno_contexts_map[tono].append(context)
+ if fromno > 0:
+ lineno_contexts_map[fromno].add(context)
+ if tono > 0:
+ lineno_contexts_map[tono].add(context)
else:
query = (
"select l.numbits, c.context from line_bits l, context c " +
@@ -977,8 +978,9 @@ class CoverageData(SimpleReprMixin):
data += self._query_context_ids
for numbits, context in con.execute(query, data):
for lineno in numbits_to_nums(numbits):
- lineno_contexts_map[lineno].append(context)
- return lineno_contexts_map
+ lineno_contexts_map[lineno].add(context)
+
+ return {lineno: list(contexts) for lineno, contexts in lineno_contexts_map.items()}
@classmethod
def sys_info(cls):