diff options
Diffstat (limited to 'test/test_html.py')
-rw-r--r-- | test/test_html.py | 103 |
1 files changed, 78 insertions, 25 deletions
diff --git a/test/test_html.py b/test/test_html.py index 1877a30d..d33dd1f3 100644 --- a/test/test_html.py +++ b/test/test_html.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- """Tests that HTML generation is awesome.""" import os.path, sys @@ -7,19 +8,8 @@ from coverage.misc import NotPython sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k from coveragetest import CoverageTest -class HtmlTest(CoverageTest): - """HTML!""" - - def setUp(self): - super(HtmlTest, self).setUp() - - # At least one of our tests monkey-patches the version of coverage, - # so grab it here to restore it later. - self.real_coverage_version = coverage.__version__ - - def tearDown(self): - coverage.__version__ = self.real_coverage_version - super(HtmlTest, self).tearDown() +class HtmlTestHelpers(CoverageTest): + """Methods that help with HTML tests.""" def create_initial_files(self): """Create the source files we need to run these tests.""" @@ -38,14 +28,14 @@ class HtmlTest(CoverageTest): print("x is %d" % x) """) - def run_coverage(self, **kwargs): + def run_coverage(self, covargs=None, htmlargs=None): """Run coverage on main_file.py, and create an HTML report.""" self.clean_local_file_imports() - cov = coverage.coverage(**kwargs) + cov = coverage.coverage(**(covargs or {})) cov.start() self.import_local_file("main_file") cov.stop() - cov.html_report() + cov.html_report(**(htmlargs or {})) def remove_html_files(self): """Remove the HTML files created as part of the HTML report.""" @@ -54,6 +44,23 @@ class HtmlTest(CoverageTest): os.remove("htmlcov/helper1.html") os.remove("htmlcov/helper2.html") + +class HtmlDeltaTest(HtmlTestHelpers, CoverageTest): + """Tests of the HTML delta speed-ups.""" + + def setUp(self): + super(HtmlDeltaTest, self).setUp() + + # At least one of our tests monkey-patches the version of coverage, + # so grab it here to restore it later. + self.real_coverage_version = coverage.__version__ + + self.maxDiff = None + + def tearDown(self): + coverage.__version__ = self.real_coverage_version + super(HtmlDeltaTest, self).tearDown() + def test_html_created(self): # Test basic HTML generation: files should be created. self.create_initial_files() @@ -118,11 +125,11 @@ class HtmlTest(CoverageTest): # In this case, everything changes because the coverage settings have # changed. self.create_initial_files() - self.run_coverage(timid=False) + self.run_coverage(covargs=dict(timid=False)) index1 = open("htmlcov/index.html").read() self.remove_html_files() - self.run_coverage(timid=True) + self.run_coverage(covargs=dict(timid=True)) # All the files have been reported again. self.assert_exists("htmlcov/index.html") @@ -156,6 +163,56 @@ class HtmlTest(CoverageTest): self.assertMultiLineEqual(index1, fixed_index2) +class HtmlTitleTests(HtmlTestHelpers, CoverageTest): + """Tests of the HTML title support.""" + + def test_default_title(self): + self.create_initial_files() + self.run_coverage() + index = open("htmlcov/index.html").read() + self.assertIn("<title>Coverage report</title>", index) + self.assertIn("<h1>Coverage report:", index) + + def test_title_set_in_config_file(self): + self.create_initial_files() + self.make_file(".coveragerc", "[html]\ntitle = Metrics & stuff!\n") + self.run_coverage() + index = open("htmlcov/index.html").read() + self.assertIn("<title>Metrics & stuff!</title>", index) + self.assertIn("<h1>Metrics & stuff!:", index) + + if sys.version_info[:2] != (3,1): + def test_non_ascii_title_set_in_config_file(self): + self.create_initial_files() + self.make_file(".coveragerc", + "[html]\ntitle = «ταБЬℓσ» numbers" + ) + self.run_coverage() + index = open("htmlcov/index.html").read() + self.assertIn( + "<title>«ταБЬℓσ»" + " numbers", index + ) + self.assertIn( + "<h1>«ταБЬℓσ»" + " numbers", index + ) + + def test_title_set_in_args(self): + self.create_initial_files() + self.make_file(".coveragerc", "[html]\ntitle = Good title\n") + self.run_coverage(htmlargs=dict(title="«ταБЬℓσ» & stüff!")) + index = open("htmlcov/index.html").read() + self.assertIn( + "<title>«ταБЬℓσ»" + " & stüff!</title>", index + ) + self.assertIn( + "<h1>«ταБЬℓσ»" + " & stüff!:", index + ) + + class HtmlWithUnparsableFilesTest(CoverageTest): """Test the behavior when measuring unparsable files.""" @@ -197,13 +254,9 @@ class HtmlWithUnparsableFilesTest(CoverageTest): self.assertEqual(output.strip(), "No data to report.") def test_execed_liar_ignored(self): - """ - Jinja2 sets __file__ to be a non-Python file, and then execs code. - - If that file contains non-Python code, a TokenError shouldn't - have been raised when writing the HTML report. - - """ + # Jinja2 sets __file__ to be a non-Python file, and then execs code. + # If that file contains non-Python code, a TokenError shouldn't + # have been raised when writing the HTML report. if sys.version_info < (3, 0): source = "exec compile('','','exec') in {'__file__': 'liar.html'}" else: |