diff --git a/test/base.py b/test/base.py index 39b48162..2d303446 100644 --- a/test/base.py +++ b/test/base.py @@ -18,10 +18,7 @@ sample_int = 1 # This is used in completion/imports.py class TestBase(unittest.TestCase): - def get_script(self, src, pos=None, path=None): - if pos is None: - lines = src.splitlines() - pos = len(lines), len(lines[-1]) + def get_script(self, src, pos=(None, None), path=None): return jedi.Script(src, pos[0], pos[1], path) def __getattr__(self, name): @@ -29,7 +26,6 @@ class TestBase(unittest.TestCase): if not hasattr(jedi.Script, name): raise AttributeError("Don't use getattr on this without Jedi methods") def action(*args, **kwargs): - print args, kwargs script = self.get_script(*args, **kwargs) return getattr(script, name)() return action diff --git a/test/test_full_name.py b/test/test_full_name.py index f74c76d8..ebce02b5 100644 --- a/test/test_full_name.py +++ b/test/test_full_name.py @@ -4,33 +4,28 @@ Tests for :attr:`.BaseDefinition.full_name`. There are three kinds of test: #. Test classes derived from :class:`MixinTestFullName`. - Child class defines :meth:`.get_definitions` to alter how + Child class defines :attr:`.operation` to alter how the api definition instance is created. #. :class:`TestFullDefinedName` is to test combination of - :attr:`.full_name` and :func:`.defined_names`. + ``obj.full_name`` and ``jedi.defined_names``. #. Misc single-function tests. - """ import textwrap import jedi from jedi import api_classes -from .base import TestBase +from .base import unittest class MixinTestFullName(object): - - def get_definitions(self, source): - """ - Get definition objects of the variable at the end of `source`. - """ - raise NotImplementedError + operation = None def check(self, source, desired): - definitions = self.get_definitions(textwrap.dedent(source)) + script = jedi.Script(textwrap.dedent(source)) + definitions = getattr(script, type(self).operation)() self.assertEqual(definitions[0].full_name, desired) def test_os_path_join(self): @@ -43,9 +38,8 @@ class MixinTestFullName(object): self.check('from os import path', 'os.path') -class TestFullNameWithGotoDefinitions(MixinTestFullName, TestBase): - - get_definitions = TestBase.goto_definitions +class TestFullNameWithGotoDefinitions(MixinTestFullName, unittest.TestCase): + operation = 'goto_definitions' def test_tuple_mapping(self): self.check(""" @@ -54,14 +48,13 @@ class TestFullNameWithGotoDefinitions(MixinTestFullName, TestBase): any_re""", 're.RegexObject') -class TestFullNameWithCompletions(MixinTestFullName, TestBase): - get_definitions = TestBase.completions +class TestFullNameWithCompletions(MixinTestFullName, unittest.TestCase): + operation = 'completions' -class TestFullDefinedName(TestBase): - +class TestFullDefinedName(unittest.TestCase): """ - Test combination of :attr:`.full_name` and :func:`.defined_names`. + Test combination of ``obj.full_name`` and ``jedi.defined_names``. """ def check(self, source, desired):