atproto utils for zig zat.dev
atproto sdk zig

fix: use arena allocator in did_resolver integration test

std.http.Client internals leak memory that std.testing.allocator catches.
wrap test in arena allocator to handle cleanup, matching pattern in
handle_resolver tests.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Changed files
+15 -15
src
internal
+15 -15
src/internal/did_resolver.zig
··· 103 103 // === tests === 104 104 105 105 test "resolve did:plc - integration" { 106 - // run with: zig build test -- --test-filter "integration" 107 - if (@import("builtin").is_test) { 108 - // actually run this to verify it compiles and works 109 - var resolver = DidResolver.init(std.testing.allocator); 110 - defer resolver.deinit(); 106 + // use arena for http client internals that may leak 107 + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); 108 + defer arena.deinit(); 111 109 112 - const did = Did.parse("did:plc:z72i7hdynmk6r22z27h6tvur").?; 113 - var doc = resolver.resolve(did) catch |err| { 114 - // network errors are ok in CI, but compilation must succeed 115 - std.debug.print("network error (expected in CI): {}\n", .{err}); 116 - return; 117 - }; 118 - defer doc.deinit(); 110 + var resolver = DidResolver.init(arena.allocator()); 111 + defer resolver.deinit(); 119 112 120 - try std.testing.expectEqualStrings("did:plc:z72i7hdynmk6r22z27h6tvur", doc.id); 121 - try std.testing.expect(doc.handle() != null); 122 - } 113 + const did = Did.parse("did:plc:z72i7hdynmk6r22z27h6tvur").?; 114 + var doc = resolver.resolve(did) catch |err| { 115 + // network errors are ok in CI, but compilation must succeed 116 + std.debug.print("network error (expected in CI): {}\n", .{err}); 117 + return; 118 + }; 119 + defer doc.deinit(); 120 + 121 + try std.testing.expectEqualStrings("did:plc:z72i7hdynmk6r22z27h6tvur", doc.id); 122 + try std.testing.expect(doc.handle() != null); 123 123 } 124 124 125 125 test "did:web url construction" {