mirror of
https://github.com/ziglang/zig.git
synced 2025-12-30 01:53:16 +00:00
test: Enable -Dtest-target-filter=... to work for test-cases and test-translate-c.
This commit is contained in:
parent
9c7776a938
commit
2a29381117
@ -442,7 +442,7 @@ pub fn build(b: *std.Build) !void {
|
|||||||
test_step.dependOn(check_fmt);
|
test_step.dependOn(check_fmt);
|
||||||
|
|
||||||
const test_cases_step = b.step("test-cases", "Run the main compiler test cases");
|
const test_cases_step = b.step("test-cases", "Run the main compiler test cases");
|
||||||
try tests.addCases(b, test_cases_step, test_filters, target, .{
|
try tests.addCases(b, test_cases_step, test_filters, test_target_filters, target, .{
|
||||||
.skip_translate_c = skip_translate_c,
|
.skip_translate_c = skip_translate_c,
|
||||||
.skip_run_translated_c = skip_run_translated_c,
|
.skip_run_translated_c = skip_run_translated_c,
|
||||||
}, .{
|
}, .{
|
||||||
|
|||||||
@ -539,13 +539,14 @@ pub fn lowerToTranslateCSteps(
|
|||||||
b: *std.Build,
|
b: *std.Build,
|
||||||
parent_step: *std.Build.Step,
|
parent_step: *std.Build.Step,
|
||||||
test_filters: []const []const u8,
|
test_filters: []const []const u8,
|
||||||
|
test_target_filters: []const []const u8,
|
||||||
target: std.Build.ResolvedTarget,
|
target: std.Build.ResolvedTarget,
|
||||||
translate_c_options: TranslateCOptions,
|
translate_c_options: TranslateCOptions,
|
||||||
) void {
|
) void {
|
||||||
const tests = @import("../tests.zig");
|
const tests = @import("../tests.zig");
|
||||||
const test_translate_c_step = b.step("test-translate-c", "Run the C translation tests");
|
const test_translate_c_step = b.step("test-translate-c", "Run the C translation tests");
|
||||||
if (!translate_c_options.skip_translate_c) {
|
if (!translate_c_options.skip_translate_c) {
|
||||||
tests.addTranslateCTests(b, test_translate_c_step, test_filters);
|
tests.addTranslateCTests(b, test_translate_c_step, test_filters, test_target_filters);
|
||||||
parent_step.dependOn(test_translate_c_step);
|
parent_step.dependOn(test_translate_c_step);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,6 +621,7 @@ pub fn lowerToBuildSteps(
|
|||||||
b: *std.Build,
|
b: *std.Build,
|
||||||
parent_step: *std.Build.Step,
|
parent_step: *std.Build.Step,
|
||||||
test_filters: []const []const u8,
|
test_filters: []const []const u8,
|
||||||
|
test_target_filters: []const []const u8,
|
||||||
) void {
|
) void {
|
||||||
const host = std.zig.system.resolveTargetQuery(.{}) catch |err|
|
const host = std.zig.system.resolveTargetQuery(.{}) catch |err|
|
||||||
std.debug.panic("unable to detect native host: {s}\n", .{@errorName(err)});
|
std.debug.panic("unable to detect native host: {s}\n", .{@errorName(err)});
|
||||||
@ -648,6 +650,14 @@ pub fn lowerToBuildSteps(
|
|||||||
if (std.mem.indexOf(u8, case.name, test_filter)) |_| break;
|
if (std.mem.indexOf(u8, case.name, test_filter)) |_| break;
|
||||||
} else if (test_filters.len > 0) continue;
|
} else if (test_filters.len > 0) continue;
|
||||||
|
|
||||||
|
const triple_txt = case.target.result.zigTriple(b.allocator) catch @panic("OOM");
|
||||||
|
|
||||||
|
if (test_target_filters.len > 0) {
|
||||||
|
for (test_target_filters) |filter| {
|
||||||
|
if (std.mem.indexOf(u8, triple_txt, filter) != null) break;
|
||||||
|
} else continue;
|
||||||
|
}
|
||||||
|
|
||||||
const writefiles = b.addWriteFiles();
|
const writefiles = b.addWriteFiles();
|
||||||
var file_sources = std.StringHashMap(std.Build.LazyPath).init(b.allocator);
|
var file_sources = std.StringHashMap(std.Build.LazyPath).init(b.allocator);
|
||||||
defer file_sources.deinit();
|
defer file_sources.deinit();
|
||||||
@ -740,7 +750,7 @@ pub fn lowerToBuildSteps(
|
|||||||
"--",
|
"--",
|
||||||
"-lc",
|
"-lc",
|
||||||
"-target",
|
"-target",
|
||||||
case.target.result.zigTriple(b.allocator) catch @panic("OOM"),
|
triple_txt,
|
||||||
});
|
});
|
||||||
run_c.addArtifactArg(artifact);
|
run_c.addArtifactArg(artifact);
|
||||||
break :run_step run_c;
|
break :run_step run_c;
|
||||||
|
|||||||
@ -2,6 +2,7 @@ b: *std.Build,
|
|||||||
step: *std.Build.Step,
|
step: *std.Build.Step,
|
||||||
test_index: usize,
|
test_index: usize,
|
||||||
test_filters: []const []const u8,
|
test_filters: []const []const u8,
|
||||||
|
test_target_filters: []const []const u8,
|
||||||
|
|
||||||
const TestCase = struct {
|
const TestCase = struct {
|
||||||
name: []const u8,
|
name: []const u8,
|
||||||
@ -92,6 +93,16 @@ pub fn addCase(self: *TranslateCContext, case: *const TestCase) void {
|
|||||||
if (mem.indexOf(u8, annotated_case_name, test_filter)) |_| break;
|
if (mem.indexOf(u8, annotated_case_name, test_filter)) |_| break;
|
||||||
} else if (self.test_filters.len > 0) return;
|
} else if (self.test_filters.len > 0) return;
|
||||||
|
|
||||||
|
const target = b.resolveTargetQuery(case.target);
|
||||||
|
|
||||||
|
if (self.test_target_filters.len > 0) {
|
||||||
|
const triple_txt = target.result.zigTriple(b.allocator) catch @panic("OOM");
|
||||||
|
|
||||||
|
for (self.test_target_filters) |filter| {
|
||||||
|
if (std.mem.indexOf(u8, triple_txt, filter) != null) break;
|
||||||
|
} else return;
|
||||||
|
}
|
||||||
|
|
||||||
const write_src = b.addWriteFiles();
|
const write_src = b.addWriteFiles();
|
||||||
const first_src = case.sources.items[0];
|
const first_src = case.sources.items[0];
|
||||||
const root_source_file = write_src.add(first_src.filename, first_src.source);
|
const root_source_file = write_src.add(first_src.filename, first_src.source);
|
||||||
@ -101,7 +112,7 @@ pub fn addCase(self: *TranslateCContext, case: *const TestCase) void {
|
|||||||
|
|
||||||
const translate_c = b.addTranslateC(.{
|
const translate_c = b.addTranslateC(.{
|
||||||
.root_source_file = root_source_file,
|
.root_source_file = root_source_file,
|
||||||
.target = b.resolveTargetQuery(case.target),
|
.target = target,
|
||||||
.optimize = .Debug,
|
.optimize = .Debug,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1237,18 +1237,22 @@ pub fn addAssembleAndLinkTests(b: *std.Build, test_filters: []const []const u8,
|
|||||||
return cases.step;
|
return cases.step;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn addTranslateCTests(b: *std.Build, parent_step: *std.Build.Step, test_filters: []const []const u8) void {
|
pub fn addTranslateCTests(
|
||||||
|
b: *std.Build,
|
||||||
|
parent_step: *std.Build.Step,
|
||||||
|
test_filters: []const []const u8,
|
||||||
|
test_target_filters: []const []const u8,
|
||||||
|
) void {
|
||||||
const cases = b.allocator.create(TranslateCContext) catch @panic("OOM");
|
const cases = b.allocator.create(TranslateCContext) catch @panic("OOM");
|
||||||
cases.* = TranslateCContext{
|
cases.* = TranslateCContext{
|
||||||
.b = b,
|
.b = b,
|
||||||
.step = parent_step,
|
.step = parent_step,
|
||||||
.test_index = 0,
|
.test_index = 0,
|
||||||
.test_filters = test_filters,
|
.test_filters = test_filters,
|
||||||
|
.test_target_filters = test_target_filters,
|
||||||
};
|
};
|
||||||
|
|
||||||
translate_c.addCases(cases);
|
translate_c.addCases(cases);
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn addRunTranslatedCTests(
|
pub fn addRunTranslatedCTests(
|
||||||
@ -1267,8 +1271,6 @@ pub fn addRunTranslatedCTests(
|
|||||||
};
|
};
|
||||||
|
|
||||||
run_translated_c.addCases(cases);
|
run_translated_c.addCases(cases);
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const ModuleTestOptions = struct {
|
const ModuleTestOptions = struct {
|
||||||
@ -1565,6 +1567,7 @@ pub fn addCases(
|
|||||||
b: *std.Build,
|
b: *std.Build,
|
||||||
parent_step: *Step,
|
parent_step: *Step,
|
||||||
test_filters: []const []const u8,
|
test_filters: []const []const u8,
|
||||||
|
test_target_filters: []const []const u8,
|
||||||
target: std.Build.ResolvedTarget,
|
target: std.Build.ResolvedTarget,
|
||||||
translate_c_options: @import("src/Cases.zig").TranslateCOptions,
|
translate_c_options: @import("src/Cases.zig").TranslateCOptions,
|
||||||
build_options: @import("cases.zig").BuildOptions,
|
build_options: @import("cases.zig").BuildOptions,
|
||||||
@ -1580,12 +1583,13 @@ pub fn addCases(
|
|||||||
cases.addFromDir(dir, b);
|
cases.addFromDir(dir, b);
|
||||||
try @import("cases.zig").addCases(&cases, build_options, b);
|
try @import("cases.zig").addCases(&cases, build_options, b);
|
||||||
|
|
||||||
cases.lowerToTranslateCSteps(b, parent_step, test_filters, target, translate_c_options);
|
cases.lowerToTranslateCSteps(b, parent_step, test_filters, test_target_filters, target, translate_c_options);
|
||||||
|
|
||||||
cases.lowerToBuildSteps(
|
cases.lowerToBuildSteps(
|
||||||
b,
|
b,
|
||||||
parent_step,
|
parent_step,
|
||||||
test_filters,
|
test_filters,
|
||||||
|
test_target_filters,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user