summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-04-18 11:55:42 -0400
committerNed Batchelder <ned@nedbatchelder.com>2009-04-18 11:55:42 -0400
commit28e315142794df541822d84ebde90c592b93f15d (patch)
tree2bcba2e7cc1b4782a4b596bf9cfdb7e68399e5e6
parent3a9da152eef647f28d1c12f62b982a7f473a0270 (diff)
downloadpython-coveragepy-git-28e315142794df541822d84ebde90c592b93f15d.tar.gz
Commonalize more of the test case code.
-rw-r--r--Makefile6
-rw-r--r--test/coveragetest.py43
-rw-r--r--test/test_coverage.py17
-rw-r--r--test/test_execfile.py25
4 files changed, 46 insertions, 45 deletions
diff --git a/Makefile b/Makefile
index ac935664..2df901e4 100644
--- a/Makefile
+++ b/Makefile
@@ -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__")