From f361a35b655eac22c9415b922bb23fbc10fd758d Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 10 Oct 2022 01:05:54 +0300 Subject: [PATCH] use tempfile::tempdir for tests --- Cargo.lock | 42 ++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 +++ src/db.rs | 25 +++++++++---------------- 3 files changed, 54 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 706a271..6b51709 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -159,6 +159,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", + "tempfile", "zip", "zstd", ] @@ -293,6 +294,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "453440c271cf5577fd2a40e4942540cb7d0d2f85e27c8d07dd0023c925a67541" +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + [[package]] name = "flate2" version = "1.0.24" @@ -376,6 +386,15 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "itoa" version = "1.0.3" @@ -666,6 +685,15 @@ version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + [[package]] name = "ron" version = "0.6.6" @@ -775,6 +803,20 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + [[package]] name = "termcolor" version = "1.1.3" diff --git a/Cargo.toml b/Cargo.toml index 1fcfe89..86085c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,9 @@ clap = { version = "3.2.22", features = ["derive"] } bincode = "^2.0.0-rc.2" zstd = "^0.10" +[dev-dependencies] +tempfile = "3.3" + [profile.release] opt-level = 3 debug = false diff --git a/src/db.rs b/src/db.rs index f87ce8c..11e793e 100644 --- a/src/db.rs +++ b/src/db.rs @@ -307,9 +307,8 @@ where #[cfg(test)] mod test { - use rand::RngCore; - use super::*; + use tempfile::tempdir; #[derive(bincode::Encode, bincode::Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] struct TestData { @@ -322,10 +321,10 @@ mod test { #[test] fn test_write_read() { - let mut rng = rand::thread_rng(); - let tempfile = std::env::temp_dir().with_file_name(format!("test-{}.tmp", rng.next_u32())); + let dir = tempdir().expect("tempdir"); + let tmpfile = dir.path().join("test.tmp"); let opts = WriterOpts { compress_lvl: 1, data_buf_size: 10 * 1024 * 1024, out_buf_size: 10 * 1024 * 1024, current_buf_size: 4096 }; - let mut writer: Writer = Writer::new(&tempfile, opts).expect("new writer"); + let mut writer: Writer = Writer::new(&tmpfile, opts).expect("new writer"); let items_iter = gen_data(5); let items: Vec = items_iter.collect(); @@ -333,24 +332,21 @@ mod test { writer.load(&mut items.clone().into_iter()).expect("load"); writer.finish().expect("finish write"); - let mut reader: Reader = Reader::new(&tempfile, 2048).expect("new reader"); + let mut reader: Reader = Reader::new(&tmpfile, 2048).expect("new reader"); assert_eq!(items.len(), reader.len()); for (idx,item) in items.iter().enumerate() { let ritem = reader.get(idx).expect("get"); assert_eq!(*item, ritem); } - - let r = fs::remove_file(tempfile); - drop(r); } #[test] fn test_write_read_iter() { - let mut rng = rand::thread_rng(); - let tempfile = std::env::temp_dir().with_file_name(format!("test-{}.tmp", rng.next_u32())); + let dir = tempdir().expect("tempdir"); + let tmpfile = dir.path().join("test.tmp"); let opts = WriterOpts { compress_lvl: 1, data_buf_size: 10 * 1024 * 1024, out_buf_size: 10 * 1024 * 1024, current_buf_size: 4096 }; - let mut writer: Writer = Writer::new(&tempfile, opts).expect("new writer"); + let mut writer: Writer = Writer::new(&tmpfile, opts).expect("new writer"); let items_iter = gen_data(10); let items: Vec = items_iter.collect(); @@ -358,14 +354,11 @@ mod test { writer.load(&mut items.clone().into_iter()).expect("load"); writer.finish().expect("finish write"); - let mut reader: Reader = Reader::new(&tempfile, 2048).expect("new reader"); + let mut reader: Reader = Reader::new(&tmpfile, 2048).expect("new reader"); assert_eq!(items.len(), reader.len()); items.into_iter().zip(reader.iter()).for_each(|pair| { assert_eq!(pair.0, pair.1); }); - - let r = fs::remove_file(tempfile); - drop(r); } }