2121
2222import pytest
2323
24- script_dir = pathlib .Path (__file__ ).parent .parent
25- sys .path .append (os .fspath (script_dir ))
26- sys .path .append (os .fspath (script_dir / "lib" / "python" ))
27- from testing_tools import socket_manager # noqa: E402
28-
2924if TYPE_CHECKING :
3025 from pluggy import Result
3126
@@ -171,7 +166,7 @@ def pytest_exception_interact(node, call, report):
171166 collected_test = TestRunResultDict ()
172167 collected_test [node_id ] = item_result
173168 cwd = pathlib .Path .cwd ()
174- execution_post (
169+ send_execution_message (
175170 os .fsdecode (cwd ),
176171 "success" ,
177172 collected_test if collected_test else None ,
@@ -295,7 +290,7 @@ def pytest_report_teststatus(report, config): # noqa: ARG001
295290 )
296291 collected_test = TestRunResultDict ()
297292 collected_test [absolute_node_id ] = item_result
298- execution_post (
293+ send_execution_message (
299294 os .fsdecode (cwd ),
300295 "success" ,
301296 collected_test if collected_test else None ,
@@ -329,7 +324,7 @@ def pytest_runtest_protocol(item, nextitem): # noqa: ARG001
329324 )
330325 collected_test = TestRunResultDict ()
331326 collected_test [absolute_node_id ] = item_result
332- execution_post (
327+ send_execution_message (
333328 os .fsdecode (cwd ),
334329 "success" ,
335330 collected_test if collected_test else None ,
@@ -405,15 +400,15 @@ def pytest_sessionfinish(session, exitstatus):
405400 "children" : [],
406401 "id_" : "" ,
407402 }
408- post_response (os .fsdecode (cwd ), error_node )
403+ send_discovery_message (os .fsdecode (cwd ), error_node )
409404 try :
410405 session_node : TestNode | None = build_test_tree (session )
411406 if not session_node :
412407 raise VSCodePytestError (
413408 "Something went wrong following pytest finish, \
414409 no session node was created"
415410 )
416- post_response (os .fsdecode (cwd ), session_node )
411+ send_discovery_message (os .fsdecode (cwd ), session_node )
417412 except Exception as e :
418413 ERRORS .append (
419414 f"Error Occurred, traceback: { (traceback .format_exc () if e .__traceback__ else '' )} "
@@ -425,7 +420,7 @@ def pytest_sessionfinish(session, exitstatus):
425420 "children" : [],
426421 "id_" : "" ,
427422 }
428- post_response (os .fsdecode (cwd ), error_node )
423+ send_discovery_message (os .fsdecode (cwd ), error_node )
429424 else :
430425 if exitstatus == 0 or exitstatus == 1 :
431426 exitstatus_bool = "success"
@@ -435,7 +430,7 @@ def pytest_sessionfinish(session, exitstatus):
435430 )
436431 exitstatus_bool = "error"
437432
438- execution_post (
433+ send_execution_message (
439434 os .fsdecode (cwd ),
440435 exitstatus_bool ,
441436 None ,
@@ -469,7 +464,7 @@ def pytest_sessionfinish(session, exitstatus):
469464 result = file_coverage_map ,
470465 error = None ,
471466 )
472- send_post_request (payload )
467+ send_message (payload )
473468
474469
475470def build_test_tree (session : pytest .Session ) -> TestNode :
@@ -837,8 +832,10 @@ def get_node_path(node: Any) -> pathlib.Path:
837832atexit .register (lambda : __writer .close () if __writer else None )
838833
839834
840- def execution_post (cwd : str , status : Literal ["success" , "error" ], tests : TestRunResultDict | None ):
841- """Sends a POST request with execution payload details.
835+ def send_execution_message (
836+ cwd : str , status : Literal ["success" , "error" ], tests : TestRunResultDict | None
837+ ):
838+ """Sends message execution payload details.
842839
843840 Args:
844841 cwd (str): Current working directory.
@@ -850,10 +847,10 @@ def execution_post(cwd: str, status: Literal["success", "error"], tests: TestRun
850847 )
851848 if ERRORS :
852849 payload ["error" ] = ERRORS
853- send_post_request (payload )
850+ send_message (payload )
854851
855852
856- def post_response (cwd : str , session_node : TestNode ) -> None :
853+ def send_discovery_message (cwd : str , session_node : TestNode ) -> None :
857854 """
858855 Sends a POST request with test session details in payload.
859856
@@ -869,7 +866,7 @@ def post_response(cwd: str, session_node: TestNode) -> None:
869866 }
870867 if ERRORS is not None :
871868 payload ["error" ] = ERRORS
872- send_post_request (payload , cls_encoder = PathEncoder )
869+ send_message (payload , cls_encoder = PathEncoder )
873870
874871
875872class PathEncoder (json .JSONEncoder ):
@@ -881,7 +878,7 @@ def default(self, o):
881878 return super ().default (o )
882879
883880
884- def send_post_request (
881+ def send_message (
885882 payload : ExecutionPayloadDict | DiscoveryPayloadDict | CoveragePayloadDict ,
886883 cls_encoder = None ,
887884):
@@ -906,8 +903,7 @@ def send_post_request(
906903
907904 if __writer is None :
908905 try :
909- __writer = socket_manager .PipeManager (TEST_RUN_PIPE )
910- __writer .connect ()
906+ __writer = open (TEST_RUN_PIPE , "w" , encoding = "utf-8" , newline = "\r \n " ) # noqa: SIM115, PTH123
911907 except Exception as error :
912908 error_msg = f"Error attempting to connect to extension named pipe { TEST_RUN_PIPE } [vscode-pytest]: { error } "
913909 print (error_msg , file = sys .stderr )
@@ -925,10 +921,11 @@ def send_post_request(
925921 "params" : payload ,
926922 }
927923 data = json .dumps (rpc , cls = cls_encoder )
928-
929924 try :
930925 if __writer :
931- __writer .write (data )
926+ request = f"""content-length: { len (data )} \n content-type: application/json\n \n { data } """
927+ __writer .write (request )
928+ __writer .flush ()
932929 else :
933930 print (
934931 f"Plugin error connection error[vscode-pytest], writer is None \n [vscode-pytest] data: \n { data } \n " ,
0 commit comments