diff --git a/_compatibility.py b/_compatibility.py index 7c7cb699..14d849e1 100644 --- a/_compatibility.py +++ b/_compatibility.py @@ -50,6 +50,13 @@ except AttributeError: else: property = property +# unicode function +try: + unicode = unicode +except NameError: + def unicode(s): + return s.decode("utf-8") + # Borrowed from Ned Batchelder if sys.hexversion > 0x03000000: def exec_function(source, global_map): diff --git a/ftest.py b/ftest.py index 1dab12dd..842b8d07 100755 --- a/ftest.py +++ b/ftest.py @@ -3,7 +3,7 @@ import functions functions.debug.debug_function = functions.debug.print_to_stdout -#functions.debug.ignored_modules = ['parsing', 'builtin'] +functions.debug.ignored_modules = ['parsing', 'builtin'] #functions.debug.ignored_modules = ['parsing', 'builtin', 'evaluate', 'modules'] functions.modules.builtin.module_find_path.insert(0, '.') diff --git a/parsing.py b/parsing.py index 5aa3253a..592fa4f3 100644 --- a/parsing.py +++ b/parsing.py @@ -1276,7 +1276,6 @@ class PyFuzzyParser(object): # check again for unindented stuff. this is true for syntax # errors. only check for names, because thats relevant here. If # some docstrings are not indented, I don't care. - print(self.scope.indent, self.scope) while indent <= self.scope.indent \ and (token_type == tokenize.NAME or tok in ['(', '['])\ and self.scope != self.top: diff --git a/test/run.py b/test/run.py index ad993d72..dfa720ba 100755 --- a/test/run.py +++ b/test/run.py @@ -2,12 +2,13 @@ import os import sys import re -import StringIO +from io import BytesIO import traceback os.chdir('../') sys.path.append('.') import functions +from _compatibility import unicode #functions.set_debug_function(functions.debug.print_to_stdout) @@ -80,7 +81,8 @@ def completion_test(source): fails = 0 tests = 0 correct = None - for line_nr, line in enumerate(StringIO.StringIO(source)): + for line_nr, line in enumerate(BytesIO(source.encode())): + line = unicode(line) line_nr += 1 if correct: # if a list is wanted, use the completion test, otherwise the @@ -95,7 +97,7 @@ def completion_test(source): else: try: correct = re.search(r'(?:^|\s)#\?\s*([^\n]+)', line).group(1) - except: + except AttributeError: correct = None else: # reset the test, if only one specific test is wanted