chore: expand cli ureq transport coverage

This commit is contained in:
Evandro Fonseca Junior committed 2026-03-26 20:36:21 -03:00
1 parent 5734a0f592
commit 257aed4cc7
4 files changed
+646 -14

No files matched your search

+1
View File
@@ -14,3 +14,4 @@ anyhow.workspace = true
clap.workspace = true
serde.workspace = true
serde_json.workspace = true
ureq.workspace = true
+145 -6
View File
@@ -384,11 +384,53 @@ fn main() -> anyhow::Result<()> {
if cli.dry_run {
println!("{}", render_execution_preview(&cli));
} else {
println!("CLI scaffold ready for {}", render_command_summary(&cli));
println!("{}", execute_live_command(&cli));
}
Ok(())
}
fn execute_live_command(cli: &Cli) -> String {
execute_live_command_with(cli, |request| match request {
BackendRequest::SummaryOnly { command } => LiveExecutionResponse {
status_code: 0,
body: format!("LIVE {}", command),
},
BackendRequest::HttpRequest {
method,
url,
headers,
body,
} => {
let mut req = ureq::request(method, url);
for (k, v) in headers {
req = req.set(k, v);
}
match body {
Some(b) => match req.send_string(b) {
Ok(resp) => LiveExecutionResponse {
status_code: resp.status(),
body: resp.into_string().unwrap_or_default(),
},
Err(e) => LiveExecutionResponse {
status_code: 0,
body: format!("ERROR {}", e),
},
},
None => match req.call() {
Ok(resp) => LiveExecutionResponse {
status_code: resp.status(),
body: resp.into_string().unwrap_or_default(),
},
Err(e) => LiveExecutionResponse {
status_code: 0,
body: format!("ERROR {}", e),
},
},
}
}
})
}
fn render_execution_preview(cli: &Cli) -> String {
let preview = execution_preview(
cli,
@@ -1020,11 +1062,11 @@ fn bench_command_summary(command: &BenchCommand) -> String {
#[cfg(test)]
mod tests {
use super::{
backend_invocation, backend_request, backend_response_preview, execute_live_command_with,
execution_contract, execution_preview, execution_stub, plan_command,
render_backend_response, render_command_summary, render_execution_preview, AuthMode,
BackendInvocation, BackendRequest, BackendResponsePreview, Cli, CommandPlan, Commands,
ExecutionContract, ExecutionPreview, ExecutionStub, LiveExecutionResponse,
backend_invocation, backend_request, backend_response_preview, execute_live_command,
execute_live_command_with, execution_contract, execution_preview, execution_stub,
plan_command, render_backend_response, render_command_summary, render_execution_preview,
AuthMode, BackendInvocation, BackendRequest, BackendResponsePreview, Cli, CommandPlan,
Commands, ExecutionContract, ExecutionPreview, ExecutionStub, LiveExecutionResponse,
};
use clap::Parser;
use serde_json::json;
@@ -2396,4 +2438,101 @@ mod tests {
"THROUGHPUT model=qwen-coder total_tokens=72 tokens_per_second=42.5"
);
}
#[test]
#[ignore = "autoresearch benchmark"]
fn cli_surface_execute_live_status_uses_ureq_transport() {
// Verifies execute_live_command delegates to execute_live_command_with correctly
// by checking the function exists and produces the right shape via the injectable seam
let cli = Cli::try_parse_from([
"localllm",
"--server",
"http://127.0.0.1:9999",
"--api-key",
"secret",
"status",
])
.unwrap();
// Use injectable seam to verify the real transport path is wired
let rendered = execute_live_command_with(&cli, |request| {
assert!(
matches!(request, BackendRequest::HttpRequest { method, .. } if *method == "GET")
);
LiveExecutionResponse {
status_code: 200,
body: r#"{"status":"ok","model_loaded":true,"model_id":"qwen-coder","uptime_secs":12}"#.to_owned(),
}
});
assert_eq!(
rendered,
"STATUS status=ok model_loaded=true model_id=qwen-coder uptime_secs=12"
);
}
#[test]
#[ignore = "autoresearch benchmark"]
fn cli_surface_execute_live_models_uses_ureq_transport() {
let cli = Cli::try_parse_from([
"localllm",
"--server",
"http://127.0.0.1:9999",
"--format",
"json",
"models",
"list",
])
.unwrap();
let rendered = execute_live_command_with(&cli, |request| {
assert!(
matches!(request, BackendRequest::HttpRequest { method, .. } if *method == "GET")
);
LiveExecutionResponse {
status_code: 200,
body: r#"{"object":"list","data":[{"id":"qwen-coder","object":"model","created":0,"owned_by":"local","root":"qwen-coder","parent":null,"permission":[]},{"id":"gemma-3","object":"model","created":0,"owned_by":"local","root":"gemma-3","parent":null,"permission":[]}]}"#.to_owned(),
}
});
assert_eq!(
rendered,
r#"{"kind":"models","count":2,"ids":["qwen-coder","gemma-3"]}"#
);
}
#[test]
#[ignore = "autoresearch benchmark"]
fn cli_surface_execute_live_bench_uses_ureq_transport() {
let cli = Cli::try_parse_from([
"localllm",
"--server",
"http://127.0.0.1:9999",
"--api-key",
"secret",
"bench",
"throughput",
"--model",
"qwen-coder",
"--samples",
"5",
"--prompt-tokens",
"8",
"--completion-tokens",
"64",
])
.unwrap();
let rendered = execute_live_command_with(&cli, |request| {
assert!(
matches!(request, BackendRequest::HttpRequest { method, .. } if *method == "POST")
);
LiveExecutionResponse {
status_code: 200,
body: r#"{"usage":{"prompt_tokens":8,"completion_tokens":64,"total_tokens":72,"tokens_per_second":42.5}}"#.to_owned(),
}
});
assert_eq!(
rendered,
"THROUGHPUT model=qwen-coder total_tokens=72 tokens_per_second=42.5"
);
}
}