From ccfb6d664899165be9cf26a7ed13085a57794693 Mon Sep 17 00:00:00 2001 From: Nico Wagner Date: Tue, 4 Jul 2023 08:49:55 +0200 Subject: [PATCH] Stabilize `sample` sample command (#641) --- CHANGELOG.md | 1 + README.md | 2 +- pica-record/src/record.rs | 4 + src/bin/pica/commands/sample.rs | 79 ++-- src/bin/pica/main.rs | 2 - tests/common/mod.rs | 43 -- tests/main.rs | 4 - tests/pica/mod.rs | 26 -- tests/pica/sample.rs | 395 ------------------ tests/snapshot.rs | 7 + .../sample/000-sample-single-record.toml | 6 + .../dump.dat.gz | Bin .../samples.dat | 0 ...seed-rng.toml => 001-sample-seed-rng.toml} | 0 .../Pica.toml | 2 + .../dump.dat.gz | Bin 0 -> 3675 bytes .../samples.dat | 2 + .../002-sample-skip-invalid-config1.toml | 5 + .../Pica.toml | 2 + .../dump.dat.gz | Bin 0 -> 3675 bytes .../samples.dat | 2 + .../003-sample-skip-invalid-config2.toml | 5 + .../Pica.toml | 5 + .../dump.dat.gz | Bin 0 -> 3675 bytes .../samples.dat | 2 + .../004-sample-skip-invalid-config3.toml | 5 + .../Pica.toml | 5 + .../dump.dat.gz | Bin 0 -> 3675 bytes .../samples.dat | 2 + .../005-sample-skip-invalid-config4.toml | 5 + .../006-sample-gzip-output.in/dump.dat.gz | Bin 0 -> 3675 bytes .../006-sample-gzip-output.out/samples.dat | Bin 0 -> 726 bytes .../sample/006-sample-gzip-output.toml | 5 + 33 files changed, 111 insertions(+), 505 deletions(-) delete mode 100644 tests/common/mod.rs delete mode 100644 tests/pica/mod.rs delete mode 100644 tests/pica/sample.rs create mode 100644 tests/snapshot/sample/000-sample-single-record.toml rename tests/snapshot/sample/{564-sample-seed-rng.in => 001-sample-seed-rng.in}/dump.dat.gz (100%) rename tests/snapshot/sample/{564-sample-seed-rng.out => 001-sample-seed-rng.out}/samples.dat (100%) rename tests/snapshot/sample/{564-sample-seed-rng.toml => 001-sample-seed-rng.toml} (100%) create mode 100644 tests/snapshot/sample/002-sample-skip-invalid-config1.in/Pica.toml create mode 100644 tests/snapshot/sample/002-sample-skip-invalid-config1.in/dump.dat.gz create mode 100644 tests/snapshot/sample/002-sample-skip-invalid-config1.out/samples.dat create mode 100644 tests/snapshot/sample/002-sample-skip-invalid-config1.toml create mode 100644 tests/snapshot/sample/003-sample-skip-invalid-config2.in/Pica.toml create mode 100644 tests/snapshot/sample/003-sample-skip-invalid-config2.in/dump.dat.gz create mode 100644 tests/snapshot/sample/003-sample-skip-invalid-config2.out/samples.dat create mode 100644 tests/snapshot/sample/003-sample-skip-invalid-config2.toml create mode 100644 tests/snapshot/sample/004-sample-skip-invalid-config3.in/Pica.toml create mode 100644 tests/snapshot/sample/004-sample-skip-invalid-config3.in/dump.dat.gz create mode 100644 tests/snapshot/sample/004-sample-skip-invalid-config3.out/samples.dat create mode 100644 tests/snapshot/sample/004-sample-skip-invalid-config3.toml create mode 100644 tests/snapshot/sample/005-sample-skip-invalid-config4.in/Pica.toml create mode 100644 tests/snapshot/sample/005-sample-skip-invalid-config4.in/dump.dat.gz create mode 100644 tests/snapshot/sample/005-sample-skip-invalid-config4.out/samples.dat create mode 100644 tests/snapshot/sample/005-sample-skip-invalid-config4.toml create mode 100644 tests/snapshot/sample/006-sample-gzip-output.in/dump.dat.gz create mode 100644 tests/snapshot/sample/006-sample-gzip-output.out/samples.dat create mode 100644 tests/snapshot/sample/006-sample-gzip-output.toml diff --git a/CHANGELOG.md b/CHANGELOG.md index a339592bf..18a9fb84d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added * #637 Stabilize `print` command +* #641 Stabilize `sample` command ### Removed diff --git a/README.md b/README.md index 221c6a54d..e967c5cfd 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ $ cargo install --git https://github.com/deutsche-nationalbibliothek/pica-rs --t | [invalid](#invalid) | stable | write input lines, which can't be decoded as normalized PICA+ | | [partition](#partition) | stable | partition a list of records based on subfield values | | [print](#print) | stable | print records in human readable format | -| [sample](#sample) | beta | selects a random permutation of records | +| [sample](#sample) | stable | selects a random permutation of records | | [select](#select) | beta | select subfield values from records | | [slice](#slice) | stable | return records withing a range (half-open interval) | | [split](#split) | stable | split a list of records into chunks | diff --git a/pica-record/src/record.rs b/pica-record/src/record.rs index ce2d14184..7c504d457 100644 --- a/pica-record/src/record.rs +++ b/pica-record/src/record.rs @@ -339,6 +339,10 @@ impl<'a> ByteRecord<'a> { let result = hasher.finalize(); result.to_vec() } + + pub fn into_inner(self) -> RecordRef<'a> { + self.record + } } impl<'a> Deref for ByteRecord<'a> { diff --git a/src/bin/pica/commands/sample.rs b/src/bin/pica/commands/sample.rs index 8a6ae4a49..c043b938c 100644 --- a/src/bin/pica/commands/sample.rs +++ b/src/bin/pica/commands/sample.rs @@ -1,10 +1,8 @@ use std::ffi::OsString; -use std::io::{self, Read}; use clap::{value_parser, Parser}; -use pica::{ - ByteRecord, PicaWriter, Reader, ReaderBuilder, WriterBuilder, -}; +use pica_record::io::{ReaderBuilder, RecordsIterator, WriterBuilder}; +use pica_record::ByteRecord; use rand::rngs::StdRng; use rand::{thread_rng, Rng, SeedableRng}; use serde::{Deserialize, Serialize}; @@ -20,9 +18,11 @@ pub(crate) struct SampleConfig { pub(crate) gzip: Option, } +/// Selects a random permutation of records of the given sample size +/// using reservoir sampling. #[derive(Parser, Debug)] pub(crate) struct Sample { - /// Skip invalid records that can't be decoded + /// Skip invalid records that can't be decoded as normalized PICA+ #[arg(short, long)] skip_invalid: bool, @@ -34,14 +34,18 @@ pub(crate) struct Sample { #[arg(short, long, value_name = "filename")] output: Option, - /// RNG seed + /// Initialize the RNG with a seed value to get deterministic + /// random records. #[arg(long, value_name = "number")] seed: Option, + /// Number of random records #[arg(value_parser = value_parser!(u16).range(1..))] sample_size: u16, - /// Read one or more files in normalized PICA+ format. + /// Read one or more files in normalized PICA+ format. If no + /// filenames where given or a filename is "-", data is read from + /// standard input (stdin) #[arg(default_value = "-", hide_default_value = true)] filenames: Vec, } @@ -55,49 +59,56 @@ impl Sample { config.global ); - let mut writer: Box = WriterBuilder::new() + let mut writer = WriterBuilder::new() .gzip(gzip_compression) .from_path_or_stdout(self.output)?; - let sample_size = self.sample_size as usize; - let mut reservoir: Vec = - Vec::with_capacity(sample_size); - let mut rng: StdRng = match self.seed { None => StdRng::from_rng(thread_rng()).unwrap(), Some(seed) => StdRng::seed_from_u64(seed), }; + let sample_size = self.sample_size as usize; + let mut reservoir: Vec> = + Vec::with_capacity(sample_size); + let mut i = 0; for filename in self.filenames { - let builder = - ReaderBuilder::new().skip_invalid(skip_invalid); - let mut reader: Reader> = match filename - .to_str() - { - Some("-") => builder.from_reader(Box::new(io::stdin())), - _ => builder.from_path(filename)?, - }; - - for result in reader.byte_records() { - let record = result?; - - if i < sample_size { - reservoir.push(record); - } else { - let j = rng.gen_range(0..i); - if j < sample_size { - reservoir[j] = record; + let mut reader = + ReaderBuilder::new().from_path(filename)?; + + while let Some(result) = reader.next() { + match result { + Err(e) => { + if e.is_invalid_record() && skip_invalid { + continue; + } else { + return Err(e.into()); + } + } + Ok(record) => { + let mut data = Vec::::new(); + record.write_to(&mut data)?; + + if i < sample_size { + reservoir.push(data); + } else { + let j = rng.gen_range(0..i); + if j < sample_size { + reservoir[j] = data; + } + } + + i += 1; } } - - i += 1; } } - for record in &reservoir { - writer.write_byte_record(record)?; + for data in &reservoir { + let record = ByteRecord::from_bytes(data).unwrap(); + writer.write_byte_record(&record)?; } writer.finish()?; diff --git a/src/bin/pica/main.rs b/src/bin/pica/main.rs index 38d87d77b..96c3fc5e6 100644 --- a/src/bin/pica/main.rs +++ b/src/bin/pica/main.rs @@ -51,8 +51,6 @@ enum Commands { Invalid(Invalid), Partition(Partition), Print(Print), - - /// Selects a random permutation of records Sample(Sample), /// Select subfield values from records diff --git a/tests/common/mod.rs b/tests/common/mod.rs deleted file mode 100644 index 83f2703f2..000000000 --- a/tests/common/mod.rs +++ /dev/null @@ -1,43 +0,0 @@ -use std::fs::File; -use std::io::Write; - -use assert_cmd::Command; -use tempfile::{Builder, TempDir}; - -pub type TestResult = Result<(), Box>; - -pub(crate) struct TestContext { - pub(crate) tempdir: TempDir, -} - -impl TestContext { - pub(crate) fn new() -> Self { - let tempdir = Builder::new().tempdir().unwrap(); - TestContext { tempdir } - } -} - -pub(crate) trait CommandExt { - fn with_config( - &mut self, - ctx: &TestContext, - content: &str, - ) -> &mut Self; -} - -impl CommandExt for Command { - fn with_config( - &mut self, - ctx: &TestContext, - content: &str, - ) -> &mut Self { - let filename = ctx.tempdir.path().join("Pica.toml"); - let mut config = - File::create(&filename).expect("create config file"); - config.write_all(content.as_bytes()).expect("write config"); - config.flush().expect("flush config"); - - self.arg("--config").arg(filename); - self - } -} diff --git a/tests/main.rs b/tests/main.rs index 96fd77472..aad995068 100644 --- a/tests/main.rs +++ b/tests/main.rs @@ -1,6 +1,2 @@ -pub use self::common::TestResult; - -mod common; mod path; -mod pica; mod snapshot; diff --git a/tests/pica/mod.rs b/tests/pica/mod.rs deleted file mode 100644 index 684fc38ef..000000000 --- a/tests/pica/mod.rs +++ /dev/null @@ -1,26 +0,0 @@ -use assert_cmd::Command; -use predicates::prelude::*; - -use crate::TestResult; - -mod sample; - -#[test] -fn pica_io_error() -> TestResult { - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("--config") - .arg("/root/Pica.toml") - .arg("cat") - .arg("--skip-invalid") - .arg("tests/data/invalid.dat") - .assert(); - - assert - .failure() - .code(1) - .stdout(predicate::str::is_empty()) - .stderr(predicate::str::starts_with("IO Error")); - - Ok(()) -} diff --git a/tests/pica/sample.rs b/tests/pica/sample.rs deleted file mode 100644 index fad4ac882..000000000 --- a/tests/pica/sample.rs +++ /dev/null @@ -1,395 +0,0 @@ -use std::fs::{read_to_string, File}; -use std::io::Read; -use std::path::Path; - -use assert_cmd::Command; -use flate2::read::GzDecoder; -use predicates::prelude::*; -use tempfile::Builder; - -use crate::common::{CommandExt, TestContext, TestResult}; - -#[test] -fn pica_sample_single_file() -> TestResult { - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("1") - .arg("--skip-invalid") - .arg("tests/data/dump.dat.gz") - .assert(); - - let data_dir = Path::new("tests/data"); - - assert.success().stdout( - predicate::never() - .or(predicate::path::eq_file( - data_dir.join("1004916019.dat"), - )) - .or(predicate::path::eq_file( - data_dir.join("119232022.dat"), - )) - .or(predicate::path::eq_file( - data_dir.join("000008672.dat"), - )) - .or(predicate::path::eq_file( - data_dir.join("000016586.dat"), - )) - .or(predicate::path::eq_file( - data_dir.join("000016756.dat"), - )) - .or(predicate::path::eq_file( - data_dir.join("000009229.dat"), - )) - .or(predicate::path::eq_file( - data_dir.join("121169502.dat"), - )), - ); - - Ok(()) -} - -#[test] -fn pica_sample_multiple_files() -> TestResult { - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("1") - .arg("tests/data/1004916019.dat") - .arg("tests/data/119232022.dat") - .assert(); - - let data_dir = Path::new("tests/data"); - - assert.success().stdout( - predicate::never() - .or(predicate::path::eq_file( - data_dir.join("1004916019.dat"), - )) - .or(predicate::path::eq_file( - data_dir.join("119232022.dat"), - )), - ); - - let data = read_to_string("tests/data/1004916019.dat").unwrap(); - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("1") - .arg("-") - .arg("tests/data/119232022.dat") - .write_stdin(data) - .assert(); - - let data_dir = Path::new("tests/data"); - - assert.success().stdout( - predicate::never() - .or(predicate::path::eq_file( - data_dir.join("1004916019.dat"), - )) - .or(predicate::path::eq_file( - data_dir.join("119232022.dat"), - )), - ); - - Ok(()) -} - -#[test] -fn pica_sample_stdin() -> TestResult { - let data = read_to_string("tests/data/1004916019.dat").unwrap(); - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd.arg("sample").arg("1").write_stdin(data).assert(); - - let data_dir = Path::new("tests/data"); - - assert - .success() - .stdout(predicate::path::eq_file( - data_dir.join("1004916019.dat"), - )) - .stderr(predicate::str::is_empty()); - - let data = read_to_string("tests/data/1004916019.dat").unwrap(); - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("1") - .arg("-") - .write_stdin(data) - .assert(); - - let data_dir = Path::new("tests/data"); - - assert - .success() - .stdout(predicate::path::eq_file( - data_dir.join("1004916019.dat"), - )) - .stderr(predicate::str::is_empty()); - - Ok(()) -} - -#[test] -fn pica_sample_size_le_len() -> TestResult { - let filename = Builder::new().suffix(".dat").tempfile()?; - let filename_str = filename.path(); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("--skip-invalid") - .arg("--output") - .arg(filename_str) - .arg("2") - .arg("tests/data/dump.dat.gz") - .assert(); - - assert.success(); - - let actual = read_to_string(filename_str).unwrap(); - assert_eq!(actual.lines().count(), 2); - Ok(()) -} - -#[test] -fn pica_sample_size_eq_len() -> TestResult { - let filename = Builder::new().suffix(".dat").tempfile()?; - let filename_str = filename.path(); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("--skip-invalid") - .arg("--output") - .arg(filename_str) - .arg("7") - .arg("tests/data/dump.dat.gz") - .assert(); - - assert.success(); - - let actual = read_to_string(filename_str).unwrap(); - assert_eq!(actual.lines().count(), 7); - Ok(()) -} - -#[test] -fn pica_sample_size_gt_len() -> TestResult { - let filename = Builder::new().suffix(".dat").tempfile()?; - let filename_str = filename.path(); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("--skip-invalid") - .arg("--output") - .arg(filename_str) - .arg("8") - .arg("tests/data/dump.dat.gz") - .assert(); - - assert.success(); - - let actual = read_to_string(filename_str).unwrap(); - assert_eq!(actual.lines().count(), 7); - Ok(()) -} - -#[test] -fn pica_sample_size_invalid() -> TestResult { - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("--skip-invalid") - .arg("0") - .arg("tests/data/dump.dat.gz") - .assert(); - - // status code "2" is set by clap-rs - assert.failure().code(2).stdout(predicate::str::is_empty()); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("--skip-invalid") - .arg("a") - .arg("tests/data/dump.dat.gz") - .assert(); - - // status code "2" is set by clap-rs - assert.failure().code(2).stdout(predicate::str::is_empty()); - - Ok(()) -} - -#[test] -fn pica_sample_write_output() -> TestResult { - let filename = Builder::new().suffix(".dat").tempfile()?; - let filename_str = filename.path(); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("--skip-invalid") - .arg("--output") - .arg(filename_str) - .arg("1") - .arg("tests/data/1004916019.dat") - .assert(); - assert.success().stdout(predicate::str::is_empty()); - - let expected = predicate::path::eq_file(Path::new( - "tests/data/1004916019.dat", - )); - assert!(expected.eval(Path::new(filename_str))); - - Ok(()) -} - -#[test] -fn pica_sample_write_gzip() -> TestResult { - let expected = read_to_string("tests/data/1004916019.dat").unwrap(); - - // filename - let filename = Builder::new().suffix(".dat.gz").tempfile()?; - let filename_str = filename.path(); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("--skip-invalid") - .arg("--output") - .arg(filename_str) - .arg("1") - .arg("tests/data/1004916019.dat") - .assert(); - assert.success().stdout(predicate::str::is_empty()); - - let mut gz = GzDecoder::new(File::open(filename_str).unwrap()); - let mut actual = String::new(); - gz.read_to_string(&mut actual).unwrap(); - assert_eq!(expected, actual); - - // flag - let filename = Builder::new().suffix(".dat").tempfile()?; - let filename_str = filename.path(); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("--skip-invalid") - .arg("--gzip") - .arg("--output") - .arg(filename_str) - .arg("1") - .arg("tests/data/1004916019.dat") - .assert(); - assert.success().stdout(predicate::str::is_empty()); - - let mut gz = GzDecoder::new(File::open(filename_str).unwrap()); - let mut actual = String::new(); - gz.read_to_string(&mut actual).unwrap(); - assert_eq!(expected, actual); - - Ok(()) -} - -#[test] -fn pica_sample_skip_invalid() -> TestResult { - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("1") - .arg("--skip-invalid") - .arg("tests/data/invalid.dat") - .assert(); - - assert.success().stdout(predicate::str::is_empty()); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .arg("sample") - .arg("1") - .arg("tests/data/dump.dat.gz") - .assert(); - - assert - .failure() - .code(1) - .stdout(predicate::str::is_empty()) - .stderr(predicate::eq( - "Pica Error: Invalid record on line 2.\n", - )); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .with_config( - &TestContext::new(), - r#"[global] -skip-invalid = true -"#, - ) - .arg("sample") - .arg("1") - .arg("tests/data/invalid.dat") - .assert(); - - assert.success().stdout(predicate::str::is_empty()); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .with_config( - &TestContext::new(), - r#"[sample] -skip-invalid = true -"#, - ) - .arg("sample") - .arg("1") - .arg("tests/data/invalid.dat") - .assert(); - - assert.success().stdout(predicate::str::is_empty()); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .with_config( - &TestContext::new(), - r#"[global] -skip-invalid = false - -[sample] -skip-invalid = true -"#, - ) - .arg("sample") - .arg("1") - .arg("tests/data/invalid.dat") - .assert(); - - assert.success().stdout(predicate::str::is_empty()); - - let mut cmd = Command::cargo_bin("pica")?; - let assert = cmd - .with_config( - &TestContext::new(), - r#"[global] -skip-invalid = false - -[sample] -skip-invalid = false -"#, - ) - .arg("sample") - .arg("--skip-invalid") - .arg("1") - .arg("tests/data/invalid.dat") - .assert(); - - assert.success().stdout(predicate::str::is_empty()); - - Ok(()) -} diff --git a/tests/snapshot.rs b/tests/snapshot.rs index 0427109ff..5da1ed4e3 100644 --- a/tests/snapshot.rs +++ b/tests/snapshot.rs @@ -81,3 +81,10 @@ fn print() { .case("tests/snapshot/print/*.toml") .case("tests/snapshot/print/*.trycmd"); } + +#[test] +fn sample() { + trycmd::TestCases::new() + .case("tests/snapshot/sample/*.toml") + .case("tests/snapshot/sample/*.trycmd"); +} diff --git a/tests/snapshot/sample/000-sample-single-record.toml b/tests/snapshot/sample/000-sample-single-record.toml new file mode 100644 index 000000000..6e390982c --- /dev/null +++ b/tests/snapshot/sample/000-sample-single-record.toml @@ -0,0 +1,6 @@ +bin.name = "pica" +args = "sample 2" +status = "success" +stdin = "003@ \u001f0123456789X\u001e\n" +stdout = "003@ \u001f0123456789X\u001e\n" +stderr = "" diff --git a/tests/snapshot/sample/564-sample-seed-rng.in/dump.dat.gz b/tests/snapshot/sample/001-sample-seed-rng.in/dump.dat.gz similarity index 100% rename from tests/snapshot/sample/564-sample-seed-rng.in/dump.dat.gz rename to tests/snapshot/sample/001-sample-seed-rng.in/dump.dat.gz diff --git a/tests/snapshot/sample/564-sample-seed-rng.out/samples.dat b/tests/snapshot/sample/001-sample-seed-rng.out/samples.dat similarity index 100% rename from tests/snapshot/sample/564-sample-seed-rng.out/samples.dat rename to tests/snapshot/sample/001-sample-seed-rng.out/samples.dat diff --git a/tests/snapshot/sample/564-sample-seed-rng.toml b/tests/snapshot/sample/001-sample-seed-rng.toml similarity index 100% rename from tests/snapshot/sample/564-sample-seed-rng.toml rename to tests/snapshot/sample/001-sample-seed-rng.toml diff --git a/tests/snapshot/sample/002-sample-skip-invalid-config1.in/Pica.toml b/tests/snapshot/sample/002-sample-skip-invalid-config1.in/Pica.toml new file mode 100644 index 000000000..dfa88ef35 --- /dev/null +++ b/tests/snapshot/sample/002-sample-skip-invalid-config1.in/Pica.toml @@ -0,0 +1,2 @@ +[global] +skip-invalid = true diff --git a/tests/snapshot/sample/002-sample-skip-invalid-config1.in/dump.dat.gz b/tests/snapshot/sample/002-sample-skip-invalid-config1.in/dump.dat.gz new file mode 100644 index 0000000000000000000000000000000000000000..06c3230dd45b9f0f5b47f7a52e18dc04e238c1b3 GIT binary patch literal 3675 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 literal 0 HcmV?d00001 diff --git a/tests/snapshot/sample/002-sample-skip-invalid-config1.out/samples.dat b/tests/snapshot/sample/002-sample-skip-invalid-config1.out/samples.dat new file mode 100644 index 000000000..d54686f90 --- /dev/null +++ b/tests/snapshot/sample/002-sample-skip-invalid-config1.out/samples.dat @@ -0,0 +1,2 @@ +001A 01250:01-07-88001B 09999:06-09-19t17:04:50.000001D 09999:06-09-19001U 0utf8001X 00002@ 0Tsz003@ 0040379442003U ahttp://d-nb.info/gnd/4037944-9004B asaz007K agnd04037944-9007N aswd04037944-9vzg008A asag008B awazao037G cT1--0151d2t2007-01-01037G c510d4t2007-01-01041@ aReine Mathematik041A aMathematik041P aMathematicsuhttp://lccn.loc.gov/sh85082139SDLC0sh 850821392lcshvMACS-Mapping. Bitte keine Änderungen vornehmen.041P aMathématiquesuhttp://data.bnf.fr/11932434SFrPBN0FRBNF1193243482ramvMACS-Mapping. Bitte keine Änderungen vornehmen.041R 90401594347Ts1VsazAgnd04015943-7aExakte Wissenschaften4obal042A a28047A/03 eDE-101047A/03 rDE-101047C SswdisaMathematik04037944-9050C aBearbeitungssperre (Top500) - Änderungswünsche an DNB050E aM070A/02 SMACS00000750 +001A 01250:16-06-11001B 09999:09-02-16t05:34:01.000001D 01250:16-06-11001U 0utf8001X 00002@ 0Tu1003@ 01012852784003U ahttp://d-nb.info/gnd/7749153-1004B awit007K agnd07749153-1007N aswd07749153-1vzg008A as008B aoaw022@ aGNDgWerk022A aGemeinsame NormdateigWerk041R 904239774X7Ts1Agnd04239774-1aNormdatei4obin042A a6.7047A/03 eDE-101047A/03 rDE-101047C SswditaGemeinsame Normdatei 07749153-1050E aDNB-Katalog050H avon der DNB in Kooperation mit den Verbundpartnern geführte gemeinsame Datei; Produktionsbeginn: 2012 diff --git a/tests/snapshot/sample/002-sample-skip-invalid-config1.toml b/tests/snapshot/sample/002-sample-skip-invalid-config1.toml new file mode 100644 index 000000000..a029b9008 --- /dev/null +++ b/tests/snapshot/sample/002-sample-skip-invalid-config1.toml @@ -0,0 +1,5 @@ +bin.name = "pica" +args = "-c Pica.toml sample --seed 42 2 dump.dat.gz -o samples.dat" +status = "success" +stdout = "" +stderr = "" diff --git a/tests/snapshot/sample/003-sample-skip-invalid-config2.in/Pica.toml b/tests/snapshot/sample/003-sample-skip-invalid-config2.in/Pica.toml new file mode 100644 index 000000000..10a7b19ab --- /dev/null +++ b/tests/snapshot/sample/003-sample-skip-invalid-config2.in/Pica.toml @@ -0,0 +1,2 @@ +[sample] +skip-invalid = true diff --git a/tests/snapshot/sample/003-sample-skip-invalid-config2.in/dump.dat.gz b/tests/snapshot/sample/003-sample-skip-invalid-config2.in/dump.dat.gz new file mode 100644 index 0000000000000000000000000000000000000000..06c3230dd45b9f0f5b47f7a52e18dc04e238c1b3 GIT binary patch literal 3675 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 literal 0 HcmV?d00001 diff --git a/tests/snapshot/sample/003-sample-skip-invalid-config2.out/samples.dat b/tests/snapshot/sample/003-sample-skip-invalid-config2.out/samples.dat new file mode 100644 index 000000000..d54686f90 --- /dev/null +++ b/tests/snapshot/sample/003-sample-skip-invalid-config2.out/samples.dat @@ -0,0 +1,2 @@ +001A 01250:01-07-88001B 09999:06-09-19t17:04:50.000001D 09999:06-09-19001U 0utf8001X 00002@ 0Tsz003@ 0040379442003U ahttp://d-nb.info/gnd/4037944-9004B asaz007K agnd04037944-9007N aswd04037944-9vzg008A asag008B awazao037G cT1--0151d2t2007-01-01037G c510d4t2007-01-01041@ aReine Mathematik041A aMathematik041P aMathematicsuhttp://lccn.loc.gov/sh85082139SDLC0sh 850821392lcshvMACS-Mapping. Bitte keine Änderungen vornehmen.041P aMathématiquesuhttp://data.bnf.fr/11932434SFrPBN0FRBNF1193243482ramvMACS-Mapping. Bitte keine Änderungen vornehmen.041R 90401594347Ts1VsazAgnd04015943-7aExakte Wissenschaften4obal042A a28047A/03 eDE-101047A/03 rDE-101047C SswdisaMathematik04037944-9050C aBearbeitungssperre (Top500) - Änderungswünsche an DNB050E aM070A/02 SMACS00000750 +001A 01250:16-06-11001B 09999:09-02-16t05:34:01.000001D 01250:16-06-11001U 0utf8001X 00002@ 0Tu1003@ 01012852784003U ahttp://d-nb.info/gnd/7749153-1004B awit007K agnd07749153-1007N aswd07749153-1vzg008A as008B aoaw022@ aGNDgWerk022A aGemeinsame NormdateigWerk041R 904239774X7Ts1Agnd04239774-1aNormdatei4obin042A a6.7047A/03 eDE-101047A/03 rDE-101047C SswditaGemeinsame Normdatei 07749153-1050E aDNB-Katalog050H avon der DNB in Kooperation mit den Verbundpartnern geführte gemeinsame Datei; Produktionsbeginn: 2012 diff --git a/tests/snapshot/sample/003-sample-skip-invalid-config2.toml b/tests/snapshot/sample/003-sample-skip-invalid-config2.toml new file mode 100644 index 000000000..a029b9008 --- /dev/null +++ b/tests/snapshot/sample/003-sample-skip-invalid-config2.toml @@ -0,0 +1,5 @@ +bin.name = "pica" +args = "-c Pica.toml sample --seed 42 2 dump.dat.gz -o samples.dat" +status = "success" +stdout = "" +stderr = "" diff --git a/tests/snapshot/sample/004-sample-skip-invalid-config3.in/Pica.toml b/tests/snapshot/sample/004-sample-skip-invalid-config3.in/Pica.toml new file mode 100644 index 000000000..c81d4053f --- /dev/null +++ b/tests/snapshot/sample/004-sample-skip-invalid-config3.in/Pica.toml @@ -0,0 +1,5 @@ +[global] +skip-invalid = false + +[sample] +skip-invalid = true diff --git a/tests/snapshot/sample/004-sample-skip-invalid-config3.in/dump.dat.gz b/tests/snapshot/sample/004-sample-skip-invalid-config3.in/dump.dat.gz new file mode 100644 index 0000000000000000000000000000000000000000..06c3230dd45b9f0f5b47f7a52e18dc04e238c1b3 GIT binary patch literal 3675 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 literal 0 HcmV?d00001 diff --git a/tests/snapshot/sample/004-sample-skip-invalid-config3.out/samples.dat b/tests/snapshot/sample/004-sample-skip-invalid-config3.out/samples.dat new file mode 100644 index 000000000..d54686f90 --- /dev/null +++ b/tests/snapshot/sample/004-sample-skip-invalid-config3.out/samples.dat @@ -0,0 +1,2 @@ +001A 01250:01-07-88001B 09999:06-09-19t17:04:50.000001D 09999:06-09-19001U 0utf8001X 00002@ 0Tsz003@ 0040379442003U ahttp://d-nb.info/gnd/4037944-9004B asaz007K agnd04037944-9007N aswd04037944-9vzg008A asag008B awazao037G cT1--0151d2t2007-01-01037G c510d4t2007-01-01041@ aReine Mathematik041A aMathematik041P aMathematicsuhttp://lccn.loc.gov/sh85082139SDLC0sh 850821392lcshvMACS-Mapping. Bitte keine Änderungen vornehmen.041P aMathématiquesuhttp://data.bnf.fr/11932434SFrPBN0FRBNF1193243482ramvMACS-Mapping. Bitte keine Änderungen vornehmen.041R 90401594347Ts1VsazAgnd04015943-7aExakte Wissenschaften4obal042A a28047A/03 eDE-101047A/03 rDE-101047C SswdisaMathematik04037944-9050C aBearbeitungssperre (Top500) - Änderungswünsche an DNB050E aM070A/02 SMACS00000750 +001A 01250:16-06-11001B 09999:09-02-16t05:34:01.000001D 01250:16-06-11001U 0utf8001X 00002@ 0Tu1003@ 01012852784003U ahttp://d-nb.info/gnd/7749153-1004B awit007K agnd07749153-1007N aswd07749153-1vzg008A as008B aoaw022@ aGNDgWerk022A aGemeinsame NormdateigWerk041R 904239774X7Ts1Agnd04239774-1aNormdatei4obin042A a6.7047A/03 eDE-101047A/03 rDE-101047C SswditaGemeinsame Normdatei 07749153-1050E aDNB-Katalog050H avon der DNB in Kooperation mit den Verbundpartnern geführte gemeinsame Datei; Produktionsbeginn: 2012 diff --git a/tests/snapshot/sample/004-sample-skip-invalid-config3.toml b/tests/snapshot/sample/004-sample-skip-invalid-config3.toml new file mode 100644 index 000000000..a029b9008 --- /dev/null +++ b/tests/snapshot/sample/004-sample-skip-invalid-config3.toml @@ -0,0 +1,5 @@ +bin.name = "pica" +args = "-c Pica.toml sample --seed 42 2 dump.dat.gz -o samples.dat" +status = "success" +stdout = "" +stderr = "" diff --git a/tests/snapshot/sample/005-sample-skip-invalid-config4.in/Pica.toml b/tests/snapshot/sample/005-sample-skip-invalid-config4.in/Pica.toml new file mode 100644 index 000000000..191ca724b --- /dev/null +++ b/tests/snapshot/sample/005-sample-skip-invalid-config4.in/Pica.toml @@ -0,0 +1,5 @@ +[global] +skip-invalid = false + +[sample] +skip-invalid = false diff --git a/tests/snapshot/sample/005-sample-skip-invalid-config4.in/dump.dat.gz b/tests/snapshot/sample/005-sample-skip-invalid-config4.in/dump.dat.gz new file mode 100644 index 0000000000000000000000000000000000000000..06c3230dd45b9f0f5b47f7a52e18dc04e238c1b3 GIT binary patch literal 3675 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 literal 0 HcmV?d00001 diff --git a/tests/snapshot/sample/005-sample-skip-invalid-config4.out/samples.dat b/tests/snapshot/sample/005-sample-skip-invalid-config4.out/samples.dat new file mode 100644 index 000000000..d54686f90 --- /dev/null +++ b/tests/snapshot/sample/005-sample-skip-invalid-config4.out/samples.dat @@ -0,0 +1,2 @@ +001A 01250:01-07-88001B 09999:06-09-19t17:04:50.000001D 09999:06-09-19001U 0utf8001X 00002@ 0Tsz003@ 0040379442003U ahttp://d-nb.info/gnd/4037944-9004B asaz007K agnd04037944-9007N aswd04037944-9vzg008A asag008B awazao037G cT1--0151d2t2007-01-01037G c510d4t2007-01-01041@ aReine Mathematik041A aMathematik041P aMathematicsuhttp://lccn.loc.gov/sh85082139SDLC0sh 850821392lcshvMACS-Mapping. Bitte keine Änderungen vornehmen.041P aMathématiquesuhttp://data.bnf.fr/11932434SFrPBN0FRBNF1193243482ramvMACS-Mapping. Bitte keine Änderungen vornehmen.041R 90401594347Ts1VsazAgnd04015943-7aExakte Wissenschaften4obal042A a28047A/03 eDE-101047A/03 rDE-101047C SswdisaMathematik04037944-9050C aBearbeitungssperre (Top500) - Änderungswünsche an DNB050E aM070A/02 SMACS00000750 +001A 01250:16-06-11001B 09999:09-02-16t05:34:01.000001D 01250:16-06-11001U 0utf8001X 00002@ 0Tu1003@ 01012852784003U ahttp://d-nb.info/gnd/7749153-1004B awit007K agnd07749153-1007N aswd07749153-1vzg008A as008B aoaw022@ aGNDgWerk022A aGemeinsame NormdateigWerk041R 904239774X7Ts1Agnd04239774-1aNormdatei4obin042A a6.7047A/03 eDE-101047A/03 rDE-101047C SswditaGemeinsame Normdatei 07749153-1050E aDNB-Katalog050H avon der DNB in Kooperation mit den Verbundpartnern geführte gemeinsame Datei; Produktionsbeginn: 2012 diff --git a/tests/snapshot/sample/005-sample-skip-invalid-config4.toml b/tests/snapshot/sample/005-sample-skip-invalid-config4.toml new file mode 100644 index 000000000..ec0d04f67 --- /dev/null +++ b/tests/snapshot/sample/005-sample-skip-invalid-config4.toml @@ -0,0 +1,5 @@ +bin.name = "pica" +args = "-c Pica.toml sample -s --seed 42 2 dump.dat.gz -o samples.dat" +status = "success" +stdout = "" +stderr = "" diff --git a/tests/snapshot/sample/006-sample-gzip-output.in/dump.dat.gz b/tests/snapshot/sample/006-sample-gzip-output.in/dump.dat.gz new file mode 100644 index 0000000000000000000000000000000000000000..06c3230dd45b9f0f5b47f7a52e18dc04e238c1b3 GIT binary patch literal 3675 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 literal 0 HcmV?d00001 diff --git a/tests/snapshot/sample/006-sample-gzip-output.out/samples.dat b/tests/snapshot/sample/006-sample-gzip-output.out/samples.dat new file mode 100644 index 0000000000000000000000000000000000000000..db0b1cd97beb5b0c75d1adf788717dd45eb61664 GIT binary patch literal 726 zcmV;{0xA6;iwFP!00000|D97!bJ{Qvz4u2T9ovJAH_i+9Do;OX6<&+?Iujm zy<9JgZmN^+k;Git0LPI=x(d-1hL|VNBt#QO*f&wKdrUFYAG!=)aj`42C-RZVqJz9k zN)|KD81RsjL=Y>m5_8|c>vYJ0Btbh9aD0WlRk>F5TG~u)q|H|jcfH!kO%qudQXSvA zUM#e?E*4%|?7AlFhtL5PEM=nEp&3zL!E_3&)UuH|-{>(ry8+*(CfhY^NP z-*uwON~cQGT~TV4ZIt#}-Jia>{$DC}njn!@dUL(>mSvao*cX8xkm*HvGnx>%xE)O{ zYP3&8DL4N)!Yw5+E`^7&s~^n_CwI6>GCc0^kYEv!=U?Rt3*P6(C~X#*Tw0|`P|W2T z>j?L?0%a9M!!G!gsPQ@Dhix2z@&uewGIe6eO>-SB#e{$)Ia0EmtK8z?#%xttD*Ad> zY(s!Ilr>&u_7%oBl%i78@nqx*oV(BMKm^!dU`O{oC~iDa2%T5Za27|0^cd%DXT=Nz z<2_;_9QXm+uj#B`?)}+W6|bFz?-%`0ME&5e){3Ga=AqAcZLNK7Th?k4PS$!sTh^+5 zRbZJ82se_voQz3&ugaAJ9P3hTP$))j6rB|12DPX1no(;+_%U{Pc-F{K9?uwdl&5Pb ziCou`=y}mUYQp}08v4#n^S<@==N;p^*%g{)U8D~Bh|sRk6qVtWKyyv6iUP%h8bf%K zTTE$sr^