rsomics-vcf-validate 0.1.0

Validate VCF format integrity
Documentation
use std::process::Command;

fn ours() -> Command {
    Command::new(env!("CARGO_BIN_EXE_rsomics-vcf-validate"))
}

// No lenient-vs-strict agreeing VCF-validator CLI exists to diff against
// (bcftools view is a parser, not a structural validator). Self-correctness: a
// well-formed VCF passes (exit 0); malformed content fails (non-zero).
#[test]
fn accepts_valid_rejects_invalid() {
    let dir = std::env::temp_dir().join("rsomics-vcf-validate-compat");
    std::fs::create_dir_all(&dir).unwrap();
    let ok = dir.join("ok.vcf");
    std::fs::write(
        &ok,
        "##fileformat=VCFv4.2\n#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\nchr1\t1\t.\tA\tG\t.\t.\t.\n",
    )
    .unwrap();
    let bad = dir.join("bad.vcf");
    std::fs::write(&bad, "garbage\nnot a vcf at all\n").unwrap();

    assert!(
        ours().arg(&ok).status().unwrap().success(),
        "valid VCF must pass"
    );
    assert!(
        !ours().arg(&bad).status().unwrap().success(),
        "malformed VCF must fail"
    );
}