diff options
author | Anthony Sottile <asottile@umich.edu> | 2014-06-29 14:35:02 -0700 |
---|---|---|
committer | Anthony Sottile <asottile@umich.edu> | 2014-06-29 14:35:02 -0700 |
commit | 460d303ed2361abe554da075c184a370d7d54701 (patch) | |
tree | f01bcc1a39146c32f9ce442b442d18b21cc66d94 | |
parent | be5178fda38750c0aae78061bf1b1bf3397a467d (diff) | |
download | python-coveragepy-git-460d303ed2361abe554da075c184a370d7d54701.tar.gz |
Fix non-comment encoding detection.
--HG--
branch : fix_source_encoding
-rw-r--r-- | coverage/phystokens.py | 2 | ||||
-rw-r--r-- | tests/test_phystokens.py | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/coverage/phystokens.py b/coverage/phystokens.py index e79ce01f..867388f7 100644 --- a/coverage/phystokens.py +++ b/coverage/phystokens.py @@ -120,7 +120,7 @@ def source_encoding(source): # This is mostly code adapted from Py3.2's tokenize module. - cookie_re = re.compile(r"coding[:=]\s*([-\w.]+)") + cookie_re = re.compile(r"^\s*#.*coding[:=]\s*([-\w.]+)") # Do this so the detect_encode code we copied will work. readline = iter(source.splitlines(True)).next diff --git a/tests/test_phystokens.py b/tests/test_phystokens.py index e15400b6..4755c167 100644 --- a/tests/test_phystokens.py +++ b/tests/test_phystokens.py @@ -97,6 +97,11 @@ if sys.version_info < (3, 0): source = "# This Python file uses this encoding: utf-8\n" self.assertEqual(source_encoding(source), 'utf-8') + def test_detect_source_encoding_not_in_comment(self): + # Should not detect anything here + source = 'def parse(src, encoding=None):\n pass' + self.assertEqual(source_encoding(source), 'ascii') + def test_detect_source_encoding_on_second_line(self): # A coding declaration should be found despite a first blank line. source = "\n# coding=cp850\n\n" |