summaryrefslogtreecommitdiff
path: root/test/test_api.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_api.py')
-rw-r--r--test/test_api.py192
1 files changed, 143 insertions, 49 deletions
diff --git a/test/test_api.py b/test/test_api.py
index 1a1f5412..aaae89cb 100644
--- a/test/test_api.py
+++ b/test/test_api.py
@@ -8,6 +8,9 @@ from coverage.backward import StringIO
sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k
from coveragetest import CoverageTest
+# This file uses the singleton module interface. Prevent it from writing
+# .coverage files at exit.
+coverage.use_cache(0)
class ApiTest(CoverageTest):
"""Api-oriented tests for Coverage."""
@@ -22,17 +25,17 @@ class ApiTest(CoverageTest):
c = 4
d = 5
""")
-
+
# Import the python file, executing it.
coverage.start()
- self.import_module("mycode")
- coverage.stop()
-
+ self.import_module("mycode") # pragma: recursive coverage
+ coverage.stop() # pragma: recursive coverage
+
_, statements, missing, missingtext = coverage.analysis("mycode.py")
self.assertEqual(statements, [1,2,3,4,5])
self.assertEqual(missing, [4])
self.assertEqual(missingtext, "4")
-
+
def doReportWork(self, modname):
"""Create a module named `modname`, then measure it."""
coverage.erase()
@@ -46,21 +49,21 @@ class ApiTest(CoverageTest):
e = 6
f = 7
""")
-
+
# Import the python file, executing it.
coverage.start()
- self.import_module(modname)
- coverage.stop()
-
+ self.import_module(modname) # pragma: recursive coverage
+ coverage.stop() # pragma: recursive coverage
+
def testReport(self):
self.doReportWork("mycode2")
coverage.report(["mycode2.py"])
self.assertEqual(self.stdout(), textwrap.dedent("""\
- Name Stmts Exec Cover Missing
+ Name Stmts Miss Cover Missing
---------------------------------------
- mycode2 7 4 57% 4-6
+ mycode2 7 3 57% 4-6
"""))
-
+
def testReportFile(self):
# The file= argument of coverage.report makes the report go there.
self.doReportWork("mycode3")
@@ -68,9 +71,9 @@ class ApiTest(CoverageTest):
coverage.report(["mycode3.py"], file=fout)
self.assertEqual(self.stdout(), "")
self.assertEqual(fout.getvalue(), textwrap.dedent("""\
- Name Stmts Exec Cover Missing
+ Name Stmts Miss Cover Missing
---------------------------------------
- mycode3 7 4 57% 4-6
+ mycode3 7 3 57% 4-6
"""))
def testReportDefault(self):
@@ -78,7 +81,7 @@ class ApiTest(CoverageTest):
self.doReportWork("mycode4")
coverage.report()
rpt = re.sub(r"\s+", " ", self.stdout())
- self.assert_("mycode4 7 4 57% 4-6" in rpt)
+ self.assertTrue("mycode4 7 3 57% 4-6" in rpt)
def testUnexecutedFile(self):
cov = coverage.coverage()
@@ -90,16 +93,16 @@ class ApiTest(CoverageTest):
c = 4
d = 5
""")
-
+
self.make_file("not_run.py", """\
fooey = 17
""")
-
+
# Import the python file, executing it.
cov.start()
- self.import_module("mycode")
- cov.stop()
-
+ self.import_module("mycode") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
+
_, statements, missing, _ = cov.analysis("not_run.py")
self.assertEqual(statements, [1])
self.assertEqual(missing, [1])
@@ -110,22 +113,22 @@ class ApiTest(CoverageTest):
import mymod
a = 1
""")
-
+
self.make_file("mymod.py", """\
fooey = 17
""")
-
+
# Import the python file, executing it.
cov = coverage.coverage()
cov.start()
- self.import_module("mymain")
- cov.stop()
-
+ self.import_module("mymain") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
+
filename, _, _, _ = cov.analysis("mymain.py")
self.assertEqual(os.path.basename(filename), "mymain.py")
filename, _, _, _ = cov.analysis("mymod.py")
self.assertEqual(os.path.basename(filename), "mymod.py")
-
+
filename, _, _, _ = cov.analysis(sys.modules["mymain"])
self.assertEqual(os.path.basename(filename), "mymain.py")
filename, _, _, _ = cov.analysis(sys.modules["mymod"])
@@ -135,14 +138,14 @@ class ApiTest(CoverageTest):
# already.
cov = coverage.coverage()
cov.start()
- self.import_module("mymain")
- cov.stop()
-
+ self.import_module("mymain") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
+
filename, _, _, _ = cov.analysis("mymain.py")
self.assertEqual(os.path.basename(filename), "mymain.py")
filename, _, _, _ = cov.analysis("mymod.py")
self.assertEqual(os.path.basename(filename), "mymod.py")
-
+
filename, _, _, _ = cov.analysis(sys.modules["mymain"])
self.assertEqual(os.path.basename(filename), "mymain.py")
filename, _, _, _ = cov.analysis(sys.modules["mymod"])
@@ -154,17 +157,17 @@ class ApiTest(CoverageTest):
a = 1
hls = colorsys.rgb_to_hls(1.0, 0.5, 0.0)
""")
-
+
self.make_file("mymod.py", """\
fooey = 17
""")
# Measure without the stdlib.
cov1 = coverage.coverage()
- self.assertEqual(cov1.cover_pylib, False)
+ self.assertEqual(cov1.config.cover_pylib, False)
cov1.start()
- self.import_module("mymain")
- cov1.stop()
+ self.import_module("mymain") # pragma: recursive coverage
+ cov1.stop() # pragma: recursive coverage
# some statements were marked executed in mymain.py
_, statements, missing, _ = cov1.analysis("mymain.py")
@@ -176,8 +179,8 @@ class ApiTest(CoverageTest):
# Measure with the stdlib.
cov2 = coverage.coverage(cover_pylib=True)
cov2.start()
- self.import_module("mymain")
- cov2.stop()
+ self.import_module("mymain") # pragma: recursive coverage
+ cov2.stop() # pragma: recursive coverage
# some statements were marked executed in mymain.py
_, statements, missing, _ = cov2.analysis("mymain.py")
@@ -204,13 +207,13 @@ class ApiTest(CoverageTest):
fooey = 17
""")
- self.assert_equal_sets(os.listdir("."), ["datatest1.py"])
+ self.assertSameElements(os.listdir("."), ["datatest1.py"])
cov = coverage.coverage()
cov.start()
- self.import_module("datatest1")
- cov.stop()
+ self.import_module("datatest1") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
cov.save()
- self.assert_equal_sets(os.listdir("."),
+ self.assertSameElements(os.listdir("."),
["datatest1.py", "datatest1.pyc", ".coverage"])
def testDatafileSpecified(self):
@@ -219,13 +222,13 @@ class ApiTest(CoverageTest):
fooey = 17
""")
- self.assert_equal_sets(os.listdir("."), ["datatest2.py"])
+ self.assertSameElements(os.listdir("."), ["datatest2.py"])
cov = coverage.coverage(data_file="cov.data")
cov.start()
- self.import_module("datatest2")
- cov.stop()
+ self.import_module("datatest2") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
cov.save()
- self.assert_equal_sets(os.listdir("."),
+ self.assertSameElements(os.listdir("."),
["datatest2.py", "datatest2.pyc", "cov.data"])
def testDatafileAndSuffixSpecified(self):
@@ -234,17 +237,108 @@ class ApiTest(CoverageTest):
fooey = 17
""")
- self.assert_equal_sets(os.listdir("."), ["datatest3.py"])
- cov = coverage.coverage(data_file="cov.data", data_suffix=".14")
+ self.assertSameElements(os.listdir("."), ["datatest3.py"])
+ cov = coverage.coverage(data_file="cov.data", data_suffix="14")
cov.start()
- self.import_module("datatest3")
- cov.stop()
+ self.import_module("datatest3") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
cov.save()
- self.assert_equal_sets(os.listdir("."),
+ self.assertSameElements(os.listdir("."),
["datatest3.py", "datatest3.pyc", "cov.data.14"])
+ def testDatafileFromRcFile(self):
+ # You can specify the data file name in the .coveragerc file
+ self.make_file("datatest4.py", """\
+ fooey = 17
+ """)
+ self.make_file(".coveragerc", """\
+ [run]
+ data_file = mydata.dat
+ """)
+
+ self.assertSameElements(os.listdir("."),
+ ["datatest4.py", ".coveragerc"])
+ cov = coverage.coverage()
+ cov.start()
+ self.import_module("datatest4") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
+ cov.save()
+ self.assertSameElements(os.listdir("."),
+ ["datatest4.py", "datatest4.pyc", ".coveragerc", "mydata.dat"])
+
def testEmptyReporting(self):
# Used to be you'd get an exception reporting on nothing...
cov = coverage.coverage()
cov.erase()
cov.report()
+
+class OmitIncludeTest(CoverageTest):
+ """Test using omit_prefixes and include_prefixes when measuring code."""
+
+ def test_nothing_specified(self):
+ self.make_file("a.py", """\
+ a = 1
+ """)
+ self.make_file("b.py", """\
+ import a
+ b = 1
+ """)
+
+ cov = coverage.coverage()
+ cov.start()
+ self.import_module("b")
+ cov.stop()
+ lines = cov.data.summary()
+ self.assertEqual(lines['a.py'], 1)
+ self.assertEqual(lines['b.py'], 2)
+
+ def test_include(self):
+ self.make_file("a.py", """\
+ a = 1
+ """)
+ self.make_file("b.py", """\
+ import a
+ b = 1
+ """)
+
+ cov = coverage.coverage(include_prefixes=["a"])
+ cov.start()
+ self.import_module("b")
+ cov.stop()
+ lines = cov.data.summary()
+ self.assertEqual(lines['a.py'], 1)
+ self.assert_('b.py' not in lines)
+
+ def test_omit(self):
+ self.make_file("a.py", """\
+ a = 1
+ """)
+ self.make_file("b.py", """\
+ import a
+ b = 1
+ """)
+
+ cov = coverage.coverage(omit_prefixes=["a"])
+ cov.start()
+ self.import_module("b")
+ cov.stop()
+ lines = cov.data.summary()
+ self.assert_('a.py' not in lines)
+ self.assertEqual(lines['b.py'], 2)
+
+ def test_omit_and_include(self):
+ self.make_file("aa.py", """\
+ a = 1
+ """)
+ self.make_file("ab.py", """\
+ import aa
+ b = 1
+ """)
+
+ cov = coverage.coverage(include_prefixes=["a"], omit_prefixes=["aa"])
+ cov.start()
+ self.import_module("ab")
+ cov.stop()
+ lines = cov.data.summary()
+ self.assert_('aa.py' not in lines)
+ self.assertEqual(lines['ab.py'], 2)