diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-11-15 11:58:01 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-11-15 11:58:01 -0500 |
commit | d02588a33021e0f3af9c882a3af1d4f6751e8bd7 (patch) | |
tree | dc7bb8fef3b25e9a7e76b609271bde8b95c6f83e | |
parent | 7df8f31a92df298436c25a8692c6415bad6e29a5 (diff) | |
download | python-coveragepy-git-d02588a33021e0f3af9c882a3af1d4f6751e8bd7.tar.gz |
Avoid some unneeded tempdir creation in tests.
-rw-r--r-- | test/coveragetest.py | 53 | ||||
-rw-r--r-- | test/test_cmdline.py | 4 | ||||
-rw-r--r-- | test/test_codeunit.py | 1 | ||||
-rw-r--r-- | test/test_phystokens.py | 10 | ||||
-rw-r--r-- | test/test_results.py | 5 | ||||
-rw-r--r-- | test/test_testing.py | 4 |
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])) |