summaryrefslogtreecommitdiff
path: root/coverage/test_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'coverage/test_helpers.py')
-rw-r--r--coverage/test_helpers.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/coverage/test_helpers.py b/coverage/test_helpers.py
index 55a67a0c..3ddb48ba 100644
--- a/coverage/test_helpers.py
+++ b/coverage/test_helpers.py
@@ -1,3 +1,6 @@
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
+
"""Mixin classes to help make good tests."""
import atexit
@@ -147,8 +150,15 @@ class TempDirMixin(SysPathAwareMixin, ModuleAwareMixin, TestCase):
"""
# Our own setting: most of these tests run in their own temp directory.
+ # Set this to False in your subclass if you don't want a temp directory
+ # created.
run_in_temp_dir = True
+ # Set this if you aren't creating any files with make_file, but still want
+ # the temp directory. This will stop the test behavior checker from
+ # complaining.
+ no_files_in_temp_dir = False
+
def setUp(self):
super(TempDirMixin, self).setUp()
@@ -165,8 +175,8 @@ class TempDirMixin(SysPathAwareMixin, ModuleAwareMixin, TestCase):
class_behavior = self.class_behavior()
class_behavior.tests += 1
- class_behavior.test_method_made_any_files = False
class_behavior.temp_dir = self.run_in_temp_dir
+ class_behavior.no_files_ok = self.no_files_in_temp_dir
self.addCleanup(self.check_behavior)
@@ -239,6 +249,7 @@ class TempDirMixin(SysPathAwareMixin, ModuleAwareMixin, TestCase):
self.tests = 0
self.skipped = 0
self.temp_dir = True
+ self.no_files_ok = False
self.tests_making_files = 0
self.test_method_made_any_files = False
@@ -249,14 +260,14 @@ class TempDirMixin(SysPathAwareMixin, ModuleAwareMixin, TestCase):
def report_on_class_behavior(cls):
"""Called at process exit to report on class behavior."""
for test_class, behavior in cls.class_behaviors.items():
+ bad = ""
if behavior.tests <= behavior.skipped:
bad = ""
elif behavior.temp_dir and behavior.tests_making_files == 0:
- bad = "Inefficient"
+ if not behavior.no_files_ok:
+ bad = "Inefficient"
elif not behavior.temp_dir and behavior.tests_making_files > 0:
bad = "Unsafe"
- else:
- bad = ""
if bad:
if behavior.temp_dir: