From 9d89805e5a4a9969387f58f7b299231ae7ec8486 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 27 Dec 2009 23:02:29 -0500 Subject: Add more tests of omitting files during HTML reporting, and a better way to enable re-importing modules during test_farm tests. --- coverage/files.py | 2 + test/backtest.py | 6 --- test/farm/html/gold_omit_1/index.html | 99 +++++++++++++++++++++++++++++++++++ test/farm/html/gold_omit_1/m1.html | 45 ++++++++++++++++ test/farm/html/gold_omit_1/m2.html | 45 ++++++++++++++++ test/farm/html/gold_omit_1/m3.html | 45 ++++++++++++++++ test/farm/html/gold_omit_1/main.html | 61 +++++++++++++++++++++ test/farm/html/gold_omit_2/index.html | 90 +++++++++++++++++++++++++++++++ test/farm/html/gold_omit_2/m2.html | 45 ++++++++++++++++ test/farm/html/gold_omit_2/m3.html | 45 ++++++++++++++++ test/farm/html/gold_omit_2/main.html | 61 +++++++++++++++++++++ test/farm/html/gold_omit_3/index.html | 81 ++++++++++++++++++++++++++++ test/farm/html/gold_omit_3/m3.html | 45 ++++++++++++++++ test/farm/html/gold_omit_3/main.html | 61 +++++++++++++++++++++ test/farm/html/run_a.py | 1 - test/farm/html/run_a_xml.py | 1 - test/farm/html/run_omit_1.py | 15 ++++++ test/farm/html/run_omit_2.py | 15 ++++++ test/farm/html/run_omit_3.py | 15 ++++++ test/farm/html/src/m1.py | 2 + test/farm/html/src/m2.py | 2 + test/farm/html/src/m3.py | 2 + test/farm/html/src/main.py | 10 ++++ test/test_farm.py | 9 ++-- 24 files changed, 792 insertions(+), 11 deletions(-) create mode 100644 test/farm/html/gold_omit_1/index.html create mode 100644 test/farm/html/gold_omit_1/m1.html create mode 100644 test/farm/html/gold_omit_1/m2.html create mode 100644 test/farm/html/gold_omit_1/m3.html create mode 100644 test/farm/html/gold_omit_1/main.html create mode 100644 test/farm/html/gold_omit_2/index.html create mode 100644 test/farm/html/gold_omit_2/m2.html create mode 100644 test/farm/html/gold_omit_2/m3.html create mode 100644 test/farm/html/gold_omit_2/main.html create mode 100644 test/farm/html/gold_omit_3/index.html create mode 100644 test/farm/html/gold_omit_3/m3.html create mode 100644 test/farm/html/gold_omit_3/main.html create mode 100644 test/farm/html/run_omit_1.py create mode 100644 test/farm/html/run_omit_2.py create mode 100644 test/farm/html/run_omit_3.py create mode 100644 test/farm/html/src/m1.py create mode 100644 test/farm/html/src/m2.py create mode 100644 test/farm/html/src/m3.py create mode 100644 test/farm/html/src/main.py diff --git a/coverage/files.py b/coverage/files.py index 3968b567..bf60f8b4 100644 --- a/coverage/files.py +++ b/coverage/files.py @@ -38,6 +38,8 @@ class FileLocator(object): f = os.path.basename(f) if not os.path.isabs(f): for path in [os.curdir] + sys.path: + if path is None: + continue g = os.path.join(path, f) if os.path.exists(g): f = g diff --git a/test/backtest.py b/test/backtest.py index 656b35c7..4460a78d 100644 --- a/test/backtest.py +++ b/test/backtest.py @@ -47,9 +47,3 @@ except NameError: def execfile(filename, globs): """A Python 3 implementation of execfile.""" exec(compile(open(filename).read(), filename, 'exec'), globs) - -# reload moved in Py3k -try: - from imp import reload -except: - reload = reload diff --git a/test/farm/html/gold_omit_1/index.html b/test/farm/html/gold_omit_1/index.html new file mode 100644 index 00000000..6a4086b9 --- /dev/null +++ b/test/farm/html/gold_omit_1/index.html @@ -0,0 +1,99 @@ + + + + + Coverage report + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modulestatementsrunexcludedcoverage
Total14140100%
m1220100%
m2220100%
m3220100%
main880100%
+
+ + + + + diff --git a/test/farm/html/gold_omit_1/m1.html b/test/farm/html/gold_omit_1/m1.html new file mode 100644 index 00000000..ba3a5273 --- /dev/null +++ b/test/farm/html/gold_omit_1/m1.html @@ -0,0 +1,45 @@ + + + + + Coverage for m1: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+ +
+

m1a = 1 

+

m1b = 2 

+ +
+
+ + + diff --git a/test/farm/html/gold_omit_1/m2.html b/test/farm/html/gold_omit_1/m2.html new file mode 100644 index 00000000..bd9e4c48 --- /dev/null +++ b/test/farm/html/gold_omit_1/m2.html @@ -0,0 +1,45 @@ + + + + + Coverage for m2: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+ +
+

