Skip to content

Commit b86b1db

Browse files
committed
fix: dev
1 parent c67733a commit b86b1db

File tree

3 files changed

+72
-10
lines changed

3 files changed

+72
-10
lines changed

.github/workflows/ci-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
env:
1818
ZERV_TEST_NATIVE_GIT: true
1919
ZERV_TEST_DOCKER: ${{ matrix.os == 'ubuntu-latest' && 'true' || 'false' }}
20-
FORCE_RUST_LOG_OFF: ${{ matrix.os == 'ubuntu-latest' && '1' || '' }}
20+
ZERV_FORCE_RUST_LOG_OFF: ${{ matrix.os == 'ubuntu-latest' && 'true' || 'false' }}
2121
steps:
2222
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2323
with:

src/config.rs

Lines changed: 68 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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 {
4646
pub struct ZervConfig {
4747
pub test_native_git: bool,
4848
pub test_docker: bool,
49+
pub force_rust_log_off: bool,
4950
}
5051

5152
impl 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
}

src/logging.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ use crate::config::EnvVars;
1616
/// 2. --verbose flag - enables debug level
1717
/// 3. Default - error level only (Rust standard)
1818
pub fn init_logging(verbose: bool) {
19-
let filter = if std::env::var(EnvVars::FORCE_RUST_LOG_OFF).is_ok() {
20-
// Force logging off for CI environments
19+
let config = crate::config::ZervConfig::load().unwrap_or_default();
20+
let filter = if config.should_force_rust_log_off() {
21+
// ZERV_FORCE_RUST_LOG_OFF is set to true/1 - force logging off for CI
2122
EnvFilter::new("off")
2223
} else if let Ok(rust_log) = std::env::var(EnvVars::RUST_LOG) {
2324
EnvFilter::new(rust_log)

0 commit comments

Comments
 (0)