diff --git a/src/util.rs b/src/util.rs index 8fcf693f..6bac972f 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,11 +1,15 @@ use std::fs::remove_file; -use std::process::{Command, Output}; +use std::process::{self, Command, Output}; const RUSTC_COLOR_ARGS: &[&str] = &["--color", "always"]; +fn temp_file() -> String { + format!("./temp_{}", process::id()) +} + pub fn compile_test_cmd(filename: &str) -> Output { Command::new("rustc") - .args(&["--test", filename, "-o", "temp"]) + .args(&["--test", filename, "-o", &temp_file()]) .args(RUSTC_COLOR_ARGS) .output() .expect("failed to compile exercise") @@ -13,25 +17,25 @@ pub fn compile_test_cmd(filename: &str) -> Output { pub fn compile_cmd(filename: &str) -> Output { Command::new("rustc") - .args(&[filename, "-o", "temp"]) + .args(&[filename, "-o", &temp_file()]) .args(RUSTC_COLOR_ARGS) .output() .expect("failed to compile exercise") } pub fn run_cmd() -> Output { - Command::new("./temp") + Command::new(&temp_file()) .output() .expect("failed to run exercise") } pub fn clean() { - let _ignored = remove_file("temp"); + let _ignored = remove_file(&temp_file()); } #[test] fn test_clean() { - std::fs::File::create("temp").unwrap(); + std::fs::File::create(&temp_file()).unwrap(); clean(); - assert!(!std::path::Path::new("temp").exists()); + assert!(!std::path::Path::new(&temp_file()).exists()); }