diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-08-31 07:51:51 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-08-31 07:51:51 -0400 |
commit | 5164d566f03894f0fe9f29dc4e9721edfdf32818 (patch) | |
tree | b111451d253cdd48500fce07c844d6aced8fedc0 /tests/test_html.py | |
parent | 0c895c59e72c7972533a32add7a771b745fa2089 (diff) | |
download | python-coveragepy-git-5164d566f03894f0fe9f29dc4e9721edfdf32818.tar.gz |
Convert farm html tests to goldtests.
Diffstat (limited to 'tests/test_html.py')
-rw-r--r-- | tests/test_html.py | 301 |
1 files changed, 269 insertions, 32 deletions
diff --git a/tests/test_html.py b/tests/test_html.py index 360f967a..13fdf9bb 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -5,15 +5,20 @@ """Tests that HTML generation is awesome.""" import datetime +import glob +import os import os.path import re import sys import coverage +import coverage.files import coverage.html from coverage.misc import CoverageException, NotPython, NoSource from tests.coveragetest import CoverageTest +from tests.goldtest import CoverageGoldTest +from tests.goldtest import change_dir, compare, contains, doesnt_contain, contains_any class HtmlTestHelpers(CoverageTest): @@ -468,50 +473,282 @@ class HtmlStaticFileTest(CoverageTest): cov.html_report() -class CoverageGoldTest(CoverageTest): - - run_in_temp_dir = False - - def setUp(self): - super(CoverageGoldTest, self).setUp() - self.chdir(self.root_dir) - # Modules should be importable from the current directory. - sys.path.insert(0, '') - - def output_dir(self, the_dir): - self.addCleanup(self.cleanup_output_dir, the_dir) - - def cleanup_output_dir(self, the_dir): - if not os.environ.get("COVERAGE_KEEP_OUTPUT"): - clean(the_dir) - -from coverage.test_helpers import change_dir -from tests.test_farm import clean, compare, contains - class HtmlGoldTests(CoverageGoldTest): root_dir = 'tests/farm/html' def test_a(self): - self.output_dir("html_a") + self.output_dir("out/a") with change_dir("src"): cov = coverage.Coverage() cov.start() - import a - cov.stop() - cov.html_report(a, directory='../html_a') - - compare("gold_a", "html_a", size_within=10, file_pattern="*.html") - contains("html_a/a_py.html", - '<span class="key">if</span> <span class="num">1</span> ' - '<span class="op"><</span> <span class="num">2</span>', - ' <span class="nam">a</span> ' - '<span class="op">=</span> <span class="num">3</span>', + import a # pragma: nested + cov.stop() # pragma: nested + cov.html_report(a, directory='../out/a') + + compare("gold_a", "out/a", size_within=10, file_pattern="*.html") + contains( + "out/a/a_py.html", + ('<span class="key">if</span> <span class="num">1</span> ' + '<span class="op"><</span> <span class="num">2</span>'), + (' <span class="nam">a</span> ' + '<span class="op">=</span> <span class="num">3</span>'), '<span class="pc_cov">67%</span>', ) - contains("html_a/index.html", + contains( + "out/a/index.html", '<a href="a_py.html">a.py</a>', '<span class="pc_cov">67%</span>', '<td class="right" data-ratio="2 3">67%</td>', ) + + def test_b_branch(self): + self.output_dir("out/b_branch") + + with change_dir("src"): + cov = coverage.Coverage(branch=True) + cov.start() + import b # pragma: nested + cov.stop() # pragma: nested + cov.html_report(b, directory="../out/b_branch") + + compare("gold_b_branch", "out/b_branch", size_within=10, file_pattern="*.html") + contains( + "out/b_branch/b_py.html", + ('<span class="key">if</span> <span class="nam">x</span> ' + '<span class="op"><</span> <span class="num">2</span>'), + (' <span class="nam">a</span> <span class="op">=</span> ' + '<span class="num">3</span>'), + '<span class="pc_cov">70%</span>', + ('<span class="annotate" title="Line 8 was executed, but never jumped to line 11">' + '8 ↛ 11 [?]</span>'), + ('<span class="annotate" title="Line 17 was executed, but never jumped ' + 'to the function exit">17 ↛ exit [?]</span>'), + ('<span class="annotate" title="Line 25 was executed, but never jumped ' + 'to line 26 or line 28">25 ↛ 26, ' + '25 ↛ 28 [?]</span>'), + ) + contains( + "out/b_branch/index.html", + '<a href="b_py.html">b.py</a>', + '<span class="pc_cov">70%</span>', + '<td class="right" data-ratio="16 23">70%</td>', + ) + + def test_bom(self): + self.output_dir("out/bom") + + with change_dir("src"): + cov = coverage.Coverage() + cov.start() + import bom # pragma: nested + cov.stop() # pragma: nested + cov.html_report(bom, directory="../out/bom") + + compare("gold_bom", "out/bom", size_within=10, file_pattern="*.html") + contains( + "out/bom/bom_py.html", + '<span class="str">"3×4 = 12, ÷2 = 6±0"</span>', + ) + + def test_isolatin1(self): + self.output_dir("out/isolatin1") + + with change_dir("src"): + cov = coverage.Coverage() + cov.start() + import isolatin1 # pragma: nested + cov.stop() # pragma: nested + cov.html_report(isolatin1, directory="../out/isolatin1") + + compare("gold_isolatin1", "out/isolatin1", size_within=10, file_pattern="*.html") + contains( + "out/isolatin1/isolatin1_py.html", + '<span class="str">"3×4 = 12, ÷2 = 6±0"</span>', + ) + + def test_omit_1(self): + self.output_dir("out/omit_1") + + with change_dir("src"): + cov = coverage.Coverage(include=["./*"]) + cov.start() + import main # pragma: nested + cov.stop() # pragma: nested + cov.html_report(directory="../out/omit_1") + + compare("gold_omit_1", "out/omit_1", size_within=10, file_pattern="*.html") + + def test_omit_2(self): + self.output_dir("out/omit_2") + + with change_dir("src"): + cov = coverage.Coverage(include=["./*"]) + cov.start() + import main # pragma: nested + cov.stop() # pragma: nested + cov.html_report(directory="../out/omit_2", omit=["m1.py"]) + + compare("gold_omit_2", "out/omit_2", size_within=10, file_pattern="*.html") + + def test_omit_3(self): + self.output_dir("out/omit_3") + + with change_dir("src"): + cov = coverage.Coverage(include=["./*"]) + cov.start() + import main # pragma: nested + cov.stop() # pragma: nested + cov.html_report(directory="../out/omit_3", omit=["m1.py", "m2.py"]) + + compare("gold_omit_3", "out/omit_3", size_within=10, file_pattern="*.html") + + def test_omit_4(self): + self.output_dir("out/omit_4") + + with change_dir("src"): + cov = coverage.Coverage(config_file="omit4.ini", include=["./*"]) + cov.start() + import main # pragma: nested + cov.stop() # pragma: nested + cov.html_report(directory="../out/omit_4") + + compare("gold_omit_4", "out/omit_4", size_within=10, file_pattern="*.html") + + def test_omit_5(self): + self.output_dir("out/omit_5") + + with change_dir("src"): + cov = coverage.Coverage(config_file="omit5.ini", include=["./*"]) + cov.start() + import main # pragma: nested + cov.stop() # pragma: nested + cov.html_report() + + compare("gold_omit_5", "out/omit_5", size_within=10, file_pattern="*.html") + + def test_other(self): + self.output_dir("out/other") + + with change_dir("src"): + sys.path.insert(0, "../othersrc") + cov = coverage.Coverage(include=["./*", "../othersrc/*"]) + cov.start() + import here # pragma: nested + cov.stop() # pragma: nested + cov.html_report(directory="../out/other") + + # Different platforms will name the "other" file differently. Rename it + for p in glob.glob("out/other/*_other_py.html"): + os.rename(p, "out/other/blah_blah_other_py.html") + + compare("gold_other", "out/other", size_within=10, file_pattern="*.html") + contains( + "out/other/index.html", + '<a href="here_py.html">here.py</a>', + 'other_py.html">', 'other.py</a>', + ) + + def test_partial(self): + self.output_dir("out/partial") + + with change_dir("src"): + cov = coverage.Coverage(branch=True) + cov.start() + import partial # pragma: nested + cov.stop() # pragma: nested + cov.html_report(partial, directory="../out/partial") + + compare("gold_partial", "out/partial", size_within=10, file_pattern="*.html") + contains( + "out/partial/partial_py.html", + '<p id="t8" class="stm run hide_run">', + '<p id="t11" class="stm run hide_run">', + '<p id="t14" class="stm run hide_run">', + # The "if 0" and "if 1" statements are optimized away. + '<p id="t17" class="pln">', + ) + contains( + "out/partial/index.html", + '<a href="partial_py.html">partial.py</a>', + ) + contains( + "out/partial/index.html", + '<span class="pc_cov">100%</span>' + ) + + def test_styled(self): + self.output_dir("out/styled") + + with change_dir("src"): + cov = coverage.Coverage() + cov.start() + import a # pragma: nested + cov.stop() # pragma: nested + cov.html_report(a, directory="../out/styled", extra_css="extra.css") + + compare("gold_styled", "out/styled", size_within=10, file_pattern="*.html") + compare("gold_styled", "out/styled", size_within=10, file_pattern="*.css") + contains( + "out/styled/a_py.html", + '<link rel="stylesheet" href="extra.css" type="text/css">', + ('<span class="key">if</span> <span class="num">1</span> ' + '<span class="op"><</span> <span class="num">2</span>'), + (' <span class="nam">a</span> <span class="op">=</span> ' + '<span class="num">3</span>'), + '<span class="pc_cov">67%</span>' + ) + contains( + "out/styled/index.html", + '<link rel="stylesheet" href="extra.css" type="text/css">', + '<a href="a_py.html">a.py</a>', + '<span class="pc_cov">67%</span>' + ) + + def test_tabbed(self): + self.output_dir("out/tabbed") + + with change_dir("src"): + cov = coverage.Coverage() + cov.start() + import tabbed # pragma: nested + cov.stop() # pragma: nested + cov.html_report(tabbed, directory="../out/tabbed") + + # Editors like to change things, make sure our source file still has tabs. + contains("src/tabbed.py", "\tif x:\t\t\t\t\t# look nice") + + contains( + "out/tabbed/tabbed_py.html", + '> <span class="key">if</span> ' + '<span class="nam">x</span><span class="op">:</span>' + ' ' + ' ' + '<span class="com"># look nice</span>' + ) + + doesnt_contain("out/tabbed/tabbed_py.html", "\t") + + def test_unicode(self): + self.output_dir("out/unicode") + + with change_dir("src"): + cov = coverage.Coverage() + cov.start() + import unicode # pragma: nested + cov.stop() # pragma: nested + cov.html_report(unicode, directory="../out/unicode") + + compare("gold_unicode", "out/unicode", size_within=10, file_pattern="*.html") + contains( + "out/unicode/unicode_py.html", + ('<span class="str">"ʎd˙ǝbɐɹǝʌoɔ"' + '</span>'), + ) + + contains_any( + "out/unicode/unicode_py.html", + '<span class="str">"db40,dd00: x��"</span>', + '<span class="str">"db40,dd00: x󠄀"</span>', + ) |