summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2013-10-20 07:38:41 -0400
committerNed Batchelder <ned@nedbatchelder.com>2013-10-20 07:38:41 -0400
commit0a3a4218d1555d33f7c0e5b3db2ed561ba9e29b3 (patch)
tree352f243dbd0c8e6888835b00e46e20c7f19cceba
parent5aa8f70d4ee8b3d40d5caf69c42c67d4fd4f0118 (diff)
downloadpython-coveragepy-0a3a4218d1555d33f7c0e5b3db2ed561ba9e29b3.tar.gz
Now I can use collections.defaultdict
-rw-r--r--TODO.txt4
-rw-r--r--coverage/parser.py6
-rw-r--r--coverage/results.py5
-rw-r--r--tests/coveragetest.py9
4 files changed, 9 insertions, 15 deletions
diff --git a/TODO.txt b/TODO.txt
index d53dc68..30d5bd6 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -16,10 +16,10 @@ Key:
+ set, sorted, reversed, rpartition
+ generator expressions
+ decorators
- - collections.defaultdict
+ + collections.defaultdict
+ .startswith((,))
- "with" statements
-
+ - .format() ?
+ Remove code only run on <2.6
- Change data file to json
diff --git a/coverage/parser.py b/coverage/parser.py
index 010cd73..6332f63 100644
--- a/coverage/parser.py
+++ b/coverage/parser.py
@@ -1,6 +1,6 @@
"""Code parsing for Coverage."""
-import dis, re, sys, token, tokenize
+import collections, dis, re, sys, token, tokenize
from coverage.backward import StringIO
from coverage.backward import open_source, range # pylint: disable=W0622
@@ -242,7 +242,7 @@ class CodeParser(object):
"""
excluded_lines = self.first_lines(self.excluded)
- exit_counts = {}
+ exit_counts = collections.defaultdict(int)
for l1, l2 in self.arcs():
if l1 < 0:
# Don't ever report -1 as a line number
@@ -253,8 +253,6 @@ class CodeParser(object):
if l2 in excluded_lines:
# Arcs to excluded lines shouldn't count.
continue
- if l1 not in exit_counts:
- exit_counts[l1] = 0
exit_counts[l1] += 1
# Class definitions have one extra exit, so remove one for each:
diff --git a/coverage/results.py b/coverage/results.py
index bfd9e52..e6475af 100644
--- a/coverage/results.py
+++ b/coverage/results.py
@@ -1,5 +1,6 @@
"""Results of coverage measurement."""
+import collections
import os
from coverage.backward import iitems
@@ -158,11 +159,9 @@ class Analysis(object):
"""
missing = self.arcs_missing()
branch_lines = set(self.branch_lines())
- mba = {}
+ mba = collections.defaultdict(list)
for l1, l2 in missing:
if l1 in branch_lines:
- if l1 not in mba:
- mba[l1] = []
mba[l1].append(l2)
return mba
diff --git a/tests/coveragetest.py b/tests/coveragetest.py
index d4d82f1..f3ca53a 100644
--- a/tests/coveragetest.py
+++ b/tests/coveragetest.py
@@ -1,7 +1,7 @@
"""Base test case class for coverage testing."""
import glob, imp, os, random, shlex, shutil, sys, tempfile, textwrap
-import atexit
+import atexit, collections
import coverage
from coverage.backward import StringIO, to_bytes
@@ -506,7 +506,7 @@ class CoverageTest(TestCase):
self.test_method_made_any_files = False
# Map from class to info about how it ran.
- class_behaviors = {}
+ class_behaviors = collections.defaultdict(ClassBehavior)
@classmethod
def report_on_class_behavior(cls):
@@ -536,10 +536,7 @@ class CoverageTest(TestCase):
def class_behavior(self):
"""Get the ClassBehavior instance for this test."""
- cls = self.__class__
- if cls not in self.class_behaviors:
- self.class_behaviors[cls] = self.ClassBehavior()
- return self.class_behaviors[cls]
+ return self.class_behaviors[self.__class__]
# When the process ends, find out about bad classes.