mod test_support;
use std::process::Command;
#[test]
fn no_warning_when_env_file_missing() {
let temp_dir = test_support::temp_dir_outside_repo();
test_support::seed_ralph_dir(temp_dir.path()).expect("init should succeed");
let output = Command::new(test_support::ralph_bin())
.current_dir(temp_dir.path())
.args(["--help"])
.output()
.expect("failed to execute ralph binary");
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(output.status.success(), "expected success, got: {stderr}");
assert!(
!stderr.contains(".env") && !stderr.to_lowercase().contains("failed to load"),
"expected no .env warning when file is missing, but stderr was: {stderr}"
);
}
#[test]
fn warning_when_env_file_invalid() {
let temp_dir = test_support::temp_dir_outside_repo();
test_support::seed_ralph_dir(temp_dir.path()).expect("init should succeed");
let env_content = r#"INVALID LINE WITHOUT EQUALS SIGN
VALID_KEY=valid_value
"#;
std::fs::write(temp_dir.path().join(".env"), env_content).expect("write invalid .env file");
let output = Command::new(test_support::ralph_bin())
.current_dir(temp_dir.path())
.args(["--help"])
.output()
.expect("failed to execute ralph binary");
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(
output.status.success(),
"expected success even with invalid .env, got: {stderr}"
);
assert!(
stderr.to_lowercase().contains(".env") || stderr.to_lowercase().contains("warning"),
"expected .env warning when file is invalid, but stderr was: {stderr}"
);
}
#[test]
fn no_warning_when_env_file_empty() {
let temp_dir = test_support::temp_dir_outside_repo();
test_support::seed_ralph_dir(temp_dir.path()).expect("init should succeed");
std::fs::write(temp_dir.path().join(".env"), "").expect("write empty .env file");
let output = Command::new(test_support::ralph_bin())
.current_dir(temp_dir.path())
.args(["--help"])
.output()
.expect("failed to execute ralph binary");
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(output.status.success(), "expected success, got: {stderr}");
assert!(
!stderr.to_lowercase().contains("failed to load"),
"expected no warning for empty .env file, but stderr was: {stderr}"
);
}
#[test]
fn no_warning_when_env_file_valid() {
let temp_dir = test_support::temp_dir_outside_repo();
test_support::seed_ralph_dir(temp_dir.path()).expect("init should succeed");
let env_content = r#"RUST_LOG=info
SOME_VAR=some_value
# This is a comment
ANOTHER_VAR=another_value
"#;
std::fs::write(temp_dir.path().join(".env"), env_content).expect("write valid .env file");
let output = Command::new(test_support::ralph_bin())
.current_dir(temp_dir.path())
.args(["--help"])
.output()
.expect("failed to execute ralph binary");
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(output.status.success(), "expected success, got: {stderr}");
assert!(
!stderr.to_lowercase().contains("failed to load"),
"expected no warning for valid .env file, but stderr was: {stderr}"
);
}