diff --git a/modules/compiler_v2/rust_compiler_v2/rust_compiler.go b/modules/compiler_v2/rust_compiler_v2/rust_compiler.go index 9078256e54b1b1d5a341cf40518bd50ff3a47a8b..6dd5f45e97eb075e550601709946d43816bfb8a8 100644 --- a/modules/compiler_v2/rust_compiler_v2/rust_compiler.go +++ b/modules/compiler_v2/rust_compiler_v2/rust_compiler.go @@ -44,7 +44,9 @@ func (gb *RustCompiler) CheckCompileErrors(srcCode []byte, dependencies ...strin } // Run go build - cmdString += " cargo check" + cmdString += " cargo build" + + cmdString += " && cargo test" //cmdSlice := strings.Fields(cmdString) cmd := utils.MakeCommand(cmdString) diff --git a/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go b/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go index 4e3d3e097ed708327510f3dc57614e11f4620b93..169049b3088a05ff90a5eb72d6ff2ab148c04fda 100644 --- a/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go +++ b/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go @@ -27,6 +27,16 @@ func TestCompileStringToRust(t *testing.T) { shouldCompile: true, dependencies: []string{"rand", "colored"}, }, + { + filename: "should_compile_and_run_tests", + shouldCompile: true, + dependencies: nil, + }, + { + filename: "should_compile_with_faulty_test", + shouldCompile: false, + dependencies: nil, + }, } for _, test := range tests { diff --git a/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests b/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests new file mode 100644 index 0000000000000000000000000000000000000000..1a75cfa8fdf08d8cec2cff77d4b0d956c7b2e351 --- /dev/null +++ b/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests @@ -0,0 +1,36 @@ +fn divide(a: f64, b: f64) -> Result<f64, String> { + if b == 0.0 { + return Err(String::from("Cannot divide by zero")); + } + Ok(a / b) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_divide_positive_numbers() { + let result = divide(10.0, 2.0); + assert_eq!(result.unwrap(), 5.0); + } + + #[test] + fn test_divide_negative_numbers() { + let result = divide(-10.0, 2.0); + assert_eq!(result.unwrap(), -5.0); + } + + #[test] + fn test_divide_by_zero() { + let result = divide(10.0, 0.0); + assert!(result.is_err()); + } +} + +fn main() { + match divide(10.0, 2.0) { + Ok(result) => println!("10.0 divided by 2.0 is {}", result), + Err(e) => println!("Error: {}", e), + } +} diff --git a/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test b/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test new file mode 100644 index 0000000000000000000000000000000000000000..d22217d9d7ec70d0638e5ad67bf9f0177cd68030 --- /dev/null +++ b/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test @@ -0,0 +1,32 @@ +// Function to add two numbers +fn add(a: i32, b: i32) -> i32 { + a + b +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_add_positive_numbers() { + let result = add(2, 3); + assert_eq!(result, 5); + } + + #[test] + fn test_add_negative_numbers() { + let result = add(-2, -3); + assert_eq!(result, -5); + } + + #[test] + fn test_add_faulty() { + // This test is intentionally faulty + let result = add(2, 2); + assert_eq!(result, 5); // This will fail because 2 + 2 is actually 4 + } +} + +fn main() { + println!("2 + 3 = {}", add(2, 3)); +}