mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 07:03:29 +00:00
Startup local HTTP server for testing
Change loader tests to use local HTTP server. Add missing test scripts (i.e. storage) to unittest runs.
This commit is contained in:
@@ -79,13 +79,19 @@ pub const Loader = struct {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
test "basic url get" {
|
test "loader: get" {
|
||||||
const alloc = std.testing.allocator;
|
const alloc = std.testing.allocator;
|
||||||
var loader = Loader.init(alloc);
|
var loader = Loader.init(alloc);
|
||||||
defer loader.deinit();
|
defer loader.deinit();
|
||||||
|
|
||||||
var result = try loader.get(alloc, "https://en.wikipedia.org/wiki/Main_Page");
|
const uri = try std.Uri.parse("http://localhost:9582/loader");
|
||||||
|
var result = try loader.get(alloc, uri);
|
||||||
defer result.deinit();
|
defer result.deinit();
|
||||||
|
|
||||||
try std.testing.expect(result.req.response.status == std.http.Status.ok);
|
try std.testing.expectEqual(.ok, result.req.response.status);
|
||||||
|
|
||||||
|
var res: [128]u8 = undefined;
|
||||||
|
const size = try result.req.readAll(&res);
|
||||||
|
try std.testing.expectEqual(6, size);
|
||||||
|
try std.testing.expectEqualStrings("Hello!", res[0..6]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ const builtin = @import("builtin");
|
|||||||
|
|
||||||
const Allocator = std.mem.Allocator;
|
const Allocator = std.mem.Allocator;
|
||||||
|
|
||||||
|
pub const std_options = std.Options{
|
||||||
|
.http_disable_tls = true,
|
||||||
|
};
|
||||||
|
|
||||||
const BORDER = "=" ** 80;
|
const BORDER = "=" ** 80;
|
||||||
|
|
||||||
// use in custom panic handler
|
// use in custom panic handler
|
||||||
@@ -43,6 +47,12 @@ pub fn main() !void {
|
|||||||
var skip: usize = 0;
|
var skip: usize = 0;
|
||||||
var leak: usize = 0;
|
var leak: usize = 0;
|
||||||
|
|
||||||
|
const address = try std.net.Address.parseIp("127.0.0.1", 9582);
|
||||||
|
var listener = try address.listen(.{.reuse_address = true});
|
||||||
|
defer listener.deinit();
|
||||||
|
const http_thread = try std.Thread.spawn(.{}, serverHTTP, .{&listener});
|
||||||
|
defer http_thread.join();
|
||||||
|
|
||||||
const printer = Printer.init();
|
const printer = Printer.init();
|
||||||
printer.fmt("\r\x1b[0K", .{}); // beginning of line and clear to end of line
|
printer.fmt("\r\x1b[0K", .{}); // beginning of line and clear to end of line
|
||||||
|
|
||||||
@@ -314,31 +324,55 @@ fn isTeardown(t: std.builtin.TestFn) bool {
|
|||||||
return std.mem.endsWith(u8, t.name, "tests:afterAll");
|
return std.mem.endsWith(u8, t.name, "tests:afterAll");
|
||||||
}
|
}
|
||||||
|
|
||||||
test {
|
fn serverHTTP(listener: *std.net.Server) !void {
|
||||||
const msgTest = @import("msg.zig");
|
var read_buffer: [1024]u8 = undefined;
|
||||||
std.testing.refAllDecls(msgTest);
|
ACCEPT: while (true) {
|
||||||
|
var conn = try listener.accept();
|
||||||
|
defer conn.stream.close();
|
||||||
|
var server = std.http.Server.init(conn, &read_buffer);
|
||||||
|
|
||||||
const dumpTest = @import("browser/dump.zig");
|
while (server.state == .ready) {
|
||||||
std.testing.refAllDecls(dumpTest);
|
var request = server.receiveHead() catch |err| switch (err) {
|
||||||
|
error.HttpConnectionClosing => continue :ACCEPT,
|
||||||
|
else => {
|
||||||
|
std.debug.print("Test HTTP Server error: {}\n", .{err});
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const mimeTest = @import("browser/mime.zig");
|
const path = request.head.target;
|
||||||
std.testing.refAllDecls(mimeTest);
|
if (std.mem.eql(u8, path, "/loader")) {
|
||||||
|
try writeResponse(&request, .{
|
||||||
const cssTest = @import("css/css.zig");
|
.body = "Hello!",
|
||||||
std.testing.refAllDecls(cssTest);
|
});
|
||||||
|
}
|
||||||
const cssParserTest = @import("css/parser.zig");
|
}
|
||||||
std.testing.refAllDecls(cssParserTest);
|
}
|
||||||
|
}
|
||||||
const cssMatchTest = @import("css/match_test.zig");
|
|
||||||
std.testing.refAllDecls(cssMatchTest);
|
const Response = struct {
|
||||||
|
body: []const u8 = "",
|
||||||
const cssLibdomTest = @import("css/libdom_test.zig");
|
status: std.http.Status = .ok,
|
||||||
std.testing.refAllDecls(cssLibdomTest);
|
};
|
||||||
|
|
||||||
const queryTest = @import("url/query.zig");
|
fn writeResponse(req: *std.http.Server.Request, res: Response) !void {
|
||||||
std.testing.refAllDecls(queryTest);
|
try req.respond(res.body, .{
|
||||||
|
.status = res.status
|
||||||
std.testing.refAllDecls(@import("generate.zig"));
|
});
|
||||||
std.testing.refAllDecls(@import("cdp/msg.zig"));
|
}
|
||||||
|
|
||||||
|
test {
|
||||||
|
std.testing.refAllDecls( @import("url/query.zig"));
|
||||||
|
std.testing.refAllDecls(@import("browser/dump.zig"));
|
||||||
|
std.testing.refAllDecls(@import("browser/loader.zig"));
|
||||||
|
std.testing.refAllDecls(@import("browser/mime.zig"));
|
||||||
|
std.testing.refAllDecls(@import("cdp/msg.zig"));
|
||||||
|
std.testing.refAllDecls(@import("css/css.zig"));
|
||||||
|
std.testing.refAllDecls(@import("css/libdom_test.zig"));
|
||||||
|
std.testing.refAllDecls(@import("css/match_test.zig"));
|
||||||
|
std.testing.refAllDecls(@import("css/parser.zig"));
|
||||||
|
std.testing.refAllDecls(@import("generate.zig"));
|
||||||
|
std.testing.refAllDecls(@import("http/Client.zig"));
|
||||||
|
std.testing.refAllDecls(@import("msg.zig"));
|
||||||
|
std.testing.refAllDecls(@import("storage/storage.zig"));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user