use std::path::Path;
use std::process::Command;
#[test]
fn test_build_without_enhanced_features() {
let output = Command::new("cargo")
.args(&["build", "--no-default-features"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("Failed to execute cargo build");
assert!(
output.status.success(),
"Build failed without enhanced features: {}",
String::from_utf8_lossy(&output.stderr)
);
}
#[test]
fn test_no_enhanced_symbols_exposed() {
let output = Command::new("cargo")
.args(&["build", "--lib"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("Failed to build library");
assert!(output.status.success(), "Library build failed");
let doc_output = Command::new("cargo")
.args(&["doc", "--no-deps", "--document-private-items"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("Failed to generate docs");
let doc_content = String::from_utf8_lossy(&doc_output.stdout);
let forbidden_names = [
"EnhancedEventBuffer",
"EnhancedMetricsProvider",
"EnhancedCircuitBreaker",
"EnhancedStateBuffer",
];
for name in &forbidden_names {
assert!(
!doc_content.contains(name),
"Enhanced type '{}' found in public documentation",
name
);
}
}
#[test]
#[cfg(target_os = "linux")]
fn test_no_missing_libraries() {
let build_output = Command::new("cargo")
.args(&["build", "--bin", "kindly-guard"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("Failed to build binary");
assert!(
build_output.status.success(),
"Binary build failed: {}",
String::from_utf8_lossy(&build_output.stderr)
);
let target_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("../target/debug");
let binary_path = target_dir.join("kindly-guard");
if binary_path.exists() {
let ldd_output = Command::new("ldd")
.arg(&binary_path)
.output()
.expect("Failed to run ldd");
let ldd_result = String::from_utf8_lossy(&ldd_output.stdout);
assert!(
!ldd_result.contains("not found"),
"Binary has missing library dependencies:\n{}",
ldd_result
);
}
}
#[test]
fn test_default_features_compile() {
let output = Command::new("cargo")
.args(&["check"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("Failed to check with default features");
assert!(
output.status.success(),
"Default features compilation failed: {}",
String::from_utf8_lossy(&output.stderr)
);
}
#[test]
fn test_trait_based_separation() {
let output = Command::new("cargo")
.args(&["check", "--lib"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("Failed to check library");
assert!(
output.status.success(),
"Library compilation failed: {}",
String::from_utf8_lossy(&output.stderr)
);
}
#[test]
fn test_dependency_tree_privacy() {
let output = Command::new("cargo")
.args(&["tree", "--edges", "normal"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("Failed to run cargo tree");
let tree_output = String::from_utf8_lossy(&output.stdout);
let lines: Vec<&str> = tree_output.lines().collect();
for (i, line) in lines.iter().enumerate() {
if line.contains("enhanced") && i > 0 {
let indent_level = line.len() - line.trim_start().len();
if indent_level == 0 && !line.contains("feature") {
panic!("Enhanced implementation appears as a public dependency");
}
}
}
}