@@ -19,7 +19,7 @@ impl EnvVars {
1919 ///
2020 /// When set to any value, all logging is disabled regardless of RUST_LOG setting.
2121 /// Used specifically to prevent debug log spam in Ubuntu CI.
22- pub const FORCE_RUST_LOG_OFF : & ' static str = "FORCE_RUST_LOG_OFF " ;
22+ pub const ZERV_FORCE_RUST_LOG_OFF : & ' static str = "ZERV_FORCE_RUST_LOG_OFF " ;
2323
2424 /// Use native Git instead of Docker Git for tests (default: false).
2525 ///
@@ -46,20 +46,26 @@ impl EnvVars {
4646pub struct ZervConfig {
4747 pub test_native_git : bool ,
4848 pub test_docker : bool ,
49+ pub force_rust_log_off : bool ,
4950}
5051
5152impl ZervConfig {
5253 pub fn load ( ) -> Result < Self , Box < dyn std:: error:: Error > > {
5354 let test_native_git = Self :: parse_bool_env ( EnvVars :: ZERV_TEST_NATIVE_GIT , false ) ?;
5455 let test_docker = Self :: parse_bool_env ( EnvVars :: ZERV_TEST_DOCKER , true ) ?;
56+ let force_rust_log_off = Self :: parse_bool_env ( EnvVars :: ZERV_FORCE_RUST_LOG_OFF , false ) ?;
5557
5658 Ok ( ZervConfig {
5759 test_native_git,
5860 test_docker,
61+ force_rust_log_off,
5962 } )
6063 }
6164
62- fn parse_bool_env ( var_name : & str , default : bool ) -> Result < bool , Box < dyn std:: error:: Error > > {
65+ pub fn parse_bool_env (
66+ var_name : & str ,
67+ default : bool ,
68+ ) -> Result < bool , Box < dyn std:: error:: Error > > {
6369 match env:: var ( var_name) {
6470 Ok ( val) => Ok ( val == "true" || val == "1" ) ,
6571 Err ( _) => Ok ( default) ,
@@ -73,6 +79,10 @@ impl ZervConfig {
7379 pub fn should_run_docker_tests ( & self ) -> bool {
7480 self . test_docker
7581 }
82+
83+ pub fn should_force_rust_log_off ( & self ) -> bool {
84+ self . force_rust_log_off
85+ }
7686}
7787
7888#[ cfg( test) ]
@@ -113,70 +123,121 @@ mod tests {
113123 #[ test]
114124 #[ serial]
115125 fn test_default_config ( ) {
116- let _guard = EnvGuard :: new ( & [ EnvVars :: ZERV_TEST_NATIVE_GIT , EnvVars :: ZERV_TEST_DOCKER ] ) ;
126+ let _guard = EnvGuard :: new ( & [
127+ EnvVars :: ZERV_TEST_NATIVE_GIT ,
128+ EnvVars :: ZERV_TEST_DOCKER ,
129+ EnvVars :: ZERV_FORCE_RUST_LOG_OFF ,
130+ ] ) ;
117131 unsafe {
118132 env:: remove_var ( EnvVars :: ZERV_TEST_NATIVE_GIT ) ;
119133 env:: remove_var ( EnvVars :: ZERV_TEST_DOCKER ) ;
134+ env:: remove_var ( EnvVars :: ZERV_FORCE_RUST_LOG_OFF ) ;
120135 }
121136
122137 let config = ZervConfig :: load ( ) . expect ( "Failed to load default config" ) ;
123138 assert ! ( !config. should_use_native_git( ) ) ;
124139 assert ! ( config. should_run_docker_tests( ) ) ;
140+ assert ! ( !config. should_force_rust_log_off( ) ) ;
125141 }
126142
127143 #[ test]
128144 #[ serial]
129145 fn test_native_git_env_var ( ) {
130- let _guard = EnvGuard :: new ( & [ EnvVars :: ZERV_TEST_NATIVE_GIT , EnvVars :: ZERV_TEST_DOCKER ] ) ;
146+ let _guard = EnvGuard :: new ( & [
147+ EnvVars :: ZERV_TEST_NATIVE_GIT ,
148+ EnvVars :: ZERV_TEST_DOCKER ,
149+ EnvVars :: ZERV_FORCE_RUST_LOG_OFF ,
150+ ] ) ;
131151 unsafe {
132152 env:: remove_var ( EnvVars :: ZERV_TEST_DOCKER ) ;
153+ env:: remove_var ( EnvVars :: ZERV_FORCE_RUST_LOG_OFF ) ;
133154 env:: set_var ( EnvVars :: ZERV_TEST_NATIVE_GIT , "true" ) ;
134155 }
135156
136157 let config = ZervConfig :: load ( ) . expect ( "Failed to load config with native git enabled" ) ;
137158 assert ! ( config. should_use_native_git( ) ) ;
138159 assert ! ( config. should_run_docker_tests( ) ) ;
160+ assert ! ( !config. should_force_rust_log_off( ) ) ;
139161 }
140162
141163 #[ test]
142164 #[ serial]
143165 fn test_docker_tests_env_var ( ) {
144- let _guard = EnvGuard :: new ( & [ EnvVars :: ZERV_TEST_NATIVE_GIT , EnvVars :: ZERV_TEST_DOCKER ] ) ;
166+ let _guard = EnvGuard :: new ( & [
167+ EnvVars :: ZERV_TEST_NATIVE_GIT ,
168+ EnvVars :: ZERV_TEST_DOCKER ,
169+ EnvVars :: ZERV_FORCE_RUST_LOG_OFF ,
170+ ] ) ;
145171 unsafe {
146172 env:: remove_var ( EnvVars :: ZERV_TEST_NATIVE_GIT ) ;
173+ env:: remove_var ( EnvVars :: ZERV_FORCE_RUST_LOG_OFF ) ;
147174 env:: set_var ( EnvVars :: ZERV_TEST_DOCKER , "true" ) ;
148175 }
149176
150177 let config = ZervConfig :: load ( ) . expect ( "Failed to load config with docker tests enabled" ) ;
151178 assert ! ( !config. should_use_native_git( ) ) ;
152179 assert ! ( config. should_run_docker_tests( ) ) ;
180+ assert ! ( !config. should_force_rust_log_off( ) ) ;
153181 }
154182
155183 #[ test]
156184 #[ serial]
157185 fn test_both_env_vars ( ) {
158- let _guard = EnvGuard :: new ( & [ EnvVars :: ZERV_TEST_NATIVE_GIT , EnvVars :: ZERV_TEST_DOCKER ] ) ;
186+ let _guard = EnvGuard :: new ( & [
187+ EnvVars :: ZERV_TEST_NATIVE_GIT ,
188+ EnvVars :: ZERV_TEST_DOCKER ,
189+ EnvVars :: ZERV_FORCE_RUST_LOG_OFF ,
190+ ] ) ;
159191 unsafe {
160192 env:: set_var ( EnvVars :: ZERV_TEST_NATIVE_GIT , "true" ) ;
161193 env:: set_var ( EnvVars :: ZERV_TEST_DOCKER , "true" ) ;
194+ env:: remove_var ( EnvVars :: ZERV_FORCE_RUST_LOG_OFF ) ;
162195 }
163196
164197 let config = ZervConfig :: load ( ) . expect ( "Failed to load config with both env vars set" ) ;
165198 assert ! ( config. should_use_native_git( ) ) ;
166199 assert ! ( config. should_run_docker_tests( ) ) ;
200+ assert ! ( !config. should_force_rust_log_off( ) ) ;
167201 }
168202
169203 #[ test]
170204 #[ serial]
171205 fn test_false_values ( ) {
172- let _guard = EnvGuard :: new ( & [ EnvVars :: ZERV_TEST_NATIVE_GIT , EnvVars :: ZERV_TEST_DOCKER ] ) ;
206+ let _guard = EnvGuard :: new ( & [
207+ EnvVars :: ZERV_TEST_NATIVE_GIT ,
208+ EnvVars :: ZERV_TEST_DOCKER ,
209+ EnvVars :: ZERV_FORCE_RUST_LOG_OFF ,
210+ ] ) ;
173211 unsafe {
174212 env:: set_var ( EnvVars :: ZERV_TEST_NATIVE_GIT , "false" ) ;
175213 env:: set_var ( EnvVars :: ZERV_TEST_DOCKER , "false" ) ;
214+ env:: set_var ( EnvVars :: ZERV_FORCE_RUST_LOG_OFF , "false" ) ;
176215 }
177216
178217 let config = ZervConfig :: load ( ) . expect ( "Failed to load config with false values" ) ;
179218 assert ! ( !config. should_use_native_git( ) ) ;
180219 assert ! ( !config. should_run_docker_tests( ) ) ;
220+ assert ! ( !config. should_force_rust_log_off( ) ) ;
221+ }
222+
223+ #[ test]
224+ #[ serial]
225+ fn test_force_rust_log_off_env_var ( ) {
226+ let _guard = EnvGuard :: new ( & [
227+ EnvVars :: ZERV_TEST_NATIVE_GIT ,
228+ EnvVars :: ZERV_TEST_DOCKER ,
229+ EnvVars :: ZERV_FORCE_RUST_LOG_OFF ,
230+ ] ) ;
231+ unsafe {
232+ env:: remove_var ( EnvVars :: ZERV_TEST_NATIVE_GIT ) ;
233+ env:: remove_var ( EnvVars :: ZERV_TEST_DOCKER ) ;
234+ env:: set_var ( EnvVars :: ZERV_FORCE_RUST_LOG_OFF , "true" ) ;
235+ }
236+
237+ let config =
238+ ZervConfig :: load ( ) . expect ( "Failed to load config with force rust log off enabled" ) ;
239+ assert ! ( !config. should_use_native_git( ) ) ;
240+ assert ! ( config. should_run_docker_tests( ) ) ;
241+ assert ! ( config. should_force_rust_log_off( ) ) ;
181242 }
182243}
0 commit comments