test harness improvements

* `-Dskip-compile-errors` is removed; `-Dskip-stage1` is added.
 * Use `std.testing.allocator` instead of a new instance of GPA.
   - Fix the memory leaks this revealed.
 * Show the file name when it is not parsed correctly such as when the
   manifest is missing.
   - Better error messages when test files are not parsed correctly.
 * Ignore unknown files such as swap files.
 * Move logic from declarative file to the test harness implementation.
 * Move stage1 tests to stage2 tests where appropriate.
This commit is contained in:
Andrew Kelley
2022-03-31 15:06:44 -07:00
parent df1ba38a88
commit 243afdcdf5
8 changed files with 151 additions and 119 deletions
-38
View File
@@ -3,44 +3,6 @@ const builtin = @import("builtin");
const TestContext = @import("../src/test.zig").TestContext;
pub fn addCases(ctx: *TestContext) !void {
var parent_dir = try std.fs.cwd().openDir(std.fs.path.dirname(@src().file).?, .{ .no_follow = true });
defer parent_dir.close();
var compile_errors_dir = try parent_dir.openDir("compile_errors", .{ .no_follow = true });
defer compile_errors_dir.close();
{
var stage2_dir = try compile_errors_dir.openDir("stage2", .{ .iterate = true, .no_follow = true });
defer stage2_dir.close();
// TODO make this false once the bug is solved that it triggers
const one_test_case_per_file = true;
try ctx.addErrorCasesFromDir("stage2", stage2_dir, .stage2, .Obj, false, one_test_case_per_file);
}
{
var stage1_dir = try compile_errors_dir.openDir("stage1", .{ .no_follow = true });
defer stage1_dir.close();
{
const one_test_case_per_file = true;
var obj_dir = try stage1_dir.openDir("obj", .{ .iterate = true, .no_follow = true });
defer obj_dir.close();
try ctx.addErrorCasesFromDir("stage1", obj_dir, .stage1, .Obj, false, one_test_case_per_file);
var exe_dir = try stage1_dir.openDir("exe", .{ .iterate = true, .no_follow = true });
defer exe_dir.close();
try ctx.addErrorCasesFromDir("stage1", exe_dir, .stage1, .Exe, false, one_test_case_per_file);
var test_dir = try stage1_dir.openDir("test", .{ .iterate = true, .no_follow = true });
defer test_dir.close();
try ctx.addErrorCasesFromDir("stage1", test_dir, .stage1, .Exe, true, one_test_case_per_file);
}
}
{
const case = ctx.obj("callconv(.Interrupt) on unsupported platform", .{
.cpu_arch = .aarch64,