58 lines
1.7 KiB
Rust
58 lines
1.7 KiB
Rust
use serde_json::Value;
|
|
use std::process::Command;
|
|
|
|
#[test]
|
|
fn setup_reports_tree_sitter_p4_capability() {
|
|
let output = Command::new(env!("CARGO_BIN_EXE_brick"))
|
|
.args(["setup", "--json"])
|
|
.output()
|
|
.unwrap();
|
|
assert!(
|
|
output.status.success(),
|
|
"{}",
|
|
String::from_utf8_lossy(&output.stderr)
|
|
);
|
|
|
|
let report: Value = serde_json::from_slice(&output.stdout).unwrap();
|
|
assert_eq!(report["setup_schema_version"], 1);
|
|
assert_eq!(
|
|
report["tree_sitter_p4_pilot"]["available"],
|
|
cfg!(feature = "tree-sitter-p4-pilot")
|
|
);
|
|
assert_eq!(
|
|
report["tree_sitter_p4_pilot"]["cargo_feature"],
|
|
"tree-sitter-p4-pilot"
|
|
);
|
|
assert_eq!(
|
|
report["tree_sitter_p4_pilot"]["grammar_commit"],
|
|
"19b9dbdc2a2fb1d6c1b5346a75537434892a94b1"
|
|
);
|
|
assert_eq!(
|
|
report["tree_sitter_p4_pilot"]["reason"].is_null(),
|
|
cfg!(feature = "tree-sitter-p4-pilot")
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn setup_can_require_tree_sitter_p4_capability() {
|
|
let output = Command::new(env!("CARGO_BIN_EXE_brick"))
|
|
.args(["setup", "--require-tree-sitter-p4-pilot"])
|
|
.output()
|
|
.unwrap();
|
|
|
|
assert_eq!(
|
|
output.status.success(),
|
|
cfg!(feature = "tree-sitter-p4-pilot"),
|
|
"stdout={}\nstderr={}",
|
|
String::from_utf8_lossy(&output.stdout),
|
|
String::from_utf8_lossy(&output.stderr)
|
|
);
|
|
if cfg!(feature = "tree-sitter-p4-pilot") {
|
|
assert!(String::from_utf8_lossy(&output.stdout).contains("available"));
|
|
} else {
|
|
assert!(
|
|
String::from_utf8_lossy(&output.stderr)
|
|
.contains("tree-sitter P4 pilot is required but unavailable")
|
|
);
|
|
}
|
|
}
|