use tempfile::tempdir for tests
This commit is contained in:
parent
efec662700
commit
f361a35b65
42
Cargo.lock
generated
42
Cargo.lock
generated
@ -159,6 +159,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"tempfile",
|
||||||
"zip",
|
"zip",
|
||||||
"zstd",
|
"zstd",
|
||||||
]
|
]
|
||||||
@ -293,6 +294,15 @@ version = "1.0.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "453440c271cf5577fd2a40e4942540cb7d0d2f85e27c8d07dd0023c925a67541"
|
checksum = "453440c271cf5577fd2a40e4942540cb7d0d2f85e27c8d07dd0023c925a67541"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fastrand"
|
||||||
|
version = "1.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
|
||||||
|
dependencies = [
|
||||||
|
"instant",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flate2"
|
name = "flate2"
|
||||||
version = "1.0.24"
|
version = "1.0.24"
|
||||||
@ -376,6 +386,15 @@ dependencies = [
|
|||||||
"hashbrown",
|
"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]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.3"
|
version = "1.0.3"
|
||||||
@ -666,6 +685,15 @@ version = "0.6.27"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
|
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]]
|
[[package]]
|
||||||
name = "ron"
|
name = "ron"
|
||||||
version = "0.6.6"
|
version = "0.6.6"
|
||||||
@ -775,6 +803,20 @@ dependencies = [
|
|||||||
"unicode-ident",
|
"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]]
|
[[package]]
|
||||||
name = "termcolor"
|
name = "termcolor"
|
||||||
version = "1.1.3"
|
version = "1.1.3"
|
||||||
|
@ -19,6 +19,9 @@ clap = { version = "3.2.22", features = ["derive"] }
|
|||||||
bincode = "^2.0.0-rc.2"
|
bincode = "^2.0.0-rc.2"
|
||||||
zstd = "^0.10"
|
zstd = "^0.10"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tempfile = "3.3"
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
opt-level = 3
|
opt-level = 3
|
||||||
debug = false
|
debug = false
|
||||||
|
25
src/db.rs
25
src/db.rs
@ -307,9 +307,8 @@ where
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use rand::RngCore;
|
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use tempfile::tempdir;
|
||||||
|
|
||||||
#[derive(bincode::Encode, bincode::Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
|
#[derive(bincode::Encode, bincode::Decode, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
|
||||||
struct TestData {
|
struct TestData {
|
||||||
@ -322,10 +321,10 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_write_read() {
|
fn test_write_read() {
|
||||||
let mut rng = rand::thread_rng();
|
let dir = tempdir().expect("tempdir");
|
||||||
let tempfile = std::env::temp_dir().with_file_name(format!("test-{}.tmp", rng.next_u32()));
|
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 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<TestData> = Writer::new(&tempfile, opts).expect("new writer");
|
let mut writer: Writer<TestData> = Writer::new(&tmpfile, opts).expect("new writer");
|
||||||
|
|
||||||
let items_iter = gen_data(5);
|
let items_iter = gen_data(5);
|
||||||
let items: Vec<TestData> = items_iter.collect();
|
let items: Vec<TestData> = items_iter.collect();
|
||||||
@ -333,24 +332,21 @@ mod test {
|
|||||||
writer.load(&mut items.clone().into_iter()).expect("load");
|
writer.load(&mut items.clone().into_iter()).expect("load");
|
||||||
writer.finish().expect("finish write");
|
writer.finish().expect("finish write");
|
||||||
|
|
||||||
let mut reader: Reader<TestData> = Reader::new(&tempfile, 2048).expect("new reader");
|
let mut reader: Reader<TestData> = Reader::new(&tmpfile, 2048).expect("new reader");
|
||||||
assert_eq!(items.len(), reader.len());
|
assert_eq!(items.len(), reader.len());
|
||||||
|
|
||||||
for (idx,item) in items.iter().enumerate() {
|
for (idx,item) in items.iter().enumerate() {
|
||||||
let ritem = reader.get(idx).expect("get");
|
let ritem = reader.get(idx).expect("get");
|
||||||
assert_eq!(*item, ritem);
|
assert_eq!(*item, ritem);
|
||||||
}
|
}
|
||||||
|
|
||||||
let r = fs::remove_file(tempfile);
|
|
||||||
drop(r);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_write_read_iter() {
|
fn test_write_read_iter() {
|
||||||
let mut rng = rand::thread_rng();
|
let dir = tempdir().expect("tempdir");
|
||||||
let tempfile = std::env::temp_dir().with_file_name(format!("test-{}.tmp", rng.next_u32()));
|
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 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<TestData> = Writer::new(&tempfile, opts).expect("new writer");
|
let mut writer: Writer<TestData> = Writer::new(&tmpfile, opts).expect("new writer");
|
||||||
|
|
||||||
let items_iter = gen_data(10);
|
let items_iter = gen_data(10);
|
||||||
let items: Vec<TestData> = items_iter.collect();
|
let items: Vec<TestData> = items_iter.collect();
|
||||||
@ -358,14 +354,11 @@ mod test {
|
|||||||
writer.load(&mut items.clone().into_iter()).expect("load");
|
writer.load(&mut items.clone().into_iter()).expect("load");
|
||||||
writer.finish().expect("finish write");
|
writer.finish().expect("finish write");
|
||||||
|
|
||||||
let mut reader: Reader<TestData> = Reader::new(&tempfile, 2048).expect("new reader");
|
let mut reader: Reader<TestData> = Reader::new(&tmpfile, 2048).expect("new reader");
|
||||||
assert_eq!(items.len(), reader.len());
|
assert_eq!(items.len(), reader.len());
|
||||||
|
|
||||||
items.into_iter().zip(reader.iter()).for_each(|pair| {
|
items.into_iter().zip(reader.iter()).for_each(|pair| {
|
||||||
assert_eq!(pair.0, pair.1);
|
assert_eq!(pair.0, pair.1);
|
||||||
});
|
});
|
||||||
|
|
||||||
let r = fs::remove_file(tempfile);
|
|
||||||
drop(r);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user