mod cwd {
use std::time::Duration;
use test_dir::{TestDir, FileType, DirBuilder};
use bkt::{Bkt, CacheStatus, CommandDesc};
#[test]
fn cwd_and_working_dir_share_cache() {
let dir = TestDir::temp().create("wd", FileType::Dir);
let wd = dir.path("wd");
let bkt = Bkt::create(dir.path("cache")).unwrap();
let cmd = CommandDesc::new(["bash", "-c", "pwd; echo '.' > file"]).with_cwd();
let state = cmd.capture_state().unwrap().with_working_dir(&wd);
let (result, status) = bkt.retrieve(state, Duration::from_secs(10)).unwrap();
assert_eq!(result.stdout_utf8(), format!("{}\n", wd.to_str().unwrap()));
assert_eq!(result.stderr_utf8(), "");
assert_eq!(result.exit_code(), 0);
assert!(matches!(status, CacheStatus::Miss(_)));
std::env::set_current_dir(&wd).unwrap();
let (result, status) = bkt.retrieve(&cmd, Duration::from_secs(10)).unwrap();
assert_eq!(result.stdout_utf8(), format!("{}\n", wd.to_str().unwrap()));
assert_eq!(result.stderr_utf8(), "");
assert_eq!(result.exit_code(), 0);
assert!(matches!(status, CacheStatus::Hit(_)));
assert_eq!(std::fs::read_to_string(wd.join("file")).unwrap(), ".\n");
}
}