From 7e717d9014d7b1e06e00024c2ddf1e14d081ce58 Mon Sep 17 00:00:00 2001 From: spg Date: Wed, 3 Oct 2018 11:30:31 -0700 Subject: [PATCH 1/2] getstatementrange_ast() causes UnicodeEncodeError on files containing non-ascii characters --- src/_pytest/_code/source.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_pytest/_code/source.py b/src/_pytest/_code/source.py index 3b037b7d47d..93e2c47e347 100644 --- a/src/_pytest/_code/source.py +++ b/src/_pytest/_code/source.py @@ -337,7 +337,7 @@ def get_statement_startend2(lineno, node): def getstatementrange_ast(lineno, source, assertion=False, astnode=None): if astnode is None: - content = str(source) + content = unicode(source) astnode = compile(content, "source", "exec", 1024) # 1024 for AST start, end = get_statement_startend2(lineno, astnode) From f818e2a153d0b5c0e20bda45e8b0576aabc14ba9 Mon Sep 17 00:00:00 2001 From: spg Date: Wed, 3 Oct 2018 11:57:51 -0700 Subject: [PATCH 2/2] PY2 switch --- src/_pytest/_code/source.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/_pytest/_code/source.py b/src/_pytest/_code/source.py index 93e2c47e347..507683f1312 100644 --- a/src/_pytest/_code/source.py +++ b/src/_pytest/_code/source.py @@ -337,7 +337,10 @@ def get_statement_startend2(lineno, node): def getstatementrange_ast(lineno, source, assertion=False, astnode=None): if astnode is None: - content = unicode(source) + if six.PY2: + content = unicode(source) + else: + content = str(source) astnode = compile(content, "source", "exec", 1024) # 1024 for AST start, end = get_statement_startend2(lineno, astnode)