diff --git a/test/completion/arrays.py b/test/completion/arrays.py index c1fbd426..fa197c37 100644 --- a/test/completion/arrays.py +++ b/test/completion/arrays.py @@ -224,7 +224,7 @@ f() d = dict({'a':''}) def y(a): return a -#? +#? y(**d) # problem with more complicated casts @@ -297,7 +297,7 @@ list(a)[1] #? int() str() list(a)[0] -#? +#? set(a)[0] #? int() str() diff --git a/test/completion/basic.py b/test/completion/basic.py index ee561a56..edd8ca24 100644 --- a/test/completion/basic.py +++ b/test/completion/basic.py @@ -204,7 +204,7 @@ gen = (i for i in (1,)) #? int() next(gen) -#? +#? gen[0] gen = (a for arr in [[1.0]] for a in arr) @@ -275,7 +275,7 @@ def a(): """ pass -#? +#? # str literals in comment """ upper # ----------------- diff --git a/test/completion/classes.py b/test/completion/classes.py index cb7a801d..7c6c4ff9 100644 --- a/test/completion/classes.py +++ b/test/completion/classes.py @@ -278,10 +278,10 @@ def Recursion(): self.a = self.a self.b = self.b.recurse() -#? +#? Recursion().a -#? +#? Recursion().b # ----------------- @@ -323,15 +323,15 @@ getattr(str(), 'upper') getattr(str, 'upper') # some strange getattr calls -#? +#? getattr(str, 1) -#? +#? getattr() -#? +#? getattr(str) -#? +#? getattr(getattr, 1) -#? +#? getattr(str, []) @@ -374,7 +374,7 @@ class PrivateVar(): self.__var #? [] PrivateVar().__var -#? +#? PrivateVar().__var # ----------------- @@ -384,7 +384,7 @@ class Super(object): a = 3 class TestSuper(Super): - #? + #? super() def test(self): #? Super() @@ -395,7 +395,7 @@ class TestSuper(Super): #? Super() super() def a(): - #? + #? super() diff --git a/test/completion/functions.py b/test/completion/functions.py index b9b31c3a..86b36c58 100644 --- a/test/completion/functions.py +++ b/test/completion/functions.py @@ -205,7 +205,7 @@ exe[0] exe[1] # illegal args (TypeError) -#? +#? args_func(*1)[0] # iterator #? int() diff --git a/test/run.py b/test/run.py index 12aa520e..e1e2b132 100755 --- a/test/run.py +++ b/test/run.py @@ -236,7 +236,7 @@ def collect_file_tests(lines, lines_to_execute): correct = None test_type = None for line_nr, line in enumerate(lines, 1): - if correct: + if correct is not None: r = re.match('^(\d+)\s*(.*)$', correct) if r: column = int(r.group(1)) @@ -255,10 +255,13 @@ def collect_file_tests(lines, lines_to_execute): correct = None else: try: - r = re.search(r'(?:^|(?<=\s))#([?!<])\s*([^\n]+)', line) + r = re.search(r'(?:^|(?<=\s))#([?!<])\s*([^\n]*)', line) # test_type is ? for completion and ! for goto_assignments test_type = r.group(1) correct = r.group(2) + # Quick hack to make everything work (not quite a bloody unicorn hack though). + if correct == '': + correct = ' ' start = r.start() except AttributeError: correct = None