solverforge-cli 1.1.3

CLI for scaffolding and managing SolverForge constraint solver projects
use std::process::Command;

use crate::error::{CliError, CliResult};
use crate::output;

// Wraps `cargo test` with optional passthrough arguments.
pub fn run(extra_args: &[String]) -> CliResult {
    output::print_status("test", "running cargo test");

    let mut cmd = Command::new("cargo");
    cmd.arg("test");
    cmd.args(extra_args);

    let status = cmd.status().map_err(|e| CliError::IoError {
        context: "failed to run cargo test".to_string(),
        source: e,
    })?;

    if status.success() {
        Ok(())
    } else {
        Err(CliError::SubprocessFailed {
            command: "cargo test".to_string(),
        })
    }
}