diff options
author | Melody Horn <melody@boringcactus.com> | 2021-04-15 22:12:08 -0600 |
---|---|---|
committer | Melody Horn <melody@boringcactus.com> | 2021-04-15 22:12:08 -0600 |
commit | be4fba34cb4bd74ca72d2fa2ca41c8a640709548 (patch) | |
tree | e8cf108834a98ce07595a1f52ac468c173884546 /tests/update_logic.rs | |
parent | dc9f24cd5b5cd9ae3e0aa86e661fc0cf30ac63ef (diff) | |
download | makers-be4fba34cb4bd74ca72d2fa2ca41c8a640709548.tar.gz makers-be4fba34cb4bd74ca72d2fa2ca41c8a640709548.zip |
add a test for not rebuilding up-to-date targets
Diffstat (limited to 'tests/update_logic.rs')
-rw-r--r-- | tests/update_logic.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/update_logic.rs b/tests/update_logic.rs new file mode 100644 index 0000000..2b74606 --- /dev/null +++ b/tests/update_logic.rs @@ -0,0 +1,48 @@ +use std::fs; +use std::path::Path; +use std::process::{Command, Output}; + +use eyre::{Result, WrapErr}; + +type R = Result<()>; + +fn make(dir: impl AsRef<Path>) -> Result<Output> { + Command::new(env!("CARGO_BIN_EXE_makers")) + .current_dir(dir) + .output() + .wrap_err("") +} + +#[test] +fn basic_test() -> R { + let dir = tempfile::tempdir()?; + let file = " +based-on-what: based-on-this +\techo hi + "; + fs::write(dir.path().join("Makefile"), file)?; + let result = make(&dir)?; + assert!(!result.status.success()); + assert!(String::from_utf8(result.stderr)?.contains("based-on-this")); + + fs::write(dir.path().join("based-on-this"), "")?; + let result = make(&dir)?; + assert!(result.status.success()); + assert!(String::from_utf8(result.stdout)?.contains("echo hi")); + + let result = make(&dir)?; + assert!(result.status.success()); + assert!(String::from_utf8(result.stdout)?.contains("echo hi")); + + fs::write(dir.path().join("based-on-what"), "")?; + let result = make(&dir)?; + assert!(result.status.success()); + assert!(!String::from_utf8(result.stdout)?.contains("echo hi")); + + fs::write(dir.path().join("based-on-this"), "")?; + let result = make(&dir)?; + assert!(result.status.success()); + assert!(String::from_utf8(result.stdout)?.contains("echo hi")); + + Ok(()) +} |