m2a = 1 

+

m2b = 2 

+ +
+
+ + + diff --git a/test/farm/html/gold_omit_1/m3.html b/test/farm/html/gold_omit_1/m3.html new file mode 100644 index 00000000..cdd6760a --- /dev/null +++ b/test/farm/html/gold_omit_1/m3.html @@ -0,0 +1,45 @@ + + + + + Coverage for m3: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+ +
+

m3a = 1 

+

m3b = 2 

+ +
+
+ + + diff --git a/test/farm/html/gold_omit_1/main.html b/test/farm/html/gold_omit_1/main.html new file mode 100644 index 00000000..4c159fd2 --- /dev/null +++ b/test/farm/html/gold_omit_1/main.html @@ -0,0 +1,61 @@ + + + + + Coverage for main: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+

3

+

4

+

5

+

6

+

7

+

8

+

9

+

10

+ +
+

import m1 

+

import m2 

+

import m3 

+

 

+

a = 5 

+

b = 6 

+

 

+

assert m1.m1a == 1 

+

assert m2.m2a == 1 

+

assert m3.m3a == 1 

+ +
+
+ + + diff --git a/test/farm/html/gold_omit_2/index.html b/test/farm/html/gold_omit_2/index.html new file mode 100644 index 00000000..c47c3688 --- /dev/null +++ b/test/farm/html/gold_omit_2/index.html @@ -0,0 +1,90 @@ + + + + + Coverage report + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modulestatementsrunexcludedcoverage
Total12120100%
m2220100%
m3220100%
main880100%
+
+ + + + + diff --git a/test/farm/html/gold_omit_2/m2.html b/test/farm/html/gold_omit_2/m2.html new file mode 100644 index 00000000..bd9e4c48 --- /dev/null +++ b/test/farm/html/gold_omit_2/m2.html @@ -0,0 +1,45 @@ + + + + + Coverage for m2: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+ +
+

m2a = 1 

+

m2b = 2 

+ +
+
+ + + diff --git a/test/farm/html/gold_omit_2/m3.html b/test/farm/html/gold_omit_2/m3.html new file mode 100644 index 00000000..cdd6760a --- /dev/null +++ b/test/farm/html/gold_omit_2/m3.html @@ -0,0 +1,45 @@ + + + + + Coverage for m3: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+ +
+

m3a = 1 

+

m3b = 2 

+ +
+
+ + + diff --git a/test/farm/html/gold_omit_2/main.html b/test/farm/html/gold_omit_2/main.html new file mode 100644 index 00000000..4c159fd2 --- /dev/null +++ b/test/farm/html/gold_omit_2/main.html @@ -0,0 +1,61 @@ + + + + + Coverage for main: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+

3

+

4

+

5

+

6

+

7

+

8

+

9

+

10

+ +
+

import m1 

+

import m2 

+

import m3 

+

 

+

a = 5 

+

b = 6 

+

 

+

assert m1.m1a == 1 

+

assert m2.m2a == 1 

+

assert m3.m3a == 1 

+ +
+
+ + + diff --git a/test/farm/html/gold_omit_3/index.html b/test/farm/html/gold_omit_3/index.html new file mode 100644 index 00000000..c217f0d9 --- /dev/null +++ b/test/farm/html/gold_omit_3/index.html @@ -0,0 +1,81 @@ + + + + + Coverage report + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modulestatementsrunexcludedcoverage
Total10100100%
m3220100%
main880100%
+
+ + + + + diff --git a/test/farm/html/gold_omit_3/m3.html b/test/farm/html/gold_omit_3/m3.html new file mode 100644 index 00000000..cdd6760a --- /dev/null +++ b/test/farm/html/gold_omit_3/m3.html @@ -0,0 +1,45 @@ + + + + + Coverage for m3: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+ +
+

m3a = 1 

+

m3b = 2 

+ +
+
+ + + diff --git a/test/farm/html/gold_omit_3/main.html b/test/farm/html/gold_omit_3/main.html new file mode 100644 index 00000000..4c159fd2 --- /dev/null +++ b/test/farm/html/gold_omit_3/main.html @@ -0,0 +1,61 @@ + + + + + Coverage for main: 100% + + + + + + + + +
+ + + + + +
+

1

+

2

+

3

+

4

+

5

+

6

+

7

+

8

+

9

+

10

+ +
+

import m1 

+

import m2 

+

import m3 

+

 

+

a = 5 

+

b = 6 

+

 

+

assert m1.m1a == 1 

+

assert m2.m2a == 1 

+

assert m3.m3a == 1 

