diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2010-05-15 19:47:14 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2010-05-15 19:47:14 -0400 |
commit | 4fb69b6c13c00bba910afe9d6beade673f4e4386 (patch) | |
tree | eb8a25de40952b9ed98a66e6c82caf9805ffac08 /test | |
parent | 128e1985c1d0f958dfda551f92fc858c1989777f (diff) | |
download | python-coveragepy-git-4fb69b6c13c00bba910afe9d6beade673f4e4386.tar.gz |
Hook up omit and include to the run command. Test the new cmdline behavior and run behavior.
Diffstat (limited to 'test')
-rw-r--r-- | test/coveragetest.py | 8 | ||||
-rw-r--r-- | test/test_api.py | 69 | ||||
-rw-r--r-- | test/test_cmdline.py | 79 |
3 files changed, 137 insertions, 19 deletions
diff --git a/test/coveragetest.py b/test/coveragetest.py index 277b4f03..07053ee5 100644 --- a/test/coveragetest.py +++ b/test/coveragetest.py @@ -60,6 +60,9 @@ class CoverageTest(TestCase): self.captured_stderr = StringIO() sys.stderr = self.captured_stderr + # Record sys.modules here so we can remove imported modules in tearDown. + self.old_modules = dict(sys.modules) + def tearDown(self): if self.run_in_temp_dir: # Restore the original sys.path. @@ -76,6 +79,11 @@ class CoverageTest(TestCase): sys.stdout = self.old_stdout sys.stderr = self.old_stderr + # Remove any new modules imported during the test run. This lets us + # import the same source files for more than one test. + for m in [m for m in sys.modules if m not in self.old_modules]: + del sys.modules[m] + def set_environ(self, name, value): """Set an environment variable `name` to be `value`. diff --git a/test/test_api.py b/test/test_api.py index 4c491366..4580645b 100644 --- a/test/test_api.py +++ b/test/test_api.py @@ -271,3 +271,72 @@ class ApiTest(CoverageTest): cov = coverage.coverage() cov.erase() cov.report() + +class OmitIncludeTest(CoverageTest): + 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) diff --git a/test/test_cmdline.py b/test/test_cmdline.py index f446c0be..71a53975 100644 --- a/test/test_cmdline.py +++ b/test/test_cmdline.py @@ -16,8 +16,8 @@ class CmdLineTest(CoverageTest): run_in_temp_dir = False INIT_LOAD = """\ - .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True) - .load()\n""" + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=None) + .load()\n""" def model_object(self): """Return a Mock suitable for use in CoverageScript.""" @@ -44,7 +44,8 @@ class CmdLineTest(CoverageTest): "Wrong status: got %s, wanted %s" % (r1, ret) ) - code = textwrap.dedent(code) + # Remove all indentation, and change ".foo()" to "m2.foo()". + code = re.sub(r"(?m)^\s+", "", code) code = re.sub(r"(?m)^\.", "m2.", code) m2 = self.model_object() code_obj = compile(code, "<code>", "exec") @@ -95,7 +96,7 @@ class ClassicCmdLineTest(CmdLineTest): def testErase(self): # coverage -e self.cmd_executes("-e", """\ - .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True) + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=None) .erase() """) self.cmd_executes_same("-e", "--erase") @@ -105,7 +106,7 @@ class ClassicCmdLineTest(CmdLineTest): # -x calls coverage.load first. self.cmd_executes("-x foo.py", """\ - .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True) + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=None) .load() .start() .run_python_file('foo.py', ['foo.py']) @@ -114,7 +115,7 @@ class ClassicCmdLineTest(CmdLineTest): """) # -e -x calls coverage.erase first. self.cmd_executes("-e -x foo.py", """\ - .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True) + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=None) .erase() .start() .run_python_file('foo.py', ['foo.py']) @@ -123,7 +124,7 @@ class ClassicCmdLineTest(CmdLineTest): """) # --timid sets a flag, and program arguments get passed through. self.cmd_executes("-x --timid foo.py abc 123", """\ - .coverage(cover_pylib=None, data_suffix=None, timid=True, branch=None, config_file=True) + .coverage(cover_pylib=None, data_suffix=None, timid=True, branch=None, config_file=True, include_prefixes=None, omit_prefixes=None) .load() .start() .run_python_file('foo.py', ['foo.py', 'abc', '123']) @@ -132,7 +133,7 @@ class ClassicCmdLineTest(CmdLineTest): """) # -L sets a flag, and flags for the program don't confuse us. self.cmd_executes("-x -p -L foo.py -a -b", """\ - .coverage(cover_pylib=True, data_suffix=True, timid=None, branch=None, config_file=True) + .coverage(cover_pylib=True, data_suffix=True, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=None) .load() .start() .run_python_file('foo.py', ['foo.py', '-a', '-b']) @@ -149,7 +150,7 @@ class ClassicCmdLineTest(CmdLineTest): def testCombine(self): # coverage -c self.cmd_executes("-c", """\ - .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True) + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=None) .load() .combine() .save() @@ -170,11 +171,15 @@ class ClassicCmdLineTest(CmdLineTest): .report(ignore_errors=None, omit_prefixes=None, include_prefixes=None, morfs=[], show_missing=True) """) - self.cmd_executes("-r -o fooey", self.INIT_LOAD + """\ + self.cmd_executes("-r -o fooey", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["fooey"]) + .load() .report(ignore_errors=None, omit_prefixes=["fooey"], include_prefixes=None, morfs=[], show_missing=None) """) - self.cmd_executes("-r -o fooey,booey", self.INIT_LOAD + """\ + self.cmd_executes("-r -o fooey,booey", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["fooey", "booey"]) + .load() .report(ignore_errors=None, omit_prefixes=["fooey", "booey"], include_prefixes=None, morfs=[], show_missing=None) """) @@ -211,11 +216,15 @@ class ClassicCmdLineTest(CmdLineTest): .annotate(directory=None, ignore_errors=True, omit_prefixes=None, include_prefixes=None, morfs=[]) """) - self.cmd_executes("-a -o fooey", self.INIT_LOAD + """\ + self.cmd_executes("-a -o fooey", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["fooey"]) + .load() .annotate(directory=None, ignore_errors=None, omit_prefixes=["fooey"], include_prefixes=None, morfs=[]) """) - self.cmd_executes("-a -o fooey,booey", self.INIT_LOAD + """\ + self.cmd_executes("-a -o fooey,booey", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["fooey", "booey"]) + .load() .annotate(directory=None, ignore_errors=None, omit_prefixes=["fooey", "booey"], include_prefixes=None, morfs=[]) """) @@ -252,11 +261,15 @@ class ClassicCmdLineTest(CmdLineTest): .html_report(directory=None, ignore_errors=True, omit_prefixes=None, include_prefixes=None, morfs=[]) """) - self.cmd_executes("-b -o fooey", self.INIT_LOAD + """\ + self.cmd_executes("-b -o fooey", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["fooey"]) + .load() .html_report(directory=None, ignore_errors=None, omit_prefixes=["fooey"], include_prefixes=None, morfs=[]) """) - self.cmd_executes("-b -o fooey,booey", self.INIT_LOAD + """\ + self.cmd_executes("-b -o fooey,booey", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["fooey", "booey"]) + .load() .html_report(directory=None, ignore_errors=None, omit_prefixes=["fooey", "booey"], include_prefixes=None, morfs=[]) """) @@ -452,7 +465,7 @@ class NewCmdLineTest(CmdLineTest): self.cmd_executes_same("run --timid f.py", "-e -x --timid f.py") self.cmd_executes_same("run", "-x") self.cmd_executes("run --branch foo.py", """\ - .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=True, config_file=True) + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=True, config_file=True, include_prefixes=None, omit_prefixes=None) .erase() .start() .run_python_file('foo.py', ['foo.py']) @@ -460,7 +473,31 @@ class NewCmdLineTest(CmdLineTest): .save() """) self.cmd_executes("run --rcfile=myrc.rc foo.py", """\ - .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file="myrc.rc") + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file="myrc.rc", include_prefixes=None, omit_prefixes=None) + .erase() + .start() + .run_python_file('foo.py', ['foo.py']) + .stop() + .save() + """) + self.cmd_executes("run --include=pre1,pre2 foo.py", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=["pre1", "pre2"], omit_prefixes=None) + .erase() + .start() + .run_python_file('foo.py', ['foo.py']) + .stop() + .save() + """) + self.cmd_executes("run --omit=opre1,opre2 foo.py", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["opre1", "opre2"]) + .erase() + .start() + .run_python_file('foo.py', ['foo.py']) + .stop() + .save() + """) + self.cmd_executes("run --include=pre1,pre2 --omit=opre1,opre2 foo.py", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=["pre1", "pre2"], omit_prefixes=["opre1", "opre2"]) .erase() .start() .run_python_file('foo.py', ['foo.py']) @@ -486,11 +523,15 @@ class NewCmdLineTest(CmdLineTest): .xml_report(ignore_errors=None, omit_prefixes=None, include_prefixes=None, morfs=[], outfile="-") """) - self.cmd_executes("xml --omit fooey", self.INIT_LOAD + """\ + self.cmd_executes("xml --omit fooey", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["fooey"]) + .load() .xml_report(ignore_errors=None, omit_prefixes=["fooey"], include_prefixes=None, morfs=[], outfile="coverage.xml") """) - self.cmd_executes("xml --omit fooey,booey", self.INIT_LOAD + """\ + self.cmd_executes("xml --omit fooey,booey", """\ + .coverage(cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, include_prefixes=None, omit_prefixes=["fooey", "booey"]) + .load() .xml_report(ignore_errors=None, omit_prefixes=["fooey", "booey"], include_prefixes=None, morfs=[], outfile="coverage.xml") """) |