diff --git a/test/base.py b/test/base.py index f78e939b..3557d738 100644 --- a/test/base.py +++ b/test/base.py @@ -4,13 +4,15 @@ import time import sys import os from os.path import abspath, dirname - -sys.path.insert(0, abspath(dirname(abspath(__file__)) + '/..')) -os.chdir(os.path.dirname(os.path.abspath(__file__)) + '/../jedi') +import functools import jedi from jedi import debug + +test_dir = dirname(abspath(__file__)) + + test_sum = 0 t_start = time.time() # Sorry I didn't use argparse here. It's because argparse is not in the @@ -77,3 +79,24 @@ def print_summary(): (tests_fail, test_sum, time.time() - t_start)) for s in summary: print(s) + + +def cwd_at(path): + """ + Decorator to run function at `path`. + + :type path: str + :arg path: relative path from repository root (e.g., ``'jedi'``). + """ + def decorator(func): + @functools.wraps(func) + def wrapper(*args, **kwds): + try: + oldcwd = os.getcwd() + repo_root = os.path.dirname(test_dir) + os.chdir(os.path.join(repo_root, path)) + return func(*args, **kwds) + finally: + os.chdir(oldcwd) + return wrapper + return decorator diff --git a/test/refactor.py b/test/refactor.py index 74228ecb..4f01edd7 100755 --- a/test/refactor.py +++ b/test/refactor.py @@ -107,7 +107,7 @@ def test_dir(refactoring_test_dir): if __name__ == '__main__': - refactoring_test_dir = '../test/refactor' + refactoring_test_dir = os.path.join(base.test_dir, 'refactor') test_files = base.get_test_list() test_dir(refactoring_test_dir) diff --git a/test/regression.py b/test/regression.py index 8f01ea14..2212ba05 100755 --- a/test/regression.py +++ b/test/regression.py @@ -11,7 +11,7 @@ import functools import itertools import os -from base import TestBase +from base import TestBase, cwd_at import jedi from jedi._compatibility import is_py25, utf8, unicode @@ -131,6 +131,7 @@ class TestRegression(TestBase): assert self.definition("import sys_blabla", (1, 8)) == [] assert len(self.definition("import sys", (1, 8))) == 1 + @cwd_at('jedi') def test_complete_on_empty_import(self): # should just list the files in the directory assert 10 < len(self.complete("from .", path='')) < 30 @@ -234,6 +235,7 @@ class TestRegression(TestBase): s = """def foo(""" assert self.function_definition(s) is None + @cwd_at('jedi') def test_add_dynamic_mods(self): api.settings.additional_dynamic_modules = ['dynamic.py'] # Fictional module that defines a function. diff --git a/test/run.py b/test/run.py index c3d53455..289f7ce5 100755 --- a/test/run.py +++ b/test/run.py @@ -354,7 +354,7 @@ if __name__ == '__main__': test_files = base.get_test_list() # completion tests: - completion_test_dir = '../test/completion' + completion_test_dir = os.path.join(base.test_dir, 'completion') # execute tests test_dir(completion_test_dir)