|
|
@ -6,18 +6,43 @@ use std::io::prelude::*; |
|
|
|
use std::path::PathBuf; |
|
|
|
|
|
|
|
fn main() { |
|
|
|
let out_dir = PathBuf::from(env::var_os("GCCTEST_OUT_DIR").unwrap()); |
|
|
|
let mut args = env::args(); |
|
|
|
let program = args.next().expect("Unexpected empty args"); |
|
|
|
|
|
|
|
let out_dir = PathBuf::from( |
|
|
|
env::var_os("GCCTEST_OUT_DIR").expect(&format!("{}: GCCTEST_OUT_DIR not found", program)), |
|
|
|
); |
|
|
|
|
|
|
|
// Find the first nonexistent candidate file to which the program's args can be written.
|
|
|
|
for i in 0.. { |
|
|
|
let candidate = out_dir.join(format!("out{}", i)); |
|
|
|
let candidate = &out_dir.join(format!("out{}", i)); |
|
|
|
|
|
|
|
// If the file exists, commands have already run. Try again.
|
|
|
|
if candidate.exists() { |
|
|
|
continue; |
|
|
|
} |
|
|
|
let mut f = File::create(candidate).unwrap(); |
|
|
|
for arg in env::args().skip(1) { |
|
|
|
writeln!(f, "{}", arg).unwrap(); |
|
|
|
} |
|
|
|
|
|
|
|
File::create(out_dir.join("libfoo.a")).unwrap(); |
|
|
|
// Create a file and record the args passed to the command.
|
|
|
|
let mut f = File::create(candidate).expect(&format!( |
|
|
|
"{}: can't create candidate: {}", |
|
|
|
program, |
|
|
|
candidate.to_string_lossy() |
|
|
|
)); |
|
|
|
for arg in args { |
|
|
|
writeln!(f, "{}", arg).expect(&format!( |
|
|
|
"{}: can't write to candidate: {}", |
|
|
|
program, |
|
|
|
candidate.to_string_lossy() |
|
|
|
)); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
// Create a file used by some tests.
|
|
|
|
let path = &out_dir.join("libfoo.a"); |
|
|
|
File::create(path).expect(&format!( |
|
|
|
"{}: can't create libfoo.a: {}", |
|
|
|
program, |
|
|
|
path.to_string_lossy() |
|
|
|
)); |
|
|
|
} |
|
|
|