@@ -159,10 +159,19 @@ pub async fn run_main(args: Vec<String>) -> Result<()> {
159159mod test {
160160 use super :: run_main;
161161 use std:: env;
162+ use tempfile:: NamedTempFile ;
163+
164+ /// Avoid writing to GITHUB_OUTPUT in parallel-running tests.
165+ ///
166+ /// This simply creates a temp file and sets the env var, GITHUB_OUTPUT, to the temp file's path.
167+ fn monkey_patch_gh_output ( ) {
168+ let fake_gh_out = NamedTempFile :: new ( ) . unwrap ( ) ;
169+ env:: set_var ( "GITHUB_OUTPUT" , fake_gh_out. path ( ) ) ;
170+ }
162171
163172 #[ tokio:: test]
164173 async fn normal ( ) {
165- env :: remove_var ( "GITHUB_OUTPUT" ) ; // avoid writing to GH_OUT in parallel-running tests
174+ monkey_patch_gh_output ( ) ;
166175 let result = run_main ( vec ! [
167176 "cpp-linter" . to_string( ) ,
168177 "-l" . to_string( ) ,
@@ -177,14 +186,14 @@ mod test {
177186
178187 #[ tokio:: test]
179188 async fn version_command ( ) {
180- env :: remove_var ( "GITHUB_OUTPUT" ) ; // avoid writing to GH_OUT in parallel-running tests
189+ monkey_patch_gh_output ( ) ;
181190 let result = run_main ( vec ! [ "cpp-linter" . to_string( ) , "version" . to_string( ) ] ) . await ;
182191 assert ! ( result. is_ok( ) ) ;
183192 }
184193
185194 #[ tokio:: test]
186195 async fn force_debug_output ( ) {
187- env :: remove_var ( "GITHUB_OUTPUT" ) ; // avoid writing to GH_OUT in parallel-running tests
196+ monkey_patch_gh_output ( ) ;
188197 let result = run_main ( vec ! [
189198 "cpp-linter" . to_string( ) ,
190199 "-l" . to_string( ) ,
@@ -199,7 +208,7 @@ mod test {
199208
200209 #[ tokio:: test]
201210 async fn bad_version_input ( ) {
202- env :: remove_var ( "GITHUB_OUTPUT" ) ; // avoid writing to GH_OUT in parallel-running tests
211+ monkey_patch_gh_output ( ) ;
203212 let result = run_main ( vec ! [
204213 "cpp-linter" . to_string( ) ,
205214 "-l" . to_string( ) ,
@@ -212,7 +221,7 @@ mod test {
212221
213222 #[ tokio:: test]
214223 async fn pre_commit_env ( ) {
215- env :: remove_var ( "GITHUB_OUTPUT" ) ; // avoid writing to GH_OUT in parallel-running tests
224+ monkey_patch_gh_output ( ) ;
216225 env:: set_var ( "PRE_COMMIT" , "1" ) ;
217226 let result = run_main ( vec ! [
218227 "cpp-linter" . to_string( ) ,
@@ -228,7 +237,7 @@ mod test {
228237 // This ensures no diagnostic comments are generated when analysis is explicitly skipped.
229238 #[ tokio:: test]
230239 async fn no_analysis ( ) {
231- env :: remove_var ( "GITHUB_OUTPUT" ) ; // avoid writing to GH_OUT in parallel-running tests
240+ monkey_patch_gh_output ( ) ;
232241 let result = run_main ( vec ! [
233242 "cpp-linter" . to_string( ) ,
234243 "-l" . to_string( ) ,
0 commit comments