fix(sftp): classify backend errors by type (#2909)

This commit is contained in:
Henry Guo
2026-05-11 10:56:08 +08:00
committed by GitHub
parent 77c21dc5fd
commit 1c94f7a066
4 changed files with 129 additions and 66 deletions
+3 -3
View File
@@ -2049,7 +2049,7 @@ mod tests {
#[tokio::test(flavor = "current_thread")]
async fn run_backend_with_err_passes_backend_error_through_unchanged() {
let backend = Arc::new(DummyBackend::new());
backend.queue_head_object_err(DummyError::Injected("AccessDenied: pinned".to_string()));
backend.queue_head_object_err(DummyError::AccessDenied("pinned".to_string()));
let driver = build_driver(backend, TEST_PART_SIZE);
let result = driver
@@ -2057,7 +2057,7 @@ mod tests {
.await;
match result {
Ok(Err(e)) => assert!(format!("{e}").contains("AccessDenied")),
Ok(Err(e)) => assert!(matches!(e, DummyError::AccessDenied(_))),
other => panic!("expected backend Err passed through; got {other:?}"),
}
}
@@ -2120,7 +2120,7 @@ mod tests {
#[tokio::test(flavor = "current_thread")]
async fn commit_write_does_not_retry_on_access_denied() {
let backend = Arc::new(DummyBackend::new());
backend.queue_put_object_err(DummyError::Injected("AccessDenied: policy".into()));
backend.queue_put_object_err(DummyError::AccessDenied("policy".into()));
// A second response so a retry attempt would surface a
// wrong-status assertion failure rather than the
// configured-miss default. If the loop wrongly retries, the