The encoding parameter should be used again (includes test), fixes #1167

This commit is contained in:
Dave Halter
2018-07-09 18:25:28 +02:00
parent aa4dcc1631
commit cef769ecd8
3 changed files with 10 additions and 3 deletions

View File

@@ -112,9 +112,10 @@ class Script(object):
self._module_node, source = self._evaluator.parse_and_get_code(
code=source,
path=self.path,
encoding=encoding,
cache=False, # No disk cache, because the current script often changes.
diff_cache=settings.fast_parser,
cache_path=settings.cache_directory
cache_path=settings.cache_directory,
)
debug.speed('parsed')
self._code_lines = parso.split_lines(source, keepends=True)

View File

@@ -373,12 +373,12 @@ class Evaluator(object):
scope_node = parent_scope(node)
return from_scope_node(scope_node, is_nested=True, node_is_object=node_is_object)
def parse_and_get_code(self, code=None, path=None, **kwargs):
def parse_and_get_code(self, code=None, path=None, encoding='utf-8', **kwargs):
if self.allow_different_encoding:
if code is None:
with open(path, 'rb') as f:
code = f.read()
code = python_bytes_to_unicode(code, errors='replace')
code = python_bytes_to_unicode(code, encoding=encoding, errors='replace')
return self.grammar.parse(code=code, path=path, **kwargs), code

View File

@@ -72,3 +72,9 @@ def test_wrong_encoding(Script, tmpdir):
c, = Script('import x; x.foo', sys_path=[tmpdir.strpath]).completions()
assert c.name == 'foobar'
def test_encoding_parameter(Script):
name = u('')
s = Script(name.encode('latin-1'), encoding='latin-1')
assert s._module_node.get_code() == name