@@ -16,27 +16,29 @@ def start_client(client):
16
16
17
17
class _ClientServer (object ):
18
18
""" A class to setup a client/server pair """
19
- def __init__ (self ):
19
+ def __init__ (self , check_parent_process = False ):
20
20
# Client to Server pipe
21
21
csr , csw = os .pipe ()
22
22
# Server to client pipe
23
23
scr , scw = os .pipe ()
24
24
25
25
self .server_thread = Thread (target = start_io_lang_server , args = (
26
- os .fdopen (csr , 'rb' ), os .fdopen (scw , 'wb' ), PythonLanguageServer
26
+ os .fdopen (csr , 'rb' ), os .fdopen (scw , 'wb' ), check_parent_process , PythonLanguageServer
27
27
))
28
28
self .server_thread .daemon = True
29
29
self .server_thread .start ()
30
30
31
- self .client = PythonLanguageServer (os .fdopen (scr , 'rb' ), os .fdopen (csw , 'wb' ))
31
+ self .client = PythonLanguageServer (os .fdopen (scr , 'rb' ), os .fdopen (csw , 'wb' ), start_io_lang_server )
32
32
self .client_thread = Thread (target = start_client , args = [self .client ])
33
33
self .client_thread .daemon = True
34
34
self .client_thread .start ()
35
35
36
36
37
37
@pytest .fixture
38
38
def client_server ():
39
- """ A fixture that sets up a client/server pair and shuts down the server """
39
+ """ A fixture that sets up a client/server pair and shuts down the server
40
+ This client/server pair does not support checking parent process aliveness
41
+ """
40
42
client_server_pair = _ClientServer ()
41
43
42
44
yield client_server_pair .client
@@ -48,8 +50,10 @@ def client_server():
48
50
49
51
@pytest .fixture
50
52
def client_exited_server ():
51
- """ A fixture that sets up a client/server pair and assert the server has already exited """
52
- client_server_pair = _ClientServer ()
53
+ """ A fixture that sets up a client/server pair that support checking parent process aliveness
54
+ and assert the server has already exited
55
+ """
56
+ client_server_pair = _ClientServer (True )
53
57
54
58
yield client_server_pair .client
55
59
@@ -74,6 +78,15 @@ def test_exit_with_parent_process_died(client_exited_server): # pylint: disable
74
78
}).result (timeout = CALL_TIMEOUT )
75
79
76
80
81
+ def test_not_exit_without_check_parent_process_flag (client_server ): # pylint: disable=redefined-outer-name
82
+ response = client_server ._endpoint .request ('initialize' , {
83
+ 'processId' : 1234 ,
84
+ 'rootPath' : os .path .dirname (__file__ ),
85
+ 'initializationOptions' : {}
86
+ }).result (timeout = CALL_TIMEOUT )
87
+ assert 'capabilities' in response
88
+
89
+
77
90
def test_missing_message (client_server ): # pylint: disable=redefined-outer-name
78
91
with pytest .raises (JsonRpcMethodNotFound ):
79
92
client_server ._endpoint .request ('unknown_method' ).result (timeout = CALL_TIMEOUT )
0 commit comments