use assert_cmd::Command;
#[test]
fn package_help_lists_arch_values() {
let out = Command::cargo_bin("node-app")
.unwrap()
.args(["package", "--help"])
.output()
.unwrap();
let text = String::from_utf8_lossy(&out.stdout);
assert!(text.contains("--arch"));
assert!(!text.to_lowercase().contains("deferred"));
}
#[test]
fn validate_accepts_shared_stage_manifest_contract() {
let project = tempfile::tempdir().unwrap();
std::fs::write(
project.path().join("manifest.json"),
include_str!(
"../../../specs/456-node-app-distribution-infrastructure/contracts/fixtures/stage-manifest-v2.json"
),
)
.unwrap();
Command::cargo_bin("node-app")
.unwrap()
.args(["validate", "--path"])
.arg(project.path())
.assert()
.success();
}
#[test]
fn platform_root_uses_one_dependency_pipeline_for_both_shells() {
let dev_source = include_str!("../src/commands/dev.rs");
let host_source = include_str!("../src/commands/dev/host/monorepo.rs");
assert!(dev_source.contains(
"project_path.join(\"infra/debian/platform-depends\").is_file()"
));
assert_eq!(dev_source.matches("platform::run(&project_path, &args)").count(), 1);
for forbidden in ["bootstrap-apps.sh", "STAGE_APPS", "node-app-stage-"] {
assert!(
!host_source.contains(forbidden),
"client-node host must not own a dependency list: found {forbidden}"
);
}
}