[svn r37739] Made that only the first two lines of a source file are examined for the

encoding.

--HG--
branch : trunk
This commit is contained in:
guido 2007-02-01 15:57:34 +01:00
parent ec734026cc
commit d9572239a8
2 changed files with 20 additions and 2 deletions

View File

@ -261,8 +261,15 @@ def get_module_encoding(path):
if path[-1] in ['c', 'o']:
path = path[:-1]
fpath = py.path.local(path)
code = fpath.read()
match = _reg_enc.search(code)
fp = fpath.open()
lines = []
try:
# encoding is only allowed in the first two lines
for i in range(2):
lines.append(fp.readline())
finally:
fp.close()
match = _reg_enc.search('\n'.join(lines))
if match:
return match.group(1)
return 'ISO-8859-1'

View File

@ -177,3 +177,14 @@ def test_get_encoding_for_real():
""")))
assert get_module_encoding(fpath.strpath) == 'UTF-8'
def test_get_encoding_matching_pattern_elsewhere():
temp = py.test.ensuretemp('test_get_encoding')
fpath = temp.join('matching_pattern.py')
fpath.write(str(py.code.Source("""\
#!/usr/bin/env python
def foo(coding=None):
pass
""")))
assert get_module_encoding(fpath.strpath) == 'ISO-8859-1'