#[path = "../src/test_helpers.rs"]
mod test_helpers;
use crate::test_helpers::bin_path;
use std::path::*;
use std::process::Command;
#[test]
fn cargo_new_and_run_local() {
let target_dir = PathBuf::from("target");
let local_project = target_dir.join("local_project");
if !local_project.exists() {
let cargo_new_status = Command::new("cargo")
.arg("new")
.arg("local_project")
.current_dir(&target_dir)
.output();
assert!(
cargo_new_status.is_ok(),
"creating new project via cargo new did not succeed"
);
assert!(
cargo_new_status.unwrap().status.success(),
"cargo new failed exit status =! 0"
);
}
assert!(local_project.is_dir());
assert!(local_project.exists());
if local_project.is_dir() {
let cargo_clean = Command::new("cargo")
.arg("clean")
.current_dir(&local_project)
.output();
assert!(cargo_clean.is_ok(), "cargo clean did not succeed");
assert!(
cargo_clean.unwrap().status.success(),
"cargo clean failed exit status =! 0"
);
let local_target_dir = local_project.join("target");
assert!(!local_target_dir.exists());
}
let local_project = local_project.canonicalize().unwrap();
let cc_binary = {
let mut cwd = std::env::current_dir().expect("Could not get cwd!");
cwd.push(&bin_path());
cwd
};
let cargo_cache_local = Command::new(&cc_binary)
.arg("local")
.current_dir(&local_project)
.output()
.unwrap();
let cc_output = String::from_utf8_lossy(&cargo_cache_local.stdout).into_owned();
assert!(!cc_output.contains("error"), "cargo cache did not error!");
assert!(
!cargo_cache_local.status.success(),
"cargo cache local did not deliver bad exit status when target dir was missing"
);
let cargo_check = Command::new("cargo")
.arg("check")
.current_dir(&local_project)
.output();
assert!(cargo_check.is_ok(), "cargo check did not succeed");
assert!(
cargo_check.unwrap().status.success(),
"cargo check failed exit status =! 0"
);
let local_target_dir = local_project.join("target");
assert!(local_target_dir.exists());
let cargo_cache_local = Command::new(&cc_binary)
.arg("l")
.current_dir(&local_project)
.output()
.unwrap();
let cc_output = String::from_utf8_lossy(&cargo_cache_local.stdout).into_owned();
assert!(cc_output.contains("Total Size:"), "cargo cache errored!");
assert!(
cargo_cache_local.status.success(),
"cargo cache local did not deliver bad exit when target dir should have been found"
);
}