74 lines · 1.8 KB · Rust
RawDownload
use std::process::Command;use std::process::Stdio; use testutils::ensure_running_outside_ci; fn taplo_check_config(file: &str) {    if Command::new("taplo")        .arg("--version")        .stdout(Stdio::null())        .status()        .is_err()    {        ensure_running_outside_ci("`taplo` must be in the PATH");        eprintln!("Skipping test because taplo is not installed on the system");        return;    }     // Taplo requires an absolute URL to the schema :/    let root = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));    let taplo_res = Command::new("taplo")        .args([            "check",            "--schema",            &format!("file://{}/src/config-schema.json", root.display()),            file,        ])        .stdout(Stdio::piped())        .stderr(Stdio::piped())        .spawn()        .unwrap()        .wait_with_output()        .unwrap();     if !taplo_res.status.success() {        eprintln!("Failed to validate {file}:");        eprintln!("{}", String::from_utf8_lossy(&taplo_res.stderr));        panic!("Validation failed");    }} #[test]fn test_taplo_check_colors_config() {    taplo_check_config("src/config/colors.toml");} #[test]fn test_taplo_check_merge_tools_config() {    taplo_check_config("src/config/merge_tools.toml");} #[test]fn test_taplo_check_misc_config() {    taplo_check_config("src/config/misc.toml");} #[test]fn test_taplo_check_revsets_config() {    taplo_check_config("src/config/revsets.toml");} #[test]fn test_taplo_check_templates_config() {    taplo_check_config("src/config/templates.toml");} #[test]fn test_taplo_check_unix_config() {    taplo_check_config("src/config/unix.toml");} #[test]fn test_taplo_check_windows_config() {    taplo_check_config("src/config/windows.toml");}