Merge pull request #363 from GuillaumeGomez/test-command

Add basics for `test` command in build system
This commit is contained in:
antoyo 2023-10-25 18:20:42 -04:00 committed by GitHub
commit d4a74fba1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -5,6 +5,7 @@ mod build;
mod config;
mod prepare;
mod rustc_info;
mod test;
mod utils;
macro_rules! arg_error {
@ -23,6 +24,7 @@ Available commands for build_system:
prepare : Run prepare command
build : Run build command
test : Run test command
--help : Show this message"
);
}
@ -30,6 +32,7 @@ Available commands for build_system:
pub enum Command {
Prepare,
Build,
Test,
}
fn main() {
@ -40,6 +43,7 @@ fn main() {
let command = match env::args().nth(1).as_deref() {
Some("prepare") => Command::Prepare,
Some("build") => Command::Build,
Some("test") => Command::Test,
Some("--help") => {
usage();
process::exit(0);
@ -55,6 +59,7 @@ fn main() {
if let Err(e) = match command {
Command::Prepare => prepare::run(),
Command::Build => build::run(),
Command::Test => test::run(),
} {
eprintln!("Command failed to run: {e:?}");
process::exit(1);

15
build_system/src/test.rs Normal file
View File

@ -0,0 +1,15 @@
use crate::utils::run_command_with_output;
fn get_args<'a>(args: &mut Vec<&'a dyn AsRef<std::ffi::OsStr>>, extra_args: &'a Vec<String>) {
for extra_arg in extra_args {
args.push(extra_arg);
}
}
pub fn run() -> Result<(), String> {
let mut args: Vec<&dyn AsRef<std::ffi::OsStr>> = vec![&"bash", &"test.sh"];
let extra_args = std::env::args().skip(2).collect::<Vec<_>>();
get_args(&mut args, &extra_args);
let current_dir = std::env::current_dir().map_err(|error| format!("`current_dir` failed: {:?}", error))?;
run_command_with_output(args.as_slice(), Some(&current_dir))
}