harn-cli 0.10.37

CLI for the Harn programming language — run, test, REPL, format, and lint
Documentation
use super::*;

#[test]
fn parses_provider_tool_probe_format_override() {
    let cli = Cli::parse_from([
        "harn",
        "provider",
        "tool-probe",
        "ollama",
        "--model",
        "devstral-small-2",
        "--base-url",
        "http://127.0.0.1:11434",
        "--mode",
        "non-streaming",
        "--case",
        "parallel_tool_calls",
        "--tool-format",
        "json",
        "--marker",
        "marker",
        "--repeat",
        "5",
        "--response-fixture",
        "fixture.json",
    ]);
    let Command::Provider(provider) = cli.command.unwrap() else {
        panic!("expected provider command");
    };
    let ProviderCommand::ToolProbe(args) = provider.command else {
        panic!("expected provider tool-probe command");
    };
    assert_eq!(args.provider, "ollama");
    assert_eq!(args.model, "devstral-small-2");
    assert_eq!(args.base_url.as_deref(), Some("http://127.0.0.1:11434"));
    assert!(matches!(args.mode, ProviderToolProbeModeArg::NonStreaming));
    assert!(matches!(
        args.probe_case,
        ProviderToolProbeCaseArg::ParallelToolCalls
    ));
    assert!(matches!(
        args.tool_format,
        Some(ProviderToolProbeFormatArg::Json)
    ));
    assert_eq!(args.marker, "marker");
    assert_eq!(args.repeat, 5);
    assert_eq!(args.response_fixture, Some(PathBuf::from("fixture.json")));
    assert!(!args.dry_run_request);
    assert!(args.json);
}

#[test]
fn parses_provider_tool_calibrate_matrix() {
    let cli = Cli::parse_from([
        "harn",
        "provider",
        "tool-calibrate",
        "--route",
        "openai:gpt-5.4-mini",
        "--route",
        "ollama:qwen3:8b",
        "--tool-format",
        "text",
        "--case",
        "parallel_tool_calls",
        "--repeat",
        "4",
        "--output",
        "fitness.json",
    ]);
    let Command::Provider(provider) = cli.command.unwrap() else {
        panic!("expected provider command");
    };
    let ProviderCommand::ToolCalibrate(args) = provider.command else {
        panic!("expected provider tool-calibrate command");
    };
    assert_eq!(args.routes, vec!["openai:gpt-5.4-mini", "ollama:qwen3:8b"]);
    assert!(matches!(
        args.tool_formats.as_slice(),
        [ProviderToolProbeFormatArg::Text]
    ));
    assert!(matches!(
        args.probe_cases.as_slice(),
        [ProviderToolProbeCaseArg::ParallelToolCalls]
    ));
    assert_eq!(args.repeat, 4);
    assert_eq!(args.output, PathBuf::from("fitness.json"));
}