fn test_build_command_with_proof_emission() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
let output_path = temp_dir.path().join("test.sh");
fs::write(&input_path, "fn main() { let x = 42; }").unwrap();
let config = Config {
target: ShellDialect::Posix,
verify: VerificationLevel::Basic,
emit_proof: true, optimize: true,
strict_mode: false,
validation_level: None,
};
let result = build_command(&input_path, &output_path, config);
let _ = result; assert!(output_path.exists());
}
#[test]
fn test_build_command_no_optimization() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
let output_path = temp_dir.path().join("test.sh");
fs::write(&input_path, "fn main() { let x = 42; }").unwrap();
let config = Config {
target: ShellDialect::Posix,
verify: VerificationLevel::Basic,
emit_proof: false,
optimize: false, strict_mode: false,
validation_level: None,
};
let result = build_command(&input_path, &output_path, config);
let _ = result; assert!(output_path.exists());
}
#[test]
fn test_build_command_strict_mode() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
let output_path = temp_dir.path().join("test.sh");
fs::write(&input_path, "fn main() { let x = 42; }").unwrap();
let config = Config {
target: ShellDialect::Posix,
verify: VerificationLevel::Strict,
emit_proof: false,
optimize: true,
strict_mode: true, validation_level: Some(ValidationLevel::Strict),
};
let result = build_command(&input_path, &output_path, config);
let _ = result; assert!(output_path.exists());
}
#[test]
fn test_build_command_validation_levels() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
fs::write(&input_path, "fn main() { let x = 42; }").unwrap();
for (idx, level) in [
ValidationLevel::None,
ValidationLevel::Minimal,
ValidationLevel::Strict,
ValidationLevel::Paranoid,
]
.iter()
.enumerate()
{
let output_path = temp_dir.path().join(format!("test_{}.sh", idx));
let config = Config {
target: ShellDialect::Posix,
verify: VerificationLevel::Basic,
emit_proof: false,
optimize: true,
strict_mode: false,
validation_level: Some(*level),
};
let result = build_command(&input_path, &output_path, config);
let _ = result; assert!(output_path.exists());
}
}
#[test]
fn test_compile_command_different_runtimes() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
fs::write(&input_path, "fn main() { let msg = \"test\"; }").unwrap();
let config = Config {
target: ShellDialect::Posix,
verify: VerificationLevel::Basic,
emit_proof: false,
optimize: true,
validation_level: Some(ValidationLevel::Minimal),
strict_mode: false,
};
for runtime in [
CompileRuntime::Dash,
CompileRuntime::Busybox,
CompileRuntime::Minimal,
] {
let output_path = temp_dir.path().join(format!("test_{:?}.sh", runtime));
let result = handle_compile(
&input_path,
&output_path,
runtime,
false,
false,
ContainerFormatArg::Oci,
&config,
);
let _ = result; assert!(output_path.exists());
}
}
#[test]
fn test_compile_command_container_formats() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
fs::write(&input_path, "fn main() { }").unwrap();
let config = Config::default();
for format in [ContainerFormatArg::Oci, ContainerFormatArg::Docker] {
let output_path = temp_dir.path().join(format!("test_{:?}.sh", format));
let result = handle_compile(
&input_path,
&output_path,
CompileRuntime::Dash,
false,
true, format,
&config,
);
let _ = result;
}
}
#[test]
fn test_compile_command_invalid_input() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("nonexistent.rs");
let output_path = temp_dir.path().join("output.sh");
let config = Config::default();
let result = handle_compile(
&input_path,
&output_path,
CompileRuntime::Dash,
false,
false,
ContainerFormatArg::Oci,
&config,
);
assert!(result.is_err());
}
#[test]
fn test_build_command_different_dialects() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
fs::write(&input_path, "fn main() { let x = 42; }").unwrap();
for (idx, dialect) in [ShellDialect::Posix, ShellDialect::Bash, ShellDialect::Ash]
.iter()
.enumerate()
{
let output_path = temp_dir.path().join(format!("test_{}.sh", idx));
let config = Config {
target: *dialect,
verify: VerificationLevel::Basic,
emit_proof: false,
optimize: true,
strict_mode: false,
validation_level: None,
};
let result = build_command(&input_path, &output_path, config);
let _ = result; assert!(output_path.exists());
}
}
#[test]
fn test_build_command_all_verification_levels() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
fs::write(&input_path, "fn main() { let x = 42; }").unwrap();
for (idx, level) in [
VerificationLevel::None,
VerificationLevel::Basic,
VerificationLevel::Strict,
VerificationLevel::Paranoid,
]
.iter()
.enumerate()
{
let output_path = temp_dir.path().join(format!("verify_{}.sh", idx));
let config = Config {
target: ShellDialect::Posix,
verify: *level,
emit_proof: false,
optimize: true,
strict_mode: false,
validation_level: None,
};
let result = build_command(&input_path, &output_path, config);
let _ = result; assert!(output_path.exists());
}
}
#[test]
fn test_verify_command_mismatch() {
let temp_dir = TempDir::new().unwrap();
let rust_path = temp_dir.path().join("test.rs");
let shell_path = temp_dir.path().join("test.sh");
fs::write(&rust_path, "fn main() { let x = 42; }").unwrap();
fs::write(&shell_path, "#!/bin/sh\necho 'different'").unwrap();
let result = verify_command(
&rust_path,
&shell_path,
ShellDialect::Posix,
VerificationLevel::Basic,
);
assert!(result.is_err());
}
#[test]
fn test_verify_command_different_dialects() {
let temp_dir = TempDir::new().unwrap();
let rust_path = temp_dir.path().join("test.rs");
let shell_path = temp_dir.path().join("test.sh");
fs::write(&rust_path, "fn main() { let x = 42; }").unwrap();
let config = Config {
target: ShellDialect::Posix,
verify: VerificationLevel::Basic,
emit_proof: false,
optimize: true,
strict_mode: false,
validation_level: None,
};
let source = fs::read_to_string(&rust_path).unwrap();
let shell_code = crate::transpile(&source, &config).unwrap();
fs::write(&shell_path, &shell_code).unwrap();
for dialect in [ShellDialect::Posix, ShellDialect::Bash, ShellDialect::Ash] {
let result = verify_command(&rust_path, &shell_path, dialect, VerificationLevel::Basic);
assert!(result.is_ok() || result.is_err()); }
}
#[test]
fn test_check_command_complex_code() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("complex.rs");
let complex_code = r#"
fn main() {
for i in 0..10 {
let x = i + 1;
}
let result = 42;
}
"#;
fs::write(&input_path, complex_code).unwrap();
let result = check_command(&input_path);
let _ = result; }
#[test]
fn test_init_command_special_characters_in_name() {
let temp_dir = TempDir::new().unwrap();
let result = init_command(temp_dir.path(), Some("my_test-project"));
assert!(result.is_ok() || result.is_err()); }
#[test]
fn test_compile_command_with_optimization() {
let temp_dir = TempDir::new().unwrap();
let input_path = temp_dir.path().join("test.rs");
let output_path = temp_dir.path().join("optimized.sh");
fs::write(&input_path, "fn main() { let x = 42; let y = x + 1; }").unwrap();
let config = Config {
target: ShellDialect::Posix,
verify: VerificationLevel::Basic,
emit_proof: false,
optimize: true,
validation_level: None,
strict_mode: false,
};
let result = handle_compile(
&input_path,
&output_path,
CompileRuntime::Dash,
true, false,
ContainerFormatArg::Oci,
&config,
);
let _ = result; }
#[test]
fn test_generate_proof_different_dialects() {
let temp_dir = TempDir::new().unwrap();
for (idx, dialect) in [ShellDialect::Posix, ShellDialect::Bash, ShellDialect::Ash]
.iter()
.enumerate()
{
let proof_path = temp_dir.path().join(format!("proof_{}.json", idx));
let config = Config {
target: *dialect,
verify: VerificationLevel::Strict,
emit_proof: true,
optimize: true,
strict_mode: false,
validation_level: Some(ValidationLevel::Strict),
};
let result = generate_proof("fn main() { let x = 42; }", &proof_path, &config);
let _ = result; assert!(proof_path.exists());
let proof = fs::read_to_string(&proof_path).unwrap();
assert!(proof.contains("\"version\": \"1.0\""));
}
}
#[test]
include!("command_tests_build_tests_build_comman.rs");