From 23ccd24210face882dc392b28b9fdc5f995543bf Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Tue, 10 Feb 2026 08:26:19 -0600 Subject: [PATCH] Fix SNMP client tests for Linux CI environment - Map "Failed to parse OID" C library errors to InvalidOid variant - Walk to unreachable host may return empty results instead of error on some Linux configurations --- src/snmp/client.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/snmp/client.rs b/src/snmp/client.rs index ed4e4ba..e38d0fb 100644 --- a/src/snmp/client.rs +++ b/src/snmp/client.rs @@ -340,6 +340,8 @@ impl SnmpSession { if err_msg.contains("timeout") { return Err(SnmpError::Timeout); + } else if err_msg.contains("Failed to parse OID") { + return Err(SnmpError::InvalidOid(err_msg)); } else { return Err(SnmpError::RequestFailed(err_msg)); } @@ -444,6 +446,9 @@ impl SnmpSession { let err_msg = CStr::from_ptr(error_buf.as_ptr()) .to_string_lossy() .to_string(); + if err_msg.contains("Failed to parse OID") { + return Err(SnmpError::InvalidOid(err_msg)); + } return Err(SnmpError::RequestFailed(err_msg)); } @@ -776,9 +781,15 @@ mod tests { .walk("192.0.2.1", "public", "2c", 161, "1.3.6.1.2.1.1", None) .await; - // Both should fail but not panic + // Get should fail (unreachable host), walk may fail or return empty assert!(get_result.is_err()); - assert!(walk_result.is_err()); + match walk_result { + Err(_) => {} // Expected on most systems + Ok(results) => assert!( + results.is_empty(), + "Walk to unreachable host should return no results" + ), + } } #[test]