Experiment with futures

This commit is contained in:
Adrian Heine 2020-08-16 11:08:22 +02:00
parent 907fbf95db
commit 2d3e3688fa
44 changed files with 2081 additions and 1242 deletions

View file

@ -1,3 +1,4 @@
use schematics::async_utils::run;
use schematics::symbols::file::File as FileSymbol;
use schematics::symbols::Symbol;
use std::fs::File;
@ -30,7 +31,9 @@ fn already_reached() {
let dir = get_dir(Some("target content"));
let symbol = get_symbol(dir.path());
assert_eq!(symbol.target_reached().unwrap(), true);
run(async {
assert_eq!(symbol.target_reached().await.unwrap(), true);
})
}
// Bad
@ -39,9 +42,11 @@ fn wrong_prefix() {
let dir = get_dir(Some("not target content"));
let symbol = get_symbol(dir.path());
assert_eq!(symbol.target_reached().unwrap(), false);
symbol.execute().unwrap();
assert_eq!(symbol.target_reached().unwrap(), true);
run(async {
assert_eq!(symbol.target_reached().await.unwrap(), false);
symbol.execute().await.unwrap();
assert_eq!(symbol.target_reached().await.unwrap(), true);
})
}
#[test]
@ -49,9 +54,11 @@ fn wrong_postfix() {
let dir = get_dir(Some("target content not"));
let symbol = get_symbol(dir.path());
assert_eq!(symbol.target_reached().unwrap(), false);
symbol.execute().unwrap();
assert_eq!(symbol.target_reached().unwrap(), true);
run(async {
assert_eq!(symbol.target_reached().await.unwrap(), false);
symbol.execute().await.unwrap();
assert_eq!(symbol.target_reached().await.unwrap(), true);
})
}
#[test]
@ -59,9 +66,11 @@ fn empty_file() {
let dir = get_dir(Some(""));
let symbol = get_symbol(dir.path());
assert_eq!(symbol.target_reached().unwrap(), false);
symbol.execute().unwrap();
assert_eq!(symbol.target_reached().unwrap(), true);
run(async {
assert_eq!(symbol.target_reached().await.unwrap(), false);
symbol.execute().await.unwrap();
assert_eq!(symbol.target_reached().await.unwrap(), true);
})
}
#[test]
@ -69,9 +78,11 @@ fn no_file() {
let dir = get_dir(None);
let symbol = get_symbol(dir.path());
assert_eq!(symbol.target_reached().unwrap(), false);
symbol.execute().unwrap();
assert_eq!(symbol.target_reached().unwrap(), true);
run(async {
assert_eq!(symbol.target_reached().await.unwrap(), false);
symbol.execute().await.unwrap();
assert_eq!(symbol.target_reached().await.unwrap(), true);
})
}
// Exceptional cases
@ -80,23 +91,29 @@ fn no_file() {
fn may_not_read_file() {
let symbol = FileSymbol::new(Path::new("/etc/shadow"), "");
assert_eq!(symbol.target_reached().is_err(), true);
run(async {
assert_eq!(symbol.target_reached().await.is_err(), true);
})
}
#[test]
fn may_not_create_file() {
let symbol = get_symbol(&Path::new("/proc/somefile"));
// Could also return an error
assert_eq!(symbol.target_reached().unwrap(), false);
assert!(symbol.execute().is_err());
run(async {
// Could also return an error
assert_eq!(symbol.target_reached().await.unwrap(), false);
assert!(symbol.execute().await.is_err());
})
}
#[test]
fn directory_missing() {
let symbol = get_symbol(&Path::new("/nonexisting"));
// Could also return an error
assert_eq!(symbol.target_reached().unwrap(), false);
assert!(symbol.execute().is_err());
run(async {
// Could also return an error
assert_eq!(symbol.target_reached().await.unwrap(), false);
assert!(symbol.execute().await.is_err());
})
}