Skip to content

Commit 6e58b98

Browse files
committed
Startup local HTTP server for testing
Change loader tests to use local HTTP server. Add missing test scripts (i.e. storage) to unittest runs.
1 parent 62805cd commit 6e58b98

File tree

2 files changed

+65
-25
lines changed

2 files changed

+65
-25
lines changed

src/browser/loader.zig

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,19 @@ pub const Loader = struct {
7979
}
8080
};
8181

82-
test "basic url get" {
82+
test "loader: get" {
8383
const alloc = std.testing.allocator;
8484
var loader = Loader.init(alloc);
8585
defer loader.deinit();
8686

87-
var result = try loader.get(alloc, "https://en.wikipedia.org/wiki/Main_Page");
87+
const uri = try std.Uri.parse("http://localhost:9582/loader");
88+
var result = try loader.get(alloc, uri);
8889
defer result.deinit();
8990

90-
try std.testing.expect(result.req.response.status == std.http.Status.ok);
91+
try std.testing.expectEqual(.ok, result.req.response.status);
92+
93+
var res: [128]u8 = undefined;
94+
const size = try result.req.readAll(&res);
95+
try std.testing.expectEqual(6, size);
96+
try std.testing.expectEqualStrings("Hello!", res[0..6]);
9197
}

src/unit_tests.zig

Lines changed: 56 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ const builtin = @import("builtin");
2121

2222
const Allocator = std.mem.Allocator;
2323

24+
pub const std_options = std.Options{
25+
.http_disable_tls = true,
26+
};
27+
2428
const BORDER = "=" ** 80;
2529

2630
// use in custom panic handler
@@ -43,6 +47,12 @@ pub fn main() !void {
4347
var skip: usize = 0;
4448
var leak: usize = 0;
4549

50+
const address = try std.net.Address.parseIp("127.0.0.1", 9582);
51+
var listener = try address.listen(.{.reuse_address = true});
52+
defer listener.deinit();
53+
const http_thread = try std.Thread.spawn(.{}, serverHTTP, .{&listener});
54+
defer http_thread.join();
55+
4656
const printer = Printer.init();
4757
printer.fmt("\r\x1b[0K", .{}); // beginning of line and clear to end of line
4858

@@ -314,31 +324,55 @@ fn isTeardown(t: std.builtin.TestFn) bool {
314324
return std.mem.endsWith(u8, t.name, "tests:afterAll");
315325
}
316326

317-
test {
318-
const msgTest = @import("msg.zig");
319-
std.testing.refAllDecls(msgTest);
320-
321-
const dumpTest = @import("browser/dump.zig");
322-
std.testing.refAllDecls(dumpTest);
323-
324-
const mimeTest = @import("browser/mime.zig");
325-
std.testing.refAllDecls(mimeTest);
326-
327-
const cssTest = @import("css/css.zig");
328-
std.testing.refAllDecls(cssTest);
329-
330-
const cssParserTest = @import("css/parser.zig");
331-
std.testing.refAllDecls(cssParserTest);
327+
fn serverHTTP(listener: *std.net.Server) !void {
328+
var read_buffer: [1024]u8 = undefined;
329+
ACCEPT: while (true) {
330+
var conn = try listener.accept();
331+
defer conn.stream.close();
332+
var server = std.http.Server.init(conn, &read_buffer);
333+
334+
while (server.state == .ready) {
335+
var request = server.receiveHead() catch |err| switch (err) {
336+
error.HttpConnectionClosing => continue :ACCEPT,
337+
else => {
338+
std.debug.print("Test HTTP Server error: {}\n", .{err});
339+
return err;
340+
}
341+
};
332342

333-
const cssMatchTest = @import("css/match_test.zig");
334-
std.testing.refAllDecls(cssMatchTest);
343+
const path = request.head.target;
344+
if (std.mem.eql(u8, path, "/loader")) {
345+
try writeResponse(&request, .{
346+
.body = "Hello!",
347+
});
348+
}
349+
}
350+
}
351+
}
335352

336-
const cssLibdomTest = @import("css/libdom_test.zig");
337-
std.testing.refAllDecls(cssLibdomTest);
353+
const Response = struct {
354+
body: []const u8 = "",
355+
status: std.http.Status = .ok,
356+
};
338357

339-
const queryTest = @import("url/query.zig");
340-
std.testing.refAllDecls(queryTest);
358+
fn writeResponse(req: *std.http.Server.Request, res: Response) !void {
359+
try req.respond(res.body, .{
360+
.status = res.status
361+
});
362+
}
341363

342-
std.testing.refAllDecls(@import("generate.zig"));
364+
test {
365+
std.testing.refAllDecls( @import("url/query.zig"));
366+
std.testing.refAllDecls(@import("browser/dump.zig"));
367+
std.testing.refAllDecls(@import("browser/loader.zig"));
368+
std.testing.refAllDecls(@import("browser/mime.zig"));
343369
std.testing.refAllDecls(@import("cdp/msg.zig"));
370+
std.testing.refAllDecls(@import("css/css.zig"));
371+
std.testing.refAllDecls(@import("css/libdom_test.zig"));
372+
std.testing.refAllDecls(@import("css/match_test.zig"));
373+
std.testing.refAllDecls(@import("css/parser.zig"));
374+
std.testing.refAllDecls(@import("generate.zig"));
375+
std.testing.refAllDecls(@import("http/Client.zig"));
376+
std.testing.refAllDecls(@import("msg.zig"));
377+
std.testing.refAllDecls(@import("storage/storage.zig"));
344378
}

0 commit comments

Comments
 (0)