diff options
-rw-r--r-- | coverage/config.py | 11 | ||||
-rw-r--r-- | test/test_config.py | 19 | ||||
-rw-r--r-- | test/test_html.py | 31 |
3 files changed, 48 insertions, 13 deletions
diff --git a/coverage/config.py b/coverage/config.py index f8e400cd..7a6afe4d 100644 --- a/coverage/config.py +++ b/coverage/config.py @@ -1,7 +1,7 @@ """Config file for coverage.py""" -import os -from coverage.backward import string_class # pylint: disable=W0622 +import os, sys +from coverage.backward import string_class # In py3, # ConfigParser was renamed to the more-standard configparser try: @@ -13,6 +13,13 @@ except ImportError: class HandyConfigParser(configparser.ConfigParser): """Our specialization of ConfigParser.""" + def read(self, filename): + """Read a filename as UTF-8 configuration data.""" + if sys.version_info >= (3, 2): + super().read(filename, encoding="utf-8") + else: + configparser.ConfigParser.read(self, filename) + def getlist(self, section, option): """Read a list of strings. diff --git a/test/test_config.py b/test/test_config.py index a73ef345..5b8714cb 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -1,7 +1,9 @@ +# -*- coding: utf-8 -*- """Test the config file handling for coverage.py""" import os, sys import coverage +from coverage.backward import to_bytes from coverage.misc import CoverageException sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k @@ -139,7 +141,7 @@ class ConfigFileTest(CoverageTest): directory = c:\\tricky\\dir.somewhere extra_css=something/extra.css - title = My report & stuff # numbers + title = Title & nums # nums! [xml] output=mycov.xml @@ -178,7 +180,7 @@ class ConfigFileTest(CoverageTest): self.assertTrue(cov.config.show_missing) self.assertEqual(cov.config.html_dir, r"c:\tricky\dir.somewhere") self.assertEqual(cov.config.extra_css, "something/extra.css") - self.assertEqual(cov.config.html_title, "My report & stuff # numbers") + self.assertEqual(cov.config.html_title, "Title & nums # nums!") self.assertEqual(cov.config.xml_output, "mycov.xml") @@ -186,3 +188,16 @@ class ConfigFileTest(CoverageTest): 'source': ['.', '/home/ned/src/'], 'other': ['other', '/home/ned/other', 'c:\\Ned\\etc'] }) + + if sys.version_info[:2] != (3,1): + def test_one(self): + # This sample file tries to use lots of variation of syntax... + self.make_file(".coveragerc", """\ + [html] + title = tabblo & «ταБЬℓσ» # numbers + """) + cov = coverage.coverage() + + self.assertEqual(cov.config.html_title, + "tabblo & «ταБЬℓσ» # numbers" + ) diff --git a/test/test_html.py b/test/test_html.py index 58e21a0c..2b389c07 100644 --- a/test/test_html.py +++ b/test/test_html.py @@ -18,6 +18,8 @@ class HtmlTest(CoverageTest): # 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(HtmlTest, self).tearDown() @@ -165,17 +167,28 @@ class HtmlTest(CoverageTest): def test_title_set_in_config_file(self): self.create_initial_files() - self.make_file(".coveragerc", "[html]\ntitle = «ταБЬℓσ» & stüff!\n") + self.make_file(".coveragerc", "[html]\ntitle = Metrics & stuff!\n") self.run_coverage() index = open("htmlcov/index.html").read() - self.assertIn( - "<title>«ταБЬℓσ»" - " & stüff!</title>", index - ) - self.assertIn( - "<h1>«ταБЬℓσ»" - " & stüff!:", index - ) + 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() |