summaryrefslogtreecommitdiff
path: root/test/coverage_coverage.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-05-03 23:31:40 -0400
committerNed Batchelder <ned@nedbatchelder.com>2009-05-03 23:31:40 -0400
commitc1ffa6ed23800f528af8db045f710bf8c1135c22 (patch)
tree0e12ceefaabded3b2f49c15298accb50cf834c00 /test/coverage_coverage.py
parent2952df0f7b0e36a36d837ccd5ef71db735681c3c (diff)
downloadpython-coveragepy-c1ffa6ed23800f528af8db045f710bf8c1135c22.tar.gz
Keeping a stack of Collectors makes it possible for Coverage to measure itself (mostly).
Diffstat (limited to 'test/coverage_coverage.py')
-rw-r--r--test/coverage_coverage.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/coverage_coverage.py b/test/coverage_coverage.py
new file mode 100644
index 0000000..f2a47f7
--- /dev/null
+++ b/test/coverage_coverage.py
@@ -0,0 +1,34 @@
+# Coverage-test Coverage itself.
+
+import coverage
+import os, sys
+
+cov = coverage.coverage()
+cov.erase()
+cov.start()
+
+# Re-import coverage to get it coverage tested! I don't understand all the
+# mechanics here, but if I don't carry over the imported modules (in covmods),
+# then things go haywire (os == None eventually).
+covmods = {}
+covdir = os.path.split(coverage.__file__)
+for name, mod in sys.modules.items():
+ if name.startswith('coverage'):
+ if hasattr(mod, '__file__') and mod.__file__.startswith(covdir):
+ covmods[name] = mod
+ del sys.modules[name]
+import coverage
+sys.modules.update(covmods)
+
+# Run nosetests, with the arguments from our command line.
+import nose
+nose.run(sys.argv[1:])
+
+cov.stop()
+cov.save() # TODO: This is needed to get group_collected_data called.
+
+cov.exclude("#pragma: no cover")
+cov.exclude("def __repr__")
+cov.exclude("if __name__ == .__main__.:")
+
+cov.html_report(directory='htmlcov', ignore_errors=True)