summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/config.py11
-rw-r--r--test/test_config.py19
-rw-r--r--test/test_html.py31
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>&#171;&#964;&#945;&#1041;&#1068;&#8467;&#963;&#187;"
- " &amp; st&#252;ff!</title>", index
- )
- self.assertIn(
- "<h1>&#171;&#964;&#945;&#1041;&#1068;&#8467;&#963;&#187;"
- " &amp; st&#252;ff!:", index
- )
+ self.assertIn("<title>Metrics &amp; stuff!</title>", index)
+ self.assertIn("<h1>Metrics &amp; 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>&#171;&#964;&#945;&#1041;&#1068;&#8467;&#963;&#187;"
+ " numbers", index
+ )
+ self.assertIn(
+ "<h1>&#171;&#964;&#945;&#1041;&#1068;&#8467;&#963;&#187;"
+ " numbers", index
+ )
def test_title_set_in_args(self):
self.create_initial_files()