swarm repositories / source
aboutsummaryrefslogtreecommitdiff
path: root/crates/fidget-spinner-cli/tests/mcp_hardening.rs
diff options
context:
space:
mode:
authormain <main@swarm.moe>2026-03-20 23:31:29 -0400
committermain <main@swarm.moe>2026-03-20 23:31:29 -0400
commit3a523c3c8ac1bf9094dbe65a6f53b71085438c0c (patch)
tree5055c0e64f3024059221d341f3b81434cae34586 /crates/fidget-spinner-cli/tests/mcp_hardening.rs
parenteb0f0f73b7da9d76ff6833757fd265725d3e4b14 (diff)
downloadfidget_spinner-3a523c3c8ac1bf9094dbe65a6f53b71085438c0c.zip
Open the metric unit vocabulary
Diffstat (limited to 'crates/fidget-spinner-cli/tests/mcp_hardening.rs')
-rw-r--r--crates/fidget-spinner-cli/tests/mcp_hardening.rs58
1 files changed, 58 insertions, 0 deletions
diff --git a/crates/fidget-spinner-cli/tests/mcp_hardening.rs b/crates/fidget-spinner-cli/tests/mcp_hardening.rs
index c086a45..86b6719 100644
--- a/crates/fidget-spinner-cli/tests/mcp_hardening.rs
+++ b/crates/fidget-spinner-cli/tests/mcp_hardening.rs
@@ -454,6 +454,64 @@ fn registry_and_history_surfaces_render_timestamps_as_strings() -> TestResult {
}
#[test]
+fn metric_define_accepts_builtin_and_custom_unit_tokens() -> TestResult {
+ let project_root = temp_project_root("metric_units")?;
+ init_project(&project_root)?;
+
+ let mut harness = McpHarness::spawn(Some(&project_root))?;
+ let _ = harness.initialize()?;
+ harness.notify_initialized()?;
+
+ let microseconds = harness.call_tool_full(
+ 23,
+ "metric.define",
+ json!({
+ "key": "oracle_solve_wallclock_micros",
+ "unit": "micros",
+ "objective": "minimize",
+ "visibility": "canonical",
+ }),
+ )?;
+ assert_tool_ok(&microseconds);
+ assert_eq!(
+ tool_content(&microseconds)["record"]["unit"].as_str(),
+ Some("microseconds")
+ );
+
+ let custom = harness.call_tool_full(
+ 24,
+ "metric.define",
+ json!({
+ "key": "root_lp_objective_last",
+ "unit": "objective",
+ "objective": "minimize",
+ "visibility": "canonical",
+ }),
+ )?;
+ assert_tool_ok(&custom);
+ assert_eq!(
+ tool_content(&custom)["record"]["unit"].as_str(),
+ Some("objective")
+ );
+
+ let placeholder = harness.call_tool(
+ 25,
+ "metric.define",
+ json!({
+ "key": "bad_custom_placeholder",
+ "unit": "custom",
+ "objective": "minimize",
+ }),
+ )?;
+ assert_tool_error(&placeholder);
+ assert!(
+ must_some(tool_error_message(&placeholder), "metric unit error")?.contains("metric unit")
+ );
+
+ Ok(())
+}
+
+#[test]
fn hypothesis_body_discipline_is_enforced_over_mcp() -> TestResult {
let project_root = temp_project_root("single_paragraph")?;
init_project(&project_root)?;