@@ -71,39 +71,40 @@ def run_test(
7171 test_args : Sequence [str ] = (),
7272 harness : Sequence [str ] = (),
7373 ) -> tuple [list [GoogleTestFailure ] | None , str ]:
74- xml_filename = self ._get_temp_xml_filename ()
75- args = list (harness ) + [
76- executable ,
77- "--gtest_filter=" + test_id ,
78- "--gtest_output=xml:%s" % xml_filename ,
79- ]
80- args .extend (test_args )
81-
82- try :
83- output = subprocess .check_output (
84- args , stderr = subprocess .STDOUT , universal_newlines = True
85- )
86- except subprocess .CalledProcessError as e :
87- output = e .output
88- if e .returncode != 1 :
89- msg = (
90- "Internal Error: calling {executable} "
91- "for test {test_id} failed (returncode={returncode}):\n "
92- "{output}"
74+ with tempfile .TemporaryDirectory (prefix = "pytest-cpp" ) as tmp_dir :
75+ xml_filename = os .path .join (tmp_dir , "cpp-report.xml" )
76+ args = list (harness ) + [
77+ executable ,
78+ "--gtest_filter=" + test_id ,
79+ "--gtest_output=xml:%s" % xml_filename ,
80+ ]
81+ args .extend (test_args )
82+
83+ try :
84+ output = subprocess .check_output (
85+ args , stderr = subprocess .STDOUT , universal_newlines = True
9386 )
94- failure = GoogleTestFailure (
95- msg .format (
96- executable = executable ,
97- test_id = test_id ,
98- output = e .output ,
99- returncode = e .returncode ,
87+ except subprocess .CalledProcessError as e :
88+ output = e .output
89+ if e .returncode != 1 :
90+ msg = (
91+ "Internal Error: calling {executable} "
92+ "for test {test_id} failed (returncode={returncode}):\n "
93+ "{output}"
94+ )
95+ failure = GoogleTestFailure (
96+ msg .format (
97+ executable = executable ,
98+ test_id = test_id ,
99+ output = e .output ,
100+ returncode = e .returncode ,
101+ )
100102 )
101- )
102103
103- return [failure ], output
104+ return [failure ], output
105+
106+ results = self ._parse_xml (xml_filename )
104107
105- results = self ._parse_xml (xml_filename )
106- os .remove (xml_filename )
107108 for (executed_test_id , failures , skipped ) in results :
108109 if executed_test_id == test_id :
109110 if failures :
@@ -118,9 +119,6 @@ def run_test(
118119 failure = GoogleTestFailure (msg .format (test_id = test_id , results = results_list ))
119120 return [failure ], output
120121
121- def _get_temp_xml_filename (self ) -> str :
122- return tempfile .mktemp ()
123-
124122 def _parse_xml (
125123 self , xml_filename : str
126124 ) -> Sequence [tuple [str , Sequence [str ], Sequence [str ]]]:
0 commit comments