Skip to content

Commit 65535ff

Browse files
authored
Adds test for better fgoxide header error and bump fgoxide version. (#43)
1 parent 335cad9 commit 65535ff

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

Cargo.lock

+3-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ bstr = "1.0.1"
3636
clap = { version = "4.0.25", features = ["derive"] }
3737
enum_dispatch = "0.3.8"
3838
env_logger = "0.9.3"
39-
fgoxide = "0.3.0"
39+
fgoxide = "0.5.0"
4040
flate2 = { version = "1.0.25", features = ["zlib-ng"] } # Force the faster backend that requires a C compiler
4141
itertools = "0.10.5"
4242
log = "0.4.17"

src/lib/samples.rs

+28-13
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,7 @@ mod tests {
151151
use core::panic;
152152

153153
use super::*;
154-
use csv::DeserializeErrorKind as CsvDeserializeErrorEnum;
155-
use csv::ErrorKind as CsvErrorEnum;
156154
use fgoxide::{self, io::Io};
157-
use serde::de::value::Error as SerdeError;
158-
use serde::de::Error;
159155
use tempfile::TempDir;
160156

161157
// ############################################################################################
@@ -211,6 +207,27 @@ mod tests {
211207
let _sample = Sample::new(ordinal, name, barcode);
212208
}
213209

210+
#[test]
211+
fn test_tsv_file_delim_error() {
212+
let lines: Vec<String> = ["sample_id,barcode", "sample1,GATTACA", "sample2,CATGCTA"]
213+
.iter()
214+
.map(|&s| s.into())
215+
.collect();
216+
let tempdir = TempDir::new().unwrap();
217+
let f1 = tempdir.path().join("sample_metadata.tsv");
218+
219+
let io = Io::default();
220+
io.write_lines(&f1, &lines).unwrap();
221+
let err = SampleGroup::from_file(&f1).unwrap_err();
222+
223+
if let fgoxide::FgError::DelimFileHeaderError { expected, found } = err {
224+
assert_eq!(expected, Sample::deserialize_header_line());
225+
assert_eq!(found, "sample_id,barcode");
226+
} else {
227+
panic!()
228+
}
229+
}
230+
214231
// ############################################################################################
215232
// Test [`SampleGroup::from_file`] - Expected to panic
216233
// ############################################################################################
@@ -222,16 +239,14 @@ mod tests {
222239

223240
let io = Io::default();
224241
io.write_lines(&f1, &lines).unwrap();
225-
let mut to_panic = true;
226-
if let fgoxide::FgError::ConversionError(csv_e) = SampleGroup::from_file(&f1).unwrap_err() {
227-
if let CsvErrorEnum::Deserialize { pos: _, err: csv_de_err } = csv_e.into_kind() {
228-
if let CsvDeserializeErrorEnum::Message(s) = csv_de_err.kind() {
229-
to_panic = false;
230-
assert_eq!(s, &SerdeError::missing_field("sample_id").to_string());
231-
}
232-
}
242+
if let fgoxide::FgError::DelimFileHeaderError { expected, found } =
243+
SampleGroup::from_file(&f1).unwrap_err()
244+
{
245+
assert_eq!(expected, Sample::deserialize_header_line());
246+
assert_eq!(found, "sample1\tGATTACA");
247+
} else {
248+
panic!("Different error type than expected reading from headerless file.")
233249
}
234-
assert!(!to_panic, "Different error type than expected reading from headerless file.");
235250
}
236251

237252
#[test]

0 commit comments

Comments
 (0)