mod integrated_test { use std::{ fs::File, io::{BufRead, BufReader}, path::PathBuf, }; use anyhow::Result; use assert_cmd::{assert::OutputAssertExt, Command}; use predicates::prelude::*; #[test] fn full_log() -> Result<()> { let test_out_dir = assert_fs::TempDir::new()?; let test_out = PathBuf::new().join(&test_out_dir).join("out.csv"); // 1st file let mut cmd = Command::cargo_bin("psb-qaqc-parse")?; cmd.current_dir("tests") .arg("./example_logs/valid/20240720_171418.log") .arg(test_out.as_path()) .assert() .success() .stdout(predicate::str::contains("Creating new file")); // check output { let f = File::open(test_out.clone())?; let r = BufReader::new(f); assert!(r .lines() .any(|line| { line.unwrap().contains("8868,,A-0-1,0,1,1,0,1,8,1,") })); } // 2nd file let mut cmd = Command::cargo_bin("psb-qaqc-parse")?; cmd.current_dir("tests") .arg("./example_logs/valid/20240720_171418.log") .arg(test_out.as_path()) .assert() .success(); Ok(()) } #[test] fn partial_log() -> Result<()> { let test_out_dir = assert_fs::TempDir::new()?; let test_out = PathBuf::new().join(&test_out_dir).join("out.csv"); let mut cmd = Command::cargo_bin("psb-qaqc-parse")?; cmd.current_dir("tests") .arg("./example_logs/valid/20240720_171419.log") .arg(test_out.as_path()) .assert() .success() .stdout(predicate::str::contains("Creating new file")); Ok(()) } }