diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-04-18 11:55:42 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-04-18 11:55:42 -0400 |
commit | 28e315142794df541822d84ebde90c592b93f15d (patch) | |
tree | 2bcba2e7cc1b4782a4b596bf9cfdb7e68399e5e6 | |
parent | 3a9da152eef647f28d1c12f62b982a7f473a0270 (diff) | |
download | python-coveragepy-git-28e315142794df541822d84ebde90c592b93f15d.tar.gz |
Commonalize more of the test case code.
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | test/coveragetest.py | 43 | ||||
-rw-r--r-- | test/test_coverage.py | 17 | ||||
-rw-r--r-- | test/test_execfile.py | 25 |
4 files changed, 46 insertions, 45 deletions
@@ -20,11 +20,11 @@ clean: -rm -f $(TEST_ZIP) -rm -f setuptools-*.egg +LINTABLE_TESTS = test/test_data.py test/test_execfile.py test/test_farm.py test/coveragetest.py + lint: clean -python -x /Python25/Scripts/pylint.bat --rcfile=.pylintrc coverage - -python -x /Python25/Scripts/pylint.bat --rcfile=.pylintrc test/test_execfile.py - -python -x /Python25/Scripts/pylint.bat --rcfile=.pylintrc test/test_farm.py - -python -x /Python25/Scripts/pylint.bat --rcfile=.pylintrc test/coveragetest.py + -python -x /Python25/Scripts/pylint.bat --rcfile=.pylintrc $(LINTABLE_TESTS) python /Python25/Lib/tabnanny.py coverage python checkeol.py diff --git a/test/coveragetest.py b/test/coveragetest.py index 9667aef0..90ef2f53 100644 --- a/test/coveragetest.py +++ b/test/coveragetest.py @@ -6,28 +6,53 @@ from cStringIO import StringIO import coverage +class Tee(object): + """A file-like that writes to all the file-likes it was constructed with.""" + + def __init__(self, *files): + self.files = files + + def write(self, data): + for f in self.files: + f.write(data) + + class CoverageTest(unittest.TestCase): def setUp(self): # Create a temporary directory. self.noise = str(random.random())[2:] - self.temproot = os.path.join(tempfile.gettempdir(), 'test_coverage') - self.tempdir = os.path.join(self.temproot, self.noise) - os.makedirs(self.tempdir) - self.olddir = os.getcwd() - os.chdir(self.tempdir) + 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) # Modules should be importable from this temp directory. - self.oldsyspath = sys.path[:] + self.old_syspath = sys.path[:] sys.path.insert(0, '') # Keep a counter to make every call to checkCoverage unique. self.n = 0 + + # Use a Tee to capture stdout. + self.old_stdout = sys.stdout + self.captured_stdout = StringIO() + sys.stdout = Tee(sys.stdout, self.captured_stdout) def tearDown(self): - sys.path = self.oldsyspath + # Restore the original sys.path + sys.path = self.old_syspath + # Get rid of the temporary directory. - os.chdir(self.olddir) - shutil.rmtree(self.temproot) + os.chdir(self.old_dir) + shutil.rmtree(self.temp_root) + + # Restore stdout. + sys.stdout = self.old_stdout + + def stdout(self): + """Return the data written to stdout during the test.""" + return self.captured_stdout.getvalue() def makeFile(self, modname, text): """ Create a temp file with modname as the module name, and text as the diff --git a/test/test_coverage.py b/test/test_coverage.py index ffd90cbf..07444b54 100644 --- a/test/test_coverage.py +++ b/test/test_coverage.py @@ -1559,20 +1559,7 @@ class ModuleTest(CoverageTest): class ApiTest(CoverageTest): - def setUp(self): - super(ApiTest, self).setUp() - # Capture stdout, so we can tell what went there. - self.oldstdout = sys.stdout - self.capturedstdout = StringIO() - sys.stdout = self.capturedstdout - - def tearDown(self): - sys.stdout = self.oldstdout - super(ApiTest, self).tearDown() - def getStdout(self): - return self.capturedstdout.getvalue() - def testSimple(self): coverage.erase() @@ -1616,7 +1603,7 @@ class ApiTest(CoverageTest): def testReport(self): self.doReportWork("mycode2") coverage.report(["mycode2.py"]) - self.assertEqual(self.getStdout(), dedent("""\ + self.assertEqual(self.stdout(), dedent("""\ Name Stmts Exec Cover Missing --------------------------------------- mycode2 7 4 57% 4-6 @@ -1626,7 +1613,7 @@ class ApiTest(CoverageTest): self.doReportWork("mycode3") fout = StringIO() coverage.report(["mycode3.py"], file=fout) - self.assertEqual(self.getStdout(), "") + self.assertEqual(self.stdout(), "") self.assertEqual(fout.getvalue(), dedent("""\ Name Stmts Exec Cover Missing --------------------------------------- diff --git a/test/test_execfile.py b/test/test_execfile.py index b99e7480..85000495 100644 --- a/test/test_execfile.py +++ b/test/test_execfile.py @@ -1,29 +1,18 @@ +"""Tests for coverage.execfile""" + +import os + from coverage.execfile import run_python_file -import cStringIO, os, sys, unittest +from coveragetest import CoverageTest here = os.path.dirname(__file__) -class Tee(object): - def __init__(self, *files): - self.files = files - - def write(self, data): - for f in self.files: - f.write(data) - -class RunTest(unittest.TestCase): - def setUp(self): - self.oldstdout = sys.stdout - self.stdout = cStringIO.StringIO() - sys.stdout = Tee(sys.stdout, self.stdout) - - def tearDown(self): - self.stdout = self.oldstdout +class RunTest(CoverageTest): def test_run_python_file(self): tryfile = os.path.join(here, "try_execfile.py") run_python_file(tryfile, [tryfile, "arg1", "arg2"]) - mod_globs = eval(self.stdout.getvalue()) + mod_globs = eval(self.stdout()) # The file should think it is __main__ self.assertEqual(mod_globs['__name__'], "__main__") |