From 9b610c976064b8369b55552a351cb54c5d6e108a Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 13 Jun 2019 09:41:23 +0200 Subject: [PATCH] Make sure there are proper tests for goto_assignments with prefer_stubs and only_stubs --- test/test_evaluate/test_gradual/test_stubs.py | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/test/test_evaluate/test_gradual/test_stubs.py b/test/test_evaluate/test_gradual/test_stubs.py index 1922cfd9..4dd09ba3 100644 --- a/test/test_evaluate/test_gradual/test_stubs.py +++ b/test/test_evaluate/test_gradual/test_stubs.py @@ -6,6 +6,7 @@ from jedi.api.project import Project from test.helpers import root_dir +@pytest.mark.parametrize('type_', ['goto', 'infer']) @pytest.mark.parametrize('way', ['direct', 'indirect']) @pytest.mark.parametrize( 'kwargs', [ @@ -15,37 +16,48 @@ from test.helpers import root_dir ] ) @pytest.mark.parametrize( - ('code', 'full_name', 'has_stub', 'has_python'), [ - ['import os; os.walk', 'os.walk', True, True], - ['from collections import Counter', 'collections.Counter', True, True], - ['from collections', 'collections', True, True], - ['from collections import Counter; Counter', 'collections.Counter', True, True], - ['from collections import Counter; Counter()', 'collections.Counter', True, True], + ('code', 'full_name', 'has_stub', 'has_python', 'goto_changes'), [ + ['import os; os.walk', 'os.walk', True, True, {}], + ['from collections import Counter', 'collections.Counter', True, True, {}], + ['from collections', 'collections', True, True, {}], + ['from collections import Counter; Counter', 'collections.Counter', True, True, {}], + ['from collections import Counter; Counter()', 'collections.Counter', True, True, {}], ['from collections import Counter; Counter.most_common', - 'collections.Counter.most_common', True, True], + 'collections.Counter.most_common', True, True, {}], - ['from keyword import kwlist; kwlist', 'typing.Sequence', True, True], - ['from keyword import kwlist', 'typing.Sequence', True, True], + ['from keyword import kwlist; kwlist', 'typing.Sequence', True, True, + {'full_name': 'keyword.kwlist'}], + ['from keyword import kwlist', 'typing.Sequence', True, True, + {'full_name': 'keyword.kwlist'}], - ['import with_stub', 'with_stub', True, True], - ['import with_stub', 'with_stub', True, True], - ['import with_stub_folder.python_only', 'with_stub_folder.python_only', False, True], - ['import stub_only', 'stub_only', True, False], + ['import with_stub', 'with_stub', True, True, {}], + ['import with_stub', 'with_stub', True, True, {}], + ['import with_stub_folder.python_only', 'with_stub_folder.python_only', False, True, {}], + ['import stub_only', 'stub_only', True, False, {}], ]) -def test_infer_and_goto(Script, code, full_name, has_stub, has_python, way, kwargs): +def test_infer_and_goto(Script, code, full_name, has_stub, has_python, way, + kwargs, type_, goto_changes): project = Project(os.path.join(root_dir, 'test', 'completion', 'stub_folder')) s = Script(code, _project=project) prefer_stubs = kwargs['prefer_stubs'] only_stubs = kwargs['only_stubs'] + if type_ == 'goto': + full_name = goto_changes.get('full_name', full_name) if way == 'direct': - defs = s.goto_definitions(**kwargs) + if type_ == 'goto': + defs = s.goto_assignments(follow_imports=True, **kwargs) + else: + defs = s.goto_definitions(**kwargs) else: goto_defs = s.goto_assignments( # Prefering stubs when we want to go to python and vice versa prefer_stubs=not (prefer_stubs or only_stubs), follow_imports=True, ) - defs = [d for goto_def in goto_defs for d in goto_def.infer(**kwargs)] + if type_ == 'goto': + defs = [d for goto_def in goto_defs for d in goto_def.goto_assignments(**kwargs)] + else: + defs = [d for goto_def in goto_defs for d in goto_def.infer(**kwargs)] if not has_stub and only_stubs: assert not defs