mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-08 14:54:47 +08:00
Remove a lot of nonsense from refactoring tests
This commit is contained in:
@@ -41,8 +41,11 @@ class Refactoring(object):
|
|||||||
|
|
||||||
def get_changed_files(self):
|
def get_changed_files(self):
|
||||||
return [
|
return [
|
||||||
ChangedFile(self._grammar, path, next(iter(map_)).get_root_node(), map_)
|
ChangedFile(
|
||||||
for path, map_ in self._file_to_node_changes.items()
|
self._grammar, path,
|
||||||
|
module_node=next(iter(map_)).get_root_node(),
|
||||||
|
node_to_str_map=map_
|
||||||
|
) for path, map_ in self._file_to_node_changes.items()
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_renames(self):
|
def get_renames(self):
|
||||||
|
|||||||
18
test/refactor.py
Executable file → Normal file
18
test/refactor.py
Executable file → Normal file
@@ -16,38 +16,32 @@ import jedi
|
|||||||
class RefactoringCase(object):
|
class RefactoringCase(object):
|
||||||
|
|
||||||
def __init__(self, name, code, line_nr, index, path,
|
def __init__(self, name, code, line_nr, index, path,
|
||||||
args, desired):
|
args, desired_diff):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.code = code
|
self.code = code
|
||||||
self.line_nr = line_nr
|
self.line_nr = line_nr
|
||||||
self.index = index
|
self.index = index
|
||||||
self.path = path
|
self.path = path
|
||||||
self._args = args
|
self._args = args
|
||||||
self.desired = desired
|
self.desired_diff = desired_diff
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def refactor_type(self):
|
def refactor_type(self):
|
||||||
f_name = os.path.basename(self.path)
|
f_name = os.path.basename(self.path)
|
||||||
return f_name.replace('.py', '')
|
return f_name.replace('.py', '')
|
||||||
|
|
||||||
def refactor(self):
|
def calculate_diff(self):
|
||||||
script = jedi.Script(self.code, path=self.path)
|
script = jedi.Script(self.code, path=self.path)
|
||||||
refactor_func = getattr(script, self.refactor_type)
|
refactor_func = getattr(script, self.refactor_type)
|
||||||
return refactor_func(self.line_nr, self.index, *self._args)
|
refactor_object = refactor_func(self.line_nr, self.index, *self._args)
|
||||||
|
|
||||||
def run(self):
|
|
||||||
refactor_object = self.refactor()
|
|
||||||
return refactor_object.get_diff()
|
return refactor_object.get_diff()
|
||||||
|
|
||||||
def check(self):
|
|
||||||
return self.run() == self.desired
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<%s: %s:%s>' % (self.__class__.__name__,
|
return '<%s: %s:%s>' % (self.__class__.__name__,
|
||||||
self.name, self.line_nr - 1)
|
self.name, self.line_nr - 1)
|
||||||
|
|
||||||
|
|
||||||
def collect_file_tests(code, path, lines_to_execute):
|
def _collect_file_tests(code, path, lines_to_execute):
|
||||||
r = r'^# -{5} ?([^\n]*)\n((?:(?!\n# \+{5}).)*\n)' \
|
r = r'^# -{5} ?([^\n]*)\n((?:(?!\n# \+{5}).)*\n)' \
|
||||||
r'# \+{5}\n((?:(?!\n# -{5}).)*\n)'
|
r'# \+{5}\n((?:(?!\n# -{5}).)*\n)'
|
||||||
for match in re.finditer(r, code, re.DOTALL | re.MULTILINE):
|
for match in re.finditer(r, code, re.DOTALL | re.MULTILINE):
|
||||||
@@ -80,5 +74,5 @@ def collect_dir_tests(base_dir, test_files):
|
|||||||
path = os.path.join(base_dir, f_name)
|
path = os.path.join(base_dir, f_name)
|
||||||
with open(path) as f:
|
with open(path) as f:
|
||||||
code = f.read()
|
code = f.read()
|
||||||
for case in collect_file_tests(code, path, lines_to_execute):
|
for case in _collect_file_tests(code, path, lines_to_execute):
|
||||||
yield case
|
yield case
|
||||||
|
|||||||
@@ -58,5 +58,5 @@ def test_refactor(refactor_case):
|
|||||||
|
|
||||||
:type refactor_case: :class:`.refactor.RefactoringCase`
|
:type refactor_case: :class:`.refactor.RefactoringCase`
|
||||||
"""
|
"""
|
||||||
diff = refactor_case.run()
|
diff = refactor_case.calculate_diff()
|
||||||
assert_case_equal(refactor_case, diff, refactor_case.desired)
|
assert_case_equal(refactor_case, diff, refactor_case.desired_diff)
|
||||||
|
|||||||
Reference in New Issue
Block a user