##// END OF EJS Templates
bugfix. parse of non python code returns a tuple as expected
Martín Gaitán -
Show More
@@ -98,11 +98,12 b' def extract_symbols(code, symbols):'
98 >>> extract_symbols(code, 'A,b,z')
98 >>> extract_symbols(code, 'A,b,z')
99 (["class A: pass", "def b(): return 42"], ['z'])
99 (["class A: pass", "def b(): return 42"], ['z'])
100 """
100 """
101 symbols = symbols.split(',')
101 try:
102 try:
102 py_code = ast.parse(code)
103 py_code = ast.parse(code)
103 except SyntaxError:
104 except SyntaxError:
104 # ignores non python code
105 # ignores non python code
105 return []
106 return [], symbols
106
107
107 marks = [(getattr(s, 'name', None), s.lineno) for s in py_code.body]
108 marks = [(getattr(s, 'name', None), s.lineno) for s in py_code.body]
108 code = code.split('\n')
109 code = code.split('\n')
@@ -126,7 +127,7 b' def extract_symbols(code, symbols):'
126 # fill a list with chunks of codes for each requested symbol
127 # fill a list with chunks of codes for each requested symbol
127 blocks = []
128 blocks = []
128 not_found = []
129 not_found = []
129 for symbol in symbols.split(','):
130 for symbol in symbols:
130 if symbol in symbols_lines:
131 if symbol in symbols_lines:
131 start, end = symbols_lines[symbol]
132 start, end = symbols_lines[symbol]
132 blocks.append('\n'.join(code[start:end]) + '\n')
133 blocks.append('\n'.join(code[start:end]) + '\n')
@@ -79,7 +79,7 b' def test_extract_symbols_ignores_non_python_code():'
79 "def hello\n"
79 "def hello\n"
80 "puts 'Hello world'\n"
80 "puts 'Hello world'\n"
81 "end")
81 "end")
82 nt.assert_equal(code.extract_symbols(source, "hello"), [])
82 nt.assert_equal(code.extract_symbols(source, "hello"), ([], ['hello']))
83
83
84
84
85 def test_rehashx():
85 def test_rehashx():
General Comments 0
You need to be logged in to leave comments. Login now