supercode-cli 0.4.20

supercode — a lightweight, fully-customizable AI coding agent CLI in Rust. Any model via OpenRouter; natively continues Claude Code and Codex sessions.
//! ORCH-15: `supercode routes list` over the committed gateway fixtures.
use std::path::PathBuf;
use std::process::Command;

fn fixtures() -> PathBuf {
    PathBuf::from(env!("CARGO_MANIFEST_DIR"))
        .join("../harness/tests/fixtures")
        .canonicalize()
        .unwrap()
}

fn command() -> Command {
    let fixtures = fixtures();
    let mut command = Command::new(env!("CARGO_BIN_EXE_supercode"));
    command
        .env("HERMES_HOME", fixtures.join("hermes_home"))
        .env("OPENCLAW_STATE_DIR", fixtures.join("openclaw_home"));
    command
}

#[test]
fn routes_list_json_is_the_rpc_result_verbatim() {
    let output = command()
        .args(["routes", "list", "--json"])
        .output()
        .unwrap();
    assert!(
        output.status.success(),
        "{}",
        String::from_utf8_lossy(&output.stderr)
    );
    let value: serde_json::Value = serde_json::from_slice(&output.stdout).unwrap();
    assert_eq!(value["schema"], "supercode.routes.v1");
    let routes = value["routes"].as_array().unwrap();
    assert!(routes
        .iter()
        .any(|r| r["harness"] == "hermes" && r["target"] == "coder" && r["specificity"] == 4));
    assert!(routes
        .iter()
        .any(|r| r["harness"] == "openclaw" && r["target"] == "design"));
    assert_eq!(routes.iter().filter(|r| r["default"] == true).count(), 2);
    for secret in ["FAKE-TOKEN-DO-NOT-EMIT", "FAKE-API-SERVER-KEY-DO-NOT-EMIT"] {
        assert!(!String::from_utf8_lossy(&output.stdout).contains(secret));
    }
}

#[test]
fn routes_list_table_and_filters() {
    let output = command()
        .args([
            "routes",
            "list",
            "--harness",
            "hermes",
            "--profile",
            "coder",
        ])
        .output()
        .unwrap();
    assert!(output.status.success());
    let text = String::from_utf8_lossy(&output.stdout);
    assert!(
        text.contains("coder") && text.contains("slack") && text.contains("chat=C0FIXTURE"),
        "{text}"
    );
    assert!(!text.contains("(default)"), "{text}");
}

#[test]
fn a_core_harness_is_refused_not_emptied() {
    let output = command()
        .args(["routes", "list", "--harness", "codex"])
        .output()
        .unwrap();
    assert!(!output.status.success());
    assert!(String::from_utf8_lossy(&output.stderr).contains("routing concept"));
}