summaryrefslogtreecommitdiff
path: root/tests/helpers.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-02-08 11:48:10 -0500
committerNed Batchelder <ned@nedbatchelder.com>2015-02-08 11:48:10 -0500
commit89ec8f6da41555dce7bee84b47cfa2b7f2e0213e (patch)
treed3950ec152ef0a94b0b43c4573a5c3870c412756 /tests/helpers.py
parent8b605085e10910fc3b2f413bf7b6d0853f5e3015 (diff)
downloadpython-coveragepy-89ec8f6da41555dce7bee84b47cfa2b7f2e0213e.tar.gz
Re-use CheckUniqueFilenames for test_collector.py
Diffstat (limited to 'tests/helpers.py')
-rw-r--r--tests/helpers.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/helpers.py b/tests/helpers.py
new file mode 100644
index 0000000..db20d79
--- /dev/null
+++ b/tests/helpers.py
@@ -0,0 +1,25 @@
+"""Helpers for coverage.py tests."""
+
+
+class CheckUniqueFilenames(object):
+ """Asserts the uniqueness of filenames passed to a function."""
+ def __init__(self, wrapped):
+ self.filenames = set()
+ self.wrapped = wrapped
+
+ @classmethod
+ def hook(cls, cov, method_name):
+ """Replace a method with our checking wrapper."""
+ method = getattr(cov, method_name)
+ hook = cls(method)
+ setattr(cov, method_name, hook.wrapper)
+ return hook
+
+ def wrapper(self, filename, *args, **kwargs):
+ """The replacement method. Check that we don't have dupes."""
+ assert filename not in self.filenames, (
+ "Filename %r passed to %r twice" % (filename, self.wrapped)
+ )
+ self.filenames.add(filename)
+ ret = self.wrapped(filename, *args, **kwargs)
+ return ret