use test_tools::*;
#[cfg(test)]
mod cargo_execution_tests
{
use super::*;
#[test]
fn test_cargo_test_execution_success()
{
let mut smoke_test = SmokeModuleTest::new("serde");
smoke_test.version("1.0");
smoke_test.code("use serde::*;".to_string());
smoke_test.form().expect("form() should succeed");
let result = smoke_test.perform();
smoke_test.clean(true).expect("cleanup should succeed");
assert!(result.is_ok(), "perform() should succeed when project builds correctly");
}
#[test]
fn test_cargo_run_execution_success()
{
let mut smoke_test = SmokeModuleTest::new("serde");
smoke_test.version("1.0");
smoke_test.code("println!(\"Cargo run test successful\");".to_string());
smoke_test.form().expect("form() should succeed");
let result = smoke_test.perform();
smoke_test.clean(true).expect("cleanup should succeed");
assert!(result.is_ok(), "perform() should succeed with valid code");
}
#[test]
fn test_success_assertion_mechanisms()
{
let mut smoke_test = SmokeModuleTest::new("serde");
smoke_test.version("1.0");
smoke_test.code("
use serde::*;
println!(\"Testing success assertion mechanisms\");
".to_string());
smoke_test.form().expect("form() should succeed");
let result = smoke_test.perform();
smoke_test.clean(true).expect("cleanup should succeed");
assert!(result.is_ok(), "Success assertion should pass for valid code");
}
#[test]
fn test_command_output_handling()
{
let mut smoke_test = SmokeModuleTest::new("serde");
smoke_test.version("1.0");
smoke_test.code("
println!(\"Standard output message\");
eprintln!(\"Standard error message\");
".to_string());
smoke_test.form().expect("form() should succeed");
let result = smoke_test.perform();
smoke_test.clean(true).expect("cleanup should succeed");
assert!(result.is_ok(), "Command output should be handled correctly");
}
#[test]
fn test_error_case_handling_invalid_code()
{
let mut smoke_test = SmokeModuleTest::new("serde");
smoke_test.version("1.0");
smoke_test.code("this_is_invalid_rust_code_that_should_not_compile;".to_string());
smoke_test.form().expect("form() should succeed");
let result = smoke_test.perform();
smoke_test.clean(true).expect("cleanup should succeed");
assert!(result.is_err(), "Error case should be handled correctly for invalid code");
}
#[test]
fn test_error_case_handling_missing_dependency()
{
let mut smoke_test = SmokeModuleTest::new("nonexistent_crate_name_12345");
smoke_test.version("99.99.99");
let form_result = smoke_test.form();
if form_result.is_ok() {
let perform_result = smoke_test.perform();
smoke_test.clean(true).expect("cleanup should succeed");
assert!(perform_result.is_err(), "Should fail with missing dependency");
} else {
assert!(form_result.is_err(), "Should handle missing dependency error");
}
}
#[test]
fn test_both_commands_executed()
{
let mut smoke_test = SmokeModuleTest::new("serde");
smoke_test.version("1.0");
smoke_test.code("
use serde::*;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn dummy_test() {
// Test passed - functionality verified
}
}
println!(\"Main function executed\");
".to_string());
smoke_test.form().expect("form() should succeed");
let result = smoke_test.perform();
smoke_test.clean(true).expect("cleanup should succeed");
assert!(result.is_ok(), "Both cargo test and cargo run should execute successfully");
}
#[test]
fn test_working_directory_management()
{
let mut smoke_test = SmokeModuleTest::new("serde");
smoke_test.version("1.0");
let original_dir = std::env::current_dir().unwrap();
smoke_test.code("println!(\"Testing working directory management\");".to_string());
smoke_test.form().expect("form() should succeed");
let result = smoke_test.perform();
let current_dir = std::env::current_dir().unwrap();
assert_eq!(original_dir, current_dir, "Working directory should not change");
smoke_test.clean(true).expect("cleanup should succeed");
assert!(result.is_ok(), "Working directory should be managed correctly");
}
}