From b2c032d84603dab73be8f6ab6c9c187e427a1ff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn-Michael=20Miehe?= <40151420+ldericher@users.noreply.github.com> Date: Thu, 10 Jul 2025 02:04:29 +0000 Subject: [PATCH] [wip] unit tests for `file` module - testing for `Checked` --- src/file/checked.rs | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/file/checked.rs b/src/file/checked.rs index 72d7ebc..d8f1016 100644 --- a/src/file/checked.rs +++ b/src/file/checked.rs @@ -115,20 +115,27 @@ impl FileTrait for Checked { #[cfg(test)] mod tests { - use tempfile::TempDir; + use tempfile::{NamedTempFile, TempDir}; use crate::test_util::{ - MockClient, create_file, + MockClient, check_trait, create_file, data::{HASHES_STD_GOOD, cases, data}, }; use super::*; + fn create_checked(content: &[u8]) -> (Checked, NamedTempFile) { + let file = create_file(content); + let chk = Checked::new(file.path()).expect("creating `Checked` should succeed"); + + // return both, so the `NamedTempFile` is not auto-deleted here + (chk, file) + } + #[test] fn new_on_existing_file_works() { for (content, size) in cases() { - let file = create_file(content); - let chk = Checked::new(file.path()).expect("creating `Checked` should succeed"); + let (chk, file) = create_checked(content); let path = file .path() @@ -145,6 +152,19 @@ mod tests { file.path().file_name().expect("`file_name` should succeed") ); assert_eq!(chk.get_size(), size); + + check_trait( + chk.as_ref(), + path.as_os_str().as_encoded_bytes(), + "AsRef", + "Checked", + ); + + // new_direct + let chk = Checked::new_direct(chk.path, chk.size, chk.hash); + assert_eq!(chk.path, path); + assert_eq!(chk.size, size); + assert!(chk.hash.is_none()); } } @@ -179,8 +199,7 @@ mod tests { #[test] fn hashing_works() { for (content, hash) in data().zip(HASHES_STD_GOOD) { - let file = create_file(content); - let mut chk = Checked::new(file.path()).expect("creating `Checked` should succeed"); + let (mut chk, _file) = create_checked(content); chk.hash(drop).expect("`hash` should succeed"); // `FileTrait` @@ -193,10 +212,10 @@ mod tests { #[test] fn hashing_again_errors() { for content in data() { - let file = create_file(content); - let mut chk = Checked::new(file.path()).expect("creating `Checked` should succeed"); + let (mut chk, _file) = create_checked(content); - chk.hash(drop).expect("`hash` should succeed"); + // fake hash + chk.hash = Some(String::default()); let err = chk.hash(drop).expect_err("`hash` twice should fail"); assert!(err.is_mismatch("unhashed file", chk.path.display().to_string())); @@ -209,8 +228,7 @@ mod tests { let share_id = client.add_share(); for content in data() { - let file = create_file(content); - let chk = Checked::new(file.path()).expect("creating `Checked` should succeed"); + let (chk, _file) = create_checked(content); assert!( chk.start_upload(