1
0
mirror of https://github.com/nukesor/pueue synced 2024-07-05 17:19:09 +00:00

Adjust tests to use temporary directory as pueue_directory

This commit is contained in:
Arne Beer 2021-05-15 17:55:22 +02:00
parent f5f26fb7b2
commit 1203cad3aa
No known key found for this signature in database
GPG Key ID: CC9408F679023B65
6 changed files with 106 additions and 26 deletions

66
Cargo.lock generated
View File

@ -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",

View File

@ -64,3 +64,6 @@ psutil = "3"
[build-dependencies]
version_check = "0.9"
[dev-dependencies]
tempdir = "0.3"

View File

@ -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.

View File

@ -89,6 +89,7 @@ fn shutdown(sender: &Sender<Message>, 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();

View File

@ -40,12 +40,15 @@ pub fn remove(task_ids: Vec<usize>, 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();

View File

@ -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