Skip to content

Commit ccab567

Browse files
authored
Merge pull request #21 from bstaletic/sig-tests
[READY] Signature help tests
2 parents 9ff55e0 + 803814b commit ccab567

File tree

3 files changed

+112
-12
lines changed

3 files changed

+112
-12
lines changed

ycmd/tests/clangd/signature_help_test.py

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,9 @@
2727

2828
import json
2929
import requests
30+
from mock import patch
3031
from nose.tools import eq_
31-
from hamcrest import ( assert_that,
32-
contains,
33-
empty,
34-
has_entries )
32+
from hamcrest import assert_that, contains, empty, has_entries
3533

3634
from ycmd.tests.clangd import PathToTestFile, SharedYcmd, IsolatedYcmd
3735
from ycmd.tests.test_utils import ( EMPTY_SIGNATURE_HELP,
@@ -495,7 +493,7 @@ def Signature_Help_Trigger_After_OtherTrigger_ReTrigger_test( app ):
495493

496494

497495
@SharedYcmd
498-
def Signature_Help_Trigger_JustBeforeClose( app ):
496+
def Signature_Help_Trigger_JustBeforeClose_test( app ):
499497
RunTest( app, {
500498
'description': 'Last argument, before )',
501499
'request': {
@@ -512,14 +510,21 @@ def Signature_Help_Trigger_JustBeforeClose( app ):
512510
'errors': empty(),
513511
'signature_help': has_entries( {
514512
'activeSignature': 0,
515-
'activeParameter': 2,
513+
'activeParameter': 0,
516514
'signatures': contains(
515+
SignatureMatcher( 'make_drink(TypeOfDrink type, '
516+
'Temperature temp, '
517+
'int sugargs) -> Drink &', [
518+
ParameterMatcher( 11, 27 ),
519+
ParameterMatcher( 29, 45 ),
520+
ParameterMatcher( 47, 58 ),
521+
] ),
517522
SignatureMatcher( 'make_drink(TypeOfDrink type, '
518523
'double fizziness, '
519524
'Flavour Flavour) -> Drink &', [
520-
ParameterMatcher( 'TypeOfDrink type' ),
521-
ParameterMatcher( 'double fizziness' ),
522-
ParameterMatcher( 'Flavour Flavour' ),
525+
ParameterMatcher( 11, 27 ),
526+
ParameterMatcher( 29, 45 ),
527+
ParameterMatcher( 47, 62 ),
523528
] ),
524529
)
525530
} ),
@@ -529,7 +534,7 @@ def Signature_Help_Trigger_JustBeforeClose( app ):
529534

530535

531536
@SharedYcmd
532-
def Signature_Help_Clears_After_EndFunction( app ):
537+
def Signature_Help_Clears_After_EndFunction_test( app ):
533538
RunTest( app, {
534539
'description': 'Empty response on )',
535540
'request': {
@@ -551,7 +556,7 @@ def Signature_Help_Clears_After_EndFunction( app ):
551556

552557

553558
@SharedYcmd
554-
def Signature_Help_Clears_After_Function_Call( app ):
559+
def Signature_Help_Clears_After_Function_Call_test( app ):
555560
RunTest( app, {
556561
'description': 'Empty response after )',
557562
'request': {
@@ -570,3 +575,27 @@ def Signature_Help_Clears_After_Function_Call( app ):
570575
} ),
571576
},
572577
} )
578+
579+
580+
@patch( 'ycmd.completers.completer.Completer.ShouldUseSignatureHelpNow',
581+
return_value = True )
582+
@patch( 'ycmd.completers.language_server.language_server_completer.'
583+
'LanguageServerCompleter._ServerIsInitialized', return_value = False )
584+
@IsolatedYcmd()
585+
def Signature_Help_Server_Not_Initialized_test( app, *args ):
586+
filepath = PathToTestFile( 'general_fallback', 'make_drink.cc' )
587+
request = {
588+
'filetype' : 'cpp',
589+
'filepath' : filepath,
590+
'line_num' : 7,
591+
'column_num': 71,
592+
'signature_help_state': 'INACTIVE',
593+
'contents': ReadFile( filepath )
594+
}
595+
response = app.post_json( '/signature_help',
596+
BuildRequest( **request ),
597+
expect_errors = True )
598+
assert_that( response.json, has_entries( {
599+
'errors': empty(),
600+
'signature_help': EMPTY_SIGNATURE_HELP,
601+
} ) )

ycmd/tests/language_server/generic_completer_test.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import requests
2929
from hamcrest import ( assert_that,
3030
contains,
31+
empty,
3132
equal_to,
3233
has_entries,
3334
has_entry,
@@ -243,3 +244,32 @@ def GenericLSPCompleter_DebugInfo_CustomRoot_test( app, *args ):
243244
} ) ),
244245
} ) )
245246
)
247+
248+
249+
@IsolatedYcmd( { 'language_server':
250+
[ { 'name': 'foo',
251+
'filetypes': [ 'foo' ],
252+
'project_root_files': [ 'proj_root' ],
253+
'cmdline': [ 'node', PATH_TO_GENERIC_COMPLETER, '--stdio' ] } ] } )
254+
def GenericLSPCompleter_SignatureHelp_NoTriggers_test( app ):
255+
test_file = PathToTestFile(
256+
'generic_server', 'foo', 'bar', 'baz', 'test_file' )
257+
request = BuildRequest( filepath = test_file,
258+
filetype = 'foo',
259+
line_num = 1,
260+
column_num = 1,
261+
contents = '',
262+
event_name = 'FileReadyToParse' )
263+
264+
app.post_json( '/event_notification', request )
265+
WaitUntilCompleterServerReady( app, 'foo' )
266+
request.pop( 'event_name' )
267+
response = app.post_json( '/signature_help', request ).json
268+
assert_that( response, has_entries( {
269+
'signature_help': has_entries( {
270+
'activeSignature': 0,
271+
'activeParameter': 0,
272+
'signatures': empty()
273+
} ),
274+
'errors': empty()
275+
} ) )

