added: use out_runid.csv as default output path

This commit is contained in:
Wataru Otsubo 2024-07-25 23:34:27 +09:00
parent 1ec3f8107c
commit 772f7a155f
4 changed files with 34 additions and 10 deletions

View file

@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- Use `out_<runid>.csv` as default output path
## [1.0.1]
### Fixed

View file

@ -11,7 +11,7 @@ use anyhow::{anyhow, Context, Result};
use chrono::{DateTime, Utc};
use clap::{Parser, Subcommand};
use log::{debug, error, info, trace, warn};
use masterlog::MasterLogResult;
use masterlog::{get_output_filename, MasterLogResult};
use semver::Version;
use serde::{Deserialize, Serialize};
use serde_with::{serde_as, DisplayFromStr};
@ -36,8 +36,9 @@ pub enum Commands {
/// Master log file.
master_log: path::PathBuf,
/// Output CSV file.
/// Default is `out_<runid>.csv`
// #[arg(default_value = get_default_log_path().into_os_string())]
outfile: PathBuf,
outfile: Option<PathBuf>,
},
/// Check CSV format
CheckDB {
@ -377,6 +378,8 @@ fn main() -> Result<()> {
}
}
let outfile = outfile.unwrap_or(get_output_filename(&result));
let expanded_results = PsbQaqcResult::from_masterlogresult(result);
let mut wtr = match outfile.exists() {

View file

@ -1,4 +1,4 @@
use std::{collections::BTreeMap, io::BufRead, str::FromStr};
use std::{collections::BTreeMap, io::BufRead, path::PathBuf, str::FromStr};
use anyhow::{anyhow, Context, Result};
use chrono::{DateTime, Utc};
@ -6,7 +6,7 @@ use log::{debug, info, trace};
use regex::Regex;
use semver::Version;
use crate::{Position, PositionLayer, PsbId};
use crate::{Position, PositionLayer, PsbId, PsbQaqcResult};
/// QAQC results for each boards extracted from master log.
///
@ -303,6 +303,10 @@ impl MasterLogResult {
}
}
pub fn get_output_filename(result: &MasterLogResult) -> PathBuf {
PathBuf::from(format!("out_{}.csv", result.runid))
}
#[cfg(test)]
mod test {
use semver::Version;

View file

@ -1,11 +1,13 @@
mod integrated_test {
use std::{
fs::File,
env::current_dir,
ffi::OsString,
fs::{self, read_dir, File},
io::{BufRead, BufReader},
path::PathBuf,
};
use anyhow::Result;
use anyhow::{Context, Result};
use assert_cmd::Command;
use itertools::Itertools;
use predicates::prelude::*;
@ -67,17 +69,28 @@ mod integrated_test {
#[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");
fs::copy(
"./tests/example_logs/valid/84.log",
test_out_dir.join("84.log"),
)
.context("Error preparing source file")?;
let mut cmd = Command::cargo_bin("psb-qaqc")?;
cmd.current_dir("tests")
cmd.current_dir(&test_out_dir)
.arg("add-master-log")
.arg("./example_logs/valid/84.log")
.arg(test_out.as_path())
.arg("84.log")
.assert()
.success()
.stdout(predicate::str::contains("Creating new file"));
assert!(read_dir(&test_out_dir)
.context("Failed to read dir")?
.any(|entry| {
entry
.map_or(OsString::from(""), |entry| entry.file_name())
.eq("out_84.csv")
}));
Ok(())
}
}