diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-02-08 11:48:10 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-02-08 11:48:10 -0500 |
commit | c16eb3ec0d917d8f5c6320a01ea6965665a1f607 (patch) | |
tree | a5eb267f563c8e4b73a1057959921a0a0791b040 /tests/helpers.py | |
parent | a2331114926f37823f0dc45dc44308a94c0d454e (diff) | |
download | python-coveragepy-git-c16eb3ec0d917d8f5c6320a01ea6965665a1f607.tar.gz |
Re-use CheckUniqueFilenames for test_collector.py
Diffstat (limited to 'tests/helpers.py')
-rw-r--r-- | tests/helpers.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/helpers.py b/tests/helpers.py new file mode 100644 index 00000000..db20d798 --- /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 |