summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-11-15 11:58:01 -0500
committerNed Batchelder <ned@nedbatchelder.com>2009-11-15 11:58:01 -0500
commitd02588a33021e0f3af9c882a3af1d4f6751e8bd7 (patch)
treedc7bb8fef3b25e9a7e76b609271bde8b95c6f83e
parent7df8f31a92df298436c25a8692c6415bad6e29a5 (diff)
downloadpython-coveragepy-git-d02588a33021e0f3af9c882a3af1d4f6751e8bd7.tar.gz
Avoid some unneeded tempdir creation in tests.
-rw-r--r--test/coveragetest.py53
-rw-r--r--test/test_cmdline.py4
-rw-r--r--test/test_codeunit.py1
-rw-r--r--test/test_phystokens.py10
-rw-r--r--test/test_results.py5
-rw-r--r--test/test_testing.py4
6 files changed, 52 insertions, 25 deletions
diff --git a/test/coveragetest.py b/test/coveragetest.py
index 32da6e66..972b8042 100644
--- a/test/coveragetest.py
+++ b/test/coveragetest.py
@@ -23,24 +23,29 @@ class Tee(object):
class CoverageTest(unittest.TestCase):
"""A base class for Coverage test cases."""
- def setUp(self):
- # Create a temporary directory.
- self.noise = str(random.random())[2:]
- self.temp_root = os.path.join(tempfile.gettempdir(), 'test_coverage')
- self.temp_dir = os.path.join(self.temp_root, self.noise)
- os.makedirs(self.temp_dir)
- self.old_dir = os.getcwd()
- os.chdir(self.temp_dir)
-
- # Preserve changes to PYTHONPATH.
- self.old_pypath = os.environ.get('PYTHONPATH', '')
+ def __init__(self, *args, **kwargs):
+ super(CoverageTest, self).__init__(*args, **kwargs)
+ self.run_in_temp_dir = True
- # Modules should be importable from this temp directory.
- self.old_syspath = sys.path[:]
- sys.path.insert(0, '')
-
- # Keep a counter to make every call to check_coverage unique.
- self.n = 0
+ def setUp(self):
+ if self.run_in_temp_dir:
+ # Create a temporary directory.
+ self.noise = str(random.random())[2:]
+ self.temp_root = os.path.join(tempfile.gettempdir(), 'test_coverage')
+ self.temp_dir = os.path.join(self.temp_root, self.noise)
+ os.makedirs(self.temp_dir)
+ self.old_dir = os.getcwd()
+ os.chdir(self.temp_dir)
+
+ # Preserve changes to PYTHONPATH.
+ self.old_pypath = os.environ.get('PYTHONPATH', '')
+
+ # Modules should be importable from this temp directory.
+ self.old_syspath = sys.path[:]
+ sys.path.insert(0, '')
+
+ # Keep a counter to make every call to check_coverage unique.
+ self.n = 0
# Use a Tee to capture stdout.
self.old_stdout = sys.stdout
@@ -48,13 +53,14 @@ class CoverageTest(unittest.TestCase):
sys.stdout = Tee(sys.stdout, self.captured_stdout)
def tearDown(self):
- # Restore the original sys.path and PYTHONPATH
- sys.path = self.old_syspath
- os.environ['PYTHONPATH'] = self.old_pypath
+ if self.run_in_temp_dir:
+ # Restore the original sys.path and PYTHONPATH
+ sys.path = self.old_syspath
+ os.environ['PYTHONPATH'] = self.old_pypath
- # Get rid of the temporary directory.
- os.chdir(self.old_dir)
- shutil.rmtree(self.temp_root)
+ # Get rid of the temporary directory.
+ os.chdir(self.old_dir)
+ shutil.rmtree(self.temp_root)
# Restore stdout.
sys.stdout = self.old_stdout
@@ -69,6 +75,7 @@ class CoverageTest(unittest.TestCase):
`filename` is the file name, and `text` is the content.
"""
+ assert self.run_in_temp_dir
text = textwrap.dedent(text)
# Create the file.
diff --git a/test/test_cmdline.py b/test/test_cmdline.py
index 26bb295b..7f10dfac 100644
--- a/test/test_cmdline.py
+++ b/test/test_cmdline.py
@@ -13,6 +13,10 @@ OK, ERR = 0, 1
class CmdLineTest(CoverageTest):
"""Tests of execution paths through the command line interpreter."""
+ def setUp(self):
+ self.run_in_temp_dir = False
+ super(CmdLineTest, self).setUp()
+
INIT_LOAD = """\
.coverage(cover_pylib=None, data_suffix=False, timid=None, branch=None)
.load()\n"""
diff --git a/test/test_codeunit.py b/test/test_codeunit.py
index 0c2fc98a..bd8f5224 100644
--- a/test/test_codeunit.py
+++ b/test/test_codeunit.py
@@ -15,6 +15,7 @@ class CodeUnitTest(CoverageTest):
"""Tests for coverage.codeunit"""
def setUp(self):
+ self.run_in_temp_dir = False
super(CodeUnitTest, self).setUp()
# Parent class saves and restores sys.path, we can just modify it.
testmods = self.nice_file(os.path.dirname(__file__), 'modules')
diff --git a/test/test_phystokens.py b/test/test_phystokens.py
index 03f2a929..64316034 100644
--- a/test/test_phystokens.py
+++ b/test/test_phystokens.py
@@ -19,17 +19,23 @@ HERE = os.path.split(__file__)[0]
class PhysTokensTest(CoverageTest):
"""Tests for Coverage.py's improver tokenizer."""
+ def setUp(self):
+ self.run_in_temp_dir = False
+ super(PhysTokensTest, self).setUp()
+
def check_tokenization(self, source):
"""Tokenize `source`, then put it back together, should be the same."""
tokenized = ""
for line in source_token_lines(source):
text = "".join([t for _,t in line])
tokenized += text + "\n"
+ # source_token_lines doesn't preserve trailing spaces, so trim all that
+ # before comparing.
source = re.sub("(?m)[ \t]+$", "", source)
tokenized = re.sub("(?m)[ \t]+$", "", tokenized)
#if source != tokenized:
- # open(r"c:\foo\0.py", "w").write(source)
- # open(r"c:\foo\1.py", "w").write(tokenized)
+ # open("0.py", "w").write(source)
+ # open("1.py", "w").write(tokenized)
self.assertEqual(source, tokenized)
def check_file_tokenization(self, fname):
diff --git a/test/test_results.py b/test/test_results.py
index 9ca5a825..ebb66e7a 100644
--- a/test/test_results.py
+++ b/test/test_results.py
@@ -10,6 +10,11 @@ from coveragetest import CoverageTest
class NumbersTest(CoverageTest):
"""Tests for Coverage.py's numeric measurement summaries."""
+
+ def setUp(self):
+ self.run_in_temp_dir = False
+ super(NumbersTest, self).setUp()
+
def test_basic(self):
n1 = Numbers(n_files=1, n_statements=200, n_missing=20)
self.assertEqual(n1.n_statements, 200)
diff --git a/test/test_testing.py b/test/test_testing.py
index cc3a2df0..5e317633 100644
--- a/test/test_testing.py
+++ b/test/test_testing.py
@@ -9,6 +9,10 @@ from coverage.backward import set # pylint: disable-msg=W0622
class TestingTest(CoverageTest):
"""Tests of helper methods on CoverageTest."""
+ def setUp(self):
+ self.run_in_temp_dir = False
+ super(TestingTest, self).setUp()
+
def test_assert_equal_sets(self):
self.assert_equal_sets(set(), set())
self.assert_equal_sets(set([1,2,3]), set([3,1,2]))