From 15bb9b29a2cd9fc2c3a411f153edca7a86dfb6a4 Mon Sep 17 00:00:00 2001 From: Linus Pithan Date: Tue, 2 Jul 2019 10:52:16 +0200 Subject: [PATCH] adding `test_kwarg_defaults` to point out missing default value of kwargs in certain cases --- test/test_api/test_call_signatures.py | 55 +++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/test/test_api/test_call_signatures.py b/test/test_api/test_call_signatures.py index 28cb619d..2c4c973a 100644 --- a/test/test_api/test_call_signatures.py +++ b/test/test_api/test_call_signatures.py @@ -394,6 +394,61 @@ def test_keyword_argument_index(Script, environment): assert get(both + 'foo(a, b, c').index == 0 +def test_kwarg_defaults(Script, environment): + from jedi import Interpreter + + def foo(kwarg="bla", kwarg1=1): + pass + + class Klass: + def foo(self, kwarg="bla", kwarg1=1): + pass + + klass = Klass() + + loc = dict() + loc['foo'] = foo + loc['klass'] = klass + + signatures = Interpreter('foo(', namespaces=[loc]).call_signatures() + assert signatures[0].params[0].description == 'param kwarg="bla"' + assert signatures[0].params[1].description == 'param kwarg1=1' + + signatures = Interpreter('klass.foo(', namespaces=[loc]).call_signatures() + assert signatures[0].params[0].description == 'param kwarg="bla"' + assert signatures[0].params[1].description == 'param kwarg1=1' + + src = """ +def foo(kwarg="bla", kwarg1=1): + pass + +class Klass: + def foo(self, kwarg="bla", kwarg1=1): + pass + +klass = Klass() + + """ + signatures = Script(src+"foo(").call_signatures() + assert signatures[0].params[0].description == 'param kwarg="bla"' + assert signatures[0].params[1].description == 'param kwarg1=1' + + signatures = Script(src+"klass.foo(").call_signatures() + assert signatures[0].params[0].description == 'param kwarg="bla"' + assert signatures[0].params[1].description == 'param kwarg1=1' + + loc = dict() + exec(src, None, loc) + + signatures = Interpreter('foo(', namespaces=[loc]).call_signatures() + assert signatures[0].params[0].description == 'param kwarg="bla"' + assert signatures[0].params[1].description == 'param kwarg1=1' + + signatures = Interpreter('klass.foo(', namespaces=[loc]).call_signatures() + assert signatures[0].params[0].description == 'param kwarg="bla"' + assert signatures[0].params[1].description == 'param kwarg1=1' + + def test_bracket_start(Script): def bracket_start(src): signatures = Script(src).call_signatures()