+ +
+
+ + + diff --git a/test/farm/html/run_a.py b/test/farm/html/run_a.py index 92d02348..047d8982 100644 --- a/test/farm/html/run_a.py +++ b/test/farm/html/run_a.py @@ -4,7 +4,6 @@ def html_it(): cov = coverage.coverage() cov.start() import a - reload(a) # Because other test files import a, we have to reload to run it. cov.stop() cov.html_report(a, directory="../html_a") diff --git a/test/farm/html/run_a_xml.py b/test/farm/html/run_a_xml.py index 375be2af..dabfa61f 100644 --- a/test/farm/html/run_a_xml.py +++ b/test/farm/html/run_a_xml.py @@ -4,7 +4,6 @@ def html_it(): cov = coverage.coverage() cov.start() import a - reload(a) # Because other test files import a, we have to reload to run it. cov.stop() cov.xml_report(a, outfile="../xml/coverage.xml") diff --git a/test/farm/html/run_omit_1.py b/test/farm/html/run_omit_1.py new file mode 100644 index 00000000..8bc14e52 --- /dev/null +++ b/test/farm/html/run_omit_1.py @@ -0,0 +1,15 @@ +def html_it(): + """Run coverage and make an HTML report for main.""" + import coverage + cov = coverage.coverage() + cov.start() + import main + cov.stop() + cov.html_report(directory="../html_omit_1") + +runfunc(html_it, rundir="src") + +# HTML files will change often. Check that the sizes are reasonable, +# and check that certain key strings are in the output. +compare("gold_omit_1", "html_omit_1", size_within=10, file_pattern="*.html") +clean("html_omit_1") diff --git a/test/farm/html/run_omit_2.py b/test/farm/html/run_omit_2.py new file mode 100644 index 00000000..0f24bc1e --- /dev/null +++ b/test/farm/html/run_omit_2.py @@ -0,0 +1,15 @@ +def html_it(): + """Run coverage and make an HTML report for main.""" + import coverage + cov = coverage.coverage() + cov.start() + import main + cov.stop() + cov.html_report(directory="../html_omit_2", omit_prefixes=["m1"]) + +runfunc(html_it, rundir="src") + +# HTML files will change often. Check that the sizes are reasonable, +# and check that certain key strings are in the output. +compare("gold_omit_2", "html_omit_2", size_within=10, file_pattern="*.html") +clean("html_omit_2") diff --git a/test/farm/html/run_omit_3.py b/test/farm/html/run_omit_3.py new file mode 100644 index 00000000..854ccee9 --- /dev/null +++ b/test/farm/html/run_omit_3.py @@ -0,0 +1,15 @@ +def html_it(): + """Run coverage and make an HTML report for main.""" + import coverage + cov = coverage.coverage() + cov.start() + import main + cov.stop() + cov.html_report(directory="../html_omit_3", omit_prefixes=["m1", "m2"]) + +runfunc(html_it, rundir="src") + +# HTML files will change often. Check that the sizes are reasonable, +# and check that certain key strings are in the output. +compare("gold_omit_3", "html_omit_3", size_within=10, file_pattern="*.html") +clean("html_omit_3") diff --git a/test/farm/html/src/m1.py b/test/farm/html/src/m1.py new file mode 100644 index 00000000..7eece35a --- /dev/null +++ b/test/farm/html/src/m1.py @@ -0,0 +1,2 @@ +m1a = 1 +m1b = 2 diff --git a/test/farm/html/src/m2.py b/test/farm/html/src/m2.py new file mode 100644 index 00000000..9e88f350 --- /dev/null +++ b/test/farm/html/src/m2.py @@ -0,0 +1,2 @@ +m2a = 1 +m2b = 2 diff --git a/test/farm/html/src/m3.py b/test/farm/html/src/m3.py new file mode 100644 index 00000000..22557edd --- /dev/null +++ b/test/farm/html/src/m3.py @@ -0,0 +1,2 @@ +m3a = 1 +m3b = 2 diff --git a/test/farm/html/src/main.py b/test/farm/html/src/main.py new file mode 100644 index 00000000..b42b3647 --- /dev/null +++ b/test/farm/html/src/main.py @@ -0,0 +1,10 @@ +import m1 +import m2 +import m3 + +a = 5 +b = 6 + +assert m1.m1a == 1 +assert m2.m2a == 1 +assert m3.m3a == 1 diff --git a/test/test_farm.py b/test/test_farm.py index 006a1fb1..630f1011 100644 --- a/test/test_farm.py +++ b/test/test_farm.py @@ -3,7 +3,7 @@ import difflib, filecmp, fnmatch, glob, os, re, shutil, sys sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k -from backtest import run_command, execfile, reload # pylint: disable-msg=W0622 +from backtest import run_command, execfile # pylint: disable-msg=W0622 def test_farm(clean_only=False): @@ -75,12 +75,15 @@ class FarmTestCase(object): if self.dont_clean: glo['clean'] = self.noop - glo['reload'] = reload - + old_mods = dict(sys.modules) try: execfile(self.runpy, glo) finally: self.cd(cwd) + # 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 old_mods]: + del sys.modules[m] def run_fully(self): # pragma: no cover """Run as a full test case, with setUp and tearDown.""" -- cgit v1.2.1