github.com/tiagovtristao/plz@v13.4.0+incompatible/tools/build_langserver/langserver/signature_test.go (about) 1 package langserver 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/thought-machine/please/tools/build_langserver/lsp" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestGetSignaturesEmptyCall(t *testing.T) { 13 ctx := context.Background() 14 15 sig := handler.getSignatures(ctx, sigURI, lsp.Position{Line: 0, Character: 10}) 16 assert.Equal(t, 0, sig.ActiveParameter) 17 assert.True(t, paramInList(sig.Signatures[0].Parameters, "name:str")) 18 assert.True(t, paramInList(sig.Signatures[0].Parameters, "visibility:list=None")) 19 20 expectedLabel := "(name:str, srcs:list=[], asm_srcs:list=[], out:str=None, deps:list=[],\n" + 21 " visibility:list=None, test_only:bool&testonly=False, static:bool=CONFIG.GO_DEFAULT_STATIC,\n" + 22 " filter_srcs:bool=True, definitions:str|list|dict=None)" 23 assert.Equal(t, expectedLabel, sig.Signatures[0].Label) 24 } 25 26 func TestGetSignaturesTwoParams(t *testing.T) { 27 ctx := context.Background() 28 29 sig := handler.getSignatures(ctx, sigURI, lsp.Position{Line: 3, Character: 37}) 30 assert.Equal(t, 7, sig.ActiveParameter) 31 assert.True(t, paramInList(sig.Signatures[0].Parameters, "name:str")) 32 assert.True(t, paramInList(sig.Signatures[0].Parameters, "visibility:list=None")) 33 assert.True(t, paramInList(sig.Signatures[0].Parameters, "test_only:bool&testonly=False")) 34 } 35 36 func TestGetSignaturesMethods(t *testing.T) { 37 ctx := context.Background() 38 39 // test for string method 40 sig := handler.getSignatures(ctx, sigURI, lsp.Position{Line: 5, Character: 27}) 41 assert.Equal(t, 0, sig.ActiveParameter) 42 assert.True(t, paramInList(sig.Signatures[0].Parameters, "old:str")) 43 assert.False(t, paramInList(sig.Signatures[0].Parameters, "self:str")) 44 45 // test for dict method 46 sig = handler.getSignatures(ctx, sigURI, lsp.Position{Line: 6, Character: 19}) 47 assert.Equal(t, 0, sig.ActiveParameter) 48 assert.True(t, paramInList(sig.Signatures[0].Parameters, "key:str")) 49 assert.True(t, paramInList(sig.Signatures[0].Parameters, "default=None")) 50 assert.False(t, paramInList(sig.Signatures[0].Parameters, "self:dict")) 51 } 52 53 func TestGetSignatureWithInCall(t *testing.T) { 54 ctx := context.Background() 55 56 sig := handler.getSignatures(ctx, sigURI, lsp.Position{Line: 10, Character: 14}) 57 assert.Equal(t, 0, sig.ActiveParameter) 58 assert.True(t, paramInList(sig.Signatures[0].Parameters, "include:list")) 59 assert.True(t, paramInList(sig.Signatures[0].Parameters, "exclude:list&excludes=[]")) 60 } 61 62 func TestGetSignatureWithAssignment(t *testing.T) { 63 ctx := context.Background() 64 65 sig := handler.getSignatures(ctx, sigURI, lsp.Position{Line: 13, Character: 12}) 66 assert.Equal(t, 0, sig.ActiveParameter) 67 assert.True(t, paramInList(sig.Signatures[0].Parameters, "include:list")) 68 assert.True(t, paramInList(sig.Signatures[0].Parameters, "exclude:list&excludes=[]")) 69 } 70 71 func TestGetSignatureWithSubinclude(t *testing.T) { 72 ctx := context.Background() 73 74 sig := handler.getSignatures(ctx, subincludeURI, lsp.Position{Line: 3, Character: 24}) 75 assert.Equal(t, 1, sig.ActiveParameter) 76 assert.True(t, paramInList(sig.Signatures[0].Parameters, "expect_file_doesnt_exist=None")) 77 assert.True(t, paramInList(sig.Signatures[0].Parameters, "expected_output=None")) 78 assert.True(t, paramInList(sig.Signatures[0].Parameters, "pre_cmd=None")) 79 } 80 81 /*************************************** 82 * Helpers 83 ***************************************/ 84 func paramInList(params []lsp.ParameterInformation, label string) bool { 85 for _, i := range params { 86 if i.Label == label { 87 return true 88 } 89 } 90 91 return false 92 }