fix: kanban tui
runner nix smoke / nix label and flake smoke (push) Failing after 1m38s

This commit is contained in:
2026-10-01 23:07:54 +00:00
parent a4dfcd3e0f
commit e215c11b0b
+21
View File
@@ -173,11 +173,19 @@ impl GiteaClient {
.map_err(|error| {
ApiError(format!("cannot reach Gitea while {operation}: {error}"))
})?;
let total_count = response
.headers()
.get("x-total-count")
.and_then(|value| value.to_str().ok())
.and_then(|value| value.parse::<usize>().ok());
let page_items: Vec<T> = self.decode(response, operation)?;
if page_items.is_empty() {
return Ok(items);
}
items.extend(page_items);
if total_count.is_some_and(|total| items.len() >= total) {
return Ok(items);
}
}
Err(ApiError(format!(
"Gitea returned too many pages while {operation}; narrow repository data or check server pagination"
@@ -520,6 +528,19 @@ mod tests {
assert!(!error.to_string().contains("secret"));
}
#[test]
fn stops_pagination_at_reported_total_count() {
let (base_url, requests) = mock_server(vec![
"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\nX-Total-Count: 1\r\nConnection: close\r\n\r\n[{\"id\":4,\"title\":\"Kanban\",\"is_closed\":false}]",
]);
let client = GiteaClient::new(&config(&base_url)).expect("client");
let projects = client.list_projects().expect("projects");
assert_eq!(projects.len(), 1);
assert!(requests.recv().expect("page one").contains("page=1"));
assert!(requests.try_recv().is_err());
}
#[test]
fn sends_global_issue_move_payload() {
let (base_url, requests) = mock_server(vec![