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
commit998879621fe7195580ddcf5262170b80843d8cc8 (patch)
tree38307cc74002dc6203785822b7bf065b414e2d85 /test/coverage_coverage.py
parentcf74b70ae1f8e0018c604153c8637106f552b662 (diff)
downloadpython-coveragepy-git-998879621fe7195580ddcf5262170b80843d8cc8.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 00000000..f2a47f78
--- /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)