ycmd/tests/misc_handlers_test.py

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,14 @@
2525

2626
from hamcrest import ( any_of, assert_that, contains, empty, equal_to,
2727
has_entries, instance_of )
28+
from mock import patch
2829
import requests
2930

3031
from ycmd.tests import IsolatedYcmd, PathToTestFile, SharedYcmd
31-
from ycmd.tests.test_utils import BuildRequest, DummyCompleter, PatchCompleter
32+
from ycmd.tests.test_utils import ( BuildRequest,
33+
DummyCompleter,
34+
PatchCompleter,
35+
ErrorMatcher )
3236

3337

3438
@SharedYcmd
@@ -212,3 +216,40 @@ def MiscHandlers_ReceiveMessages_NotSupportedByCompleter_test( app ):
212216
request_data = BuildRequest( filetype = 'dummy_filetype' )
213217
assert_that( app.post_json( '/receive_messages', request_data ).json,
214218
equal_to( False ) )
219+
220+
221+
@SharedYcmd
222+
@patch( 'ycmd.completers.completer.Completer.ShouldUseSignatureHelpNow',
223+
return_value = True )
224+
def MiscHandlers_SignatureHelp_DefaultEmptyResponse_test( app, *args ):
225+
with PatchCompleter( DummyCompleter, filetype = 'dummy_filetype' ):
226+
request_data = BuildRequest( filetype = 'dummy_filetype' )
227+
response = app.post_json( '/signature_help', request_data ).json
228+
assert_that( response, has_entries( {
229+
'signature_help': has_entries( {
230+
'activeSignature': 0,
231+
'activeParameter': 0,
232+
'signatures': empty()
233+
} ),
234+
'errors': empty()
235+
} ) )
236+
237+
238+
@SharedYcmd
239+
@patch( 'ycmd.completers.completer.Completer.ComputeSignatures',
240+
side_effect = RuntimeError )
241+
def MiscHandlers_SignatureHelp_ComputeSignatureThrows_test( app, *args ):
242+
with PatchCompleter( DummyCompleter, filetype = 'dummy_filetype' ):
243+
request_data = BuildRequest( filetype = 'dummy_filetype' )
244+
response = app.post_json( '/signature_help', request_data ).json
245+
print( response )
246+
assert_that( response, has_entries( {
247+
'signature_help': has_entries( {
248+
'activeSignature': 0,
249+
'activeParameter': 0,
250+
'signatures': empty()
251+
} ),
252+
'errors': contains(
253+
ErrorMatcher( RuntimeError, '' )
254+
)
255+
} ) )

0 commit comments

Comments
 (0)