From 1203cad3aa52b0d5c5295596c95515496f08d73d Mon Sep 17 00:00:00 2001 From: Arne Beer Date: Sat, 15 May 2021 17:55:22 +0200 Subject: [PATCH] Adjust tests to use temporary directory as pueue_directory --- Cargo.lock | 66 +++++++++++++++++++++--- Cargo.toml | 3 ++ daemon/network/message_handler/clean.rs | 17 ++++-- daemon/network/message_handler/mod.rs | 18 ++++--- daemon/network/message_handler/remove.rs | 8 ++- daemon/network/message_handler/switch.rs | 20 ++++--- 6 files changed, 106 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fd6341e..a0bea7a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -560,6 +560,12 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + [[package]] name = "futures-channel" version = "0.3.15" @@ -1136,6 +1142,7 @@ dependencies = [ "shell-escape", "simplelog", "snap", + "tempdir", "tempfile", "version_check", "whoami", @@ -1145,7 +1152,7 @@ dependencies = [ [[package]] name = "pueue-lib" version = "0.12.3" -source = "git+https://github.com/Nukesor/pueue-lib?branch=master#74f54764e5eccc76f9b339acf8ca92b65809911b" +source = "git+https://github.com/Nukesor/pueue-lib?branch=master#050a8458ca25af5235a913166fbf58bb0d89705c" dependencies = [ "anyhow", "async-std", @@ -1156,7 +1163,7 @@ dependencies = [ "config", "dirs", "log", - "rand", + "rand 0.8.3", "rcgen", "rev_lines", "rustls", @@ -1186,6 +1193,19 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +dependencies = [ + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi", +] + [[package]] name = "rand" version = "0.8.3" @@ -1194,7 +1214,7 @@ checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" dependencies = [ "libc", "rand_chacha", - "rand_core", + "rand_core 0.6.2", "rand_hc", ] @@ -1205,9 +1225,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.2", ] +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + [[package]] name = "rand_core" version = "0.6.2" @@ -1223,7 +1258,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" dependencies = [ - "rand_core", + "rand_core 0.6.2", ] [[package]] @@ -1238,6 +1273,15 @@ dependencies = [ "yasna", ] +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + [[package]] name = "redox_syscall" version = "0.2.8" @@ -1525,6 +1569,16 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "tempdir" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" +dependencies = [ + "rand 0.4.6", + "remove_dir_all", +] + [[package]] name = "tempfile" version = "3.2.0" @@ -1533,7 +1587,7 @@ checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ "cfg-if 1.0.0", "libc", - "rand", + "rand 0.8.3", "redox_syscall", "remove_dir_all", "winapi", diff --git a/Cargo.toml b/Cargo.toml index a14f8bc..17e562a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,3 +64,6 @@ psutil = "3" [build-dependencies] version_check = "0.9" + +[dev-dependencies] +tempdir = "0.3" diff --git a/daemon/network/message_handler/clean.rs b/daemon/network/message_handler/clean.rs index 4d8d35e..34c2cc8 100644 --- a/daemon/network/message_handler/clean.rs +++ b/daemon/network/message_handler/clean.rs @@ -38,15 +38,19 @@ pub fn clean(message: CleanMessage, state: &SharedState) -> Message { #[cfg(test)] mod tests { + use std::path::PathBuf; + use super::super::fixtures::*; use super::*; + use tempdir::TempDir; + fn get_message(successful_only: bool) -> CleanMessage { CleanMessage { successful_only } } - fn get_clean_test_state() -> SharedState { - let state = get_state(); + fn get_clean_test_state(path: PathBuf) -> SharedState { + let state = get_state(path); { let mut state = state.lock().unwrap(); @@ -80,7 +84,8 @@ mod tests { #[test] fn clean_normal() { - let state = get_stub_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_stub_state(tempdir.into_path()); // Only task 1 will be removed, since it's the only TaskStatus with `Done`. let message = clean(get_message(false), &state); @@ -97,7 +102,8 @@ mod tests { #[test] fn clean_normal_for_all_results() { - let state = get_clean_test_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_clean_test_state(tempdir.into_path()); // All finished tasks should removed when calling default `clean`. let message = clean(get_message(false), &state); @@ -114,7 +120,8 @@ mod tests { #[test] fn clean_successful_only() { - let state = get_clean_test_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_clean_test_state(tempdir.into_path()); // Only successfully finished tasks should get removed when // calling `clean` with the `successful_only` flag. diff --git a/daemon/network/message_handler/mod.rs b/daemon/network/message_handler/mod.rs index 313a5d0..77a0165 100644 --- a/daemon/network/message_handler/mod.rs +++ b/daemon/network/message_handler/mod.rs @@ -89,6 +89,7 @@ fn shutdown(sender: &Sender, state: &SharedState) -> Message { #[cfg(test)] mod fixtures { use std::collections::HashMap; + use std::path::PathBuf; pub use std::sync::mpsc::Sender; use std::sync::{Arc, Mutex}; @@ -103,15 +104,18 @@ mod fixtures { pub use super::*; pub use crate::network::response_helper::*; - pub fn get_settings() -> Settings { - Settings::default_config() + pub fn get_settings(pueue_dir: PathBuf) -> Settings { + let mut settings: Settings = Settings::default_config() .expect("Failed to get default config") .try_into() - .expect("Failed to get test settings") + .expect("Failed to get test settings"); + settings.shared.pueue_directory = pueue_dir; + + settings } - pub fn get_state() -> SharedState { - let settings = get_settings(); + pub fn get_state(pueue_dir: PathBuf) -> SharedState { + let settings = get_settings(pueue_dir); let state = State::new(&settings, None); Arc::new(Mutex::new(state)) } @@ -130,8 +134,8 @@ mod fixtures { ) } - pub fn get_stub_state() -> SharedState { - let state = get_state(); + pub fn get_stub_state(pueue_dir: PathBuf) -> SharedState { + let state = get_state(pueue_dir); { // Queued task let mut state = state.lock().unwrap(); diff --git a/daemon/network/message_handler/remove.rs b/daemon/network/message_handler/remove.rs index 62cc222..0b5953e 100644 --- a/daemon/network/message_handler/remove.rs +++ b/daemon/network/message_handler/remove.rs @@ -40,12 +40,15 @@ pub fn remove(task_ids: Vec, state: &SharedState) -> Message { #[cfg(test)] mod tests { + use tempdir::TempDir; + use super::super::fixtures::*; use super::*; #[test] fn normal_remove() { - let state = get_stub_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_stub_state(tempdir.into_path()); // 3 and 4 aren't allowed to be removed, since they're running. // The rest will succeed. @@ -66,7 +69,8 @@ mod tests { #[test] fn removal_of_dependencies() { - let state = get_stub_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_stub_state(tempdir.into_path()); { let mut state = state.lock().unwrap(); diff --git a/daemon/network/message_handler/switch.rs b/daemon/network/message_handler/switch.rs index f3b2d84..4358c46 100644 --- a/daemon/network/message_handler/switch.rs +++ b/daemon/network/message_handler/switch.rs @@ -49,6 +49,10 @@ pub fn switch(message: SwitchMessage, state: &SharedState) -> Message { #[cfg(test)] mod tests { + use std::path::PathBuf; + + use tempdir::TempDir; + use super::super::fixtures::*; use super::*; @@ -59,8 +63,8 @@ mod tests { } } - fn get_test_state() -> SharedState { - let state = get_state(); + fn get_test_state(path: PathBuf) -> SharedState { + let state = get_state(path); { let mut state = state.lock().unwrap(); @@ -95,7 +99,8 @@ mod tests { #[test] /// A normal switch between two id's works perfectly fine. fn switch_normal() { - let state = get_test_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_test_state(tempdir.into_path()); let message = switch(get_message(1, 2), &state); @@ -114,7 +119,8 @@ mod tests { /// If any task that is specified as dependency get's switched, /// all dependants need to be updated. fn switch_task_with_dependant() { - let state = get_test_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_test_state(tempdir.into_path()); switch(get_message(0, 3), &state); @@ -126,7 +132,8 @@ mod tests { /// A task with two dependencies shouldn't experience any change, if those two dependencies /// switched places. fn switch_double_dependency() { - let state = get_test_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_test_state(tempdir.into_path()); switch(get_message(1, 2), &state); @@ -139,7 +146,8 @@ mod tests { /// You can only switch tasks that are either stashed or queued. /// Everything else should result in an error message. fn switch_invalid() { - let state = get_stub_state(); + let tempdir = TempDir::new("pueue_test").expect("Failed to create test pueue directory"); + let state = get_state(tempdir.into_path()); let combinations: Vec<(usize, usize)> = vec![ (0, 1), // Queued + Done