use std::path::PathBuf;
fn script_path() -> PathBuf {
let manifest_dir =
std::env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR must be set by cargo");
let crate_dir = PathBuf::from(manifest_dir);
let workspace_root = crate_dir
.parent()
.expect("scirs2 crate must have a parent workspace directory");
workspace_root.join("scripts").join("check-features.sh")
}
#[test]
fn feature_check_script_exists() {
let path = script_path();
assert!(path.exists(), "check-features.sh must exist at {:?}", path);
}
#[test]
fn feature_check_script_is_not_empty() {
let path = script_path();
if !path.exists() {
return; }
let metadata = std::fs::metadata(&path).expect("could not stat check-features.sh");
assert!(
metadata.len() > 0,
"check-features.sh must not be empty (found {} bytes)",
metadata.len()
);
}
#[test]
#[cfg(unix)]
fn feature_check_script_is_executable() {
use std::os::unix::fs::PermissionsExt;
let path = script_path();
if !path.exists() {
return; }
let perms = std::fs::metadata(&path)
.expect("could not stat check-features.sh")
.permissions();
let mode = perms.mode();
assert!(
mode & 0o100 != 0,
"check-features.sh must be executable (mode: {:o})",
mode
);
}