@@ -74,6 +74,7 @@ fn every_registered_checker_configuration_is_inert_after_failed_write() {
7474 "--rustsec-db" ,
7575 "--pip-audit-tool" ,
7676 "--go-tool" ,
77+ "--clang-tool" ,
7778 "--zig-tool" ,
7879 "--erl-tool" ,
7980 "--swift-tool" ,
@@ -125,6 +126,9 @@ fn failed_write_still_rejects_ownership_and_malformed_arguments() {
125126 vec ! [ ( "--owner" , "agent" ) ] ,
126127 vec ! [ ( "--lease-token" , "token" ) ] ,
127128 vec ! [ ( "--go-tool" , "relative" ) ] ,
129+ vec ! [ ( "--clang-tool" , "relative" ) ] ,
130+ vec ! [ ( "--clang-tool" , "/missing" ) , ( "--clang-tool" , "/other" ) ] ,
131+ vec ! [ ( "--standard" , "c17" ) ] ,
128132 vec ! [ ( "--npm-version" , "" ) ] ,
129133 vec ! [ ( "--npm-version" , oversized. as_str( ) ) ] ,
130134 vec ! [ ( "--go-tool" , "/missing" ) , ( "--go-tool" , "/other" ) ] ,
@@ -152,3 +156,17 @@ fn confirmed_edit_reports_selected_go_failure_without_ignoring_it() {
152156 ) ;
153157 assert ! ( !p. 0 . join( ".codeguard" ) . exists( ) ) ;
154158}
159+
160+ #[ test]
161+ fn confirmed_edit_rejects_repair_only_clang_option_before_execution ( ) {
162+ let p = Project :: new ( ) ;
163+ let marker = p. 0 . join ( "clang-ran" ) ;
164+ let tool = p. 0 . join ( "clang" ) ;
165+ fs:: write ( & tool, format ! ( "#!/bin/sh\n touch '{}'\n exit 99\n " , marker. display( ) ) ) . unwrap ( ) ;
166+ fs:: set_permissions ( & tool, fs:: Permissions :: from_mode ( 0o700 ) ) . unwrap ( ) ;
167+ let out = p. invoke ( & [ ( "--clang-tool" , tool. to_str ( ) . unwrap ( ) ) ] , "confirmed" ) ;
168+ assert_eq ! ( out. status. code( ) , Some ( 2 ) , "{out:?}" ) ;
169+ assert ! ( out. stdout. is_empty( ) , "{out:?}" ) ;
170+ assert ! ( !marker. exists( ) ) ;
171+ assert ! ( !p. 0 . join( ".codeguard" ) . exists( ) ) ;
172+ }
0 commit comments