From 9c7776a9389f2c752c9cc66b653844a7d935f719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 23 Nov 2024 15:45:15 +0100 Subject: [PATCH] test: Enable -Dtest-target-filter=... to work for test-c-abi. --- build.zig | 6 +++++- test/tests.zig | 21 +++++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/build.zig b/build.zig index ed84e037ae..f57080a5c9 100644 --- a/build.zig +++ b/build.zig @@ -541,7 +541,11 @@ pub fn build(b: *std.Build) !void { enable_ios_sdk, enable_symlinks_windows, )); - test_step.dependOn(tests.addCAbiTests(b, skip_non_native, skip_release)); + test_step.dependOn(tests.addCAbiTests(b, .{ + .test_target_filters = test_target_filters, + .skip_non_native = skip_non_native, + .skip_release = skip_release, + })); test_step.dependOn(tests.addLinkTests(b, enable_macos_sdk, enable_ios_sdk, enable_symlinks_windows)); test_step.dependOn(tests.addStackTraceTests(b, test_filters, optimization_modes)); test_step.dependOn(tests.addCliTests(b)); diff --git a/test/tests.zig b/test/tests.zig index d7b36f522b..666c5a115d 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -1486,19 +1486,32 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { return step; } -pub fn addCAbiTests(b: *std.Build, skip_non_native: bool, skip_release: bool) *Step { +const CAbiTestOptions = struct { + test_target_filters: []const []const u8, + skip_non_native: bool, + skip_release: bool, +}; + +pub fn addCAbiTests(b: *std.Build, options: CAbiTestOptions) *Step { const step = b.step("test-c-abi", "Run the C ABI tests"); const optimize_modes: [3]OptimizeMode = .{ .Debug, .ReleaseSafe, .ReleaseFast }; for (optimize_modes) |optimize_mode| { - if (optimize_mode != .Debug and skip_release) continue; + if (optimize_mode != .Debug and options.skip_release) continue; for (c_abi_targets) |c_abi_target| { - if (skip_non_native and !c_abi_target.target.isNative()) continue; + if (options.skip_non_native and !c_abi_target.target.isNative()) continue; const resolved_target = b.resolveTargetQuery(c_abi_target.target); const target = resolved_target.result; + const triple_txt = target.zigTriple(b.allocator) catch @panic("OOM"); + + if (options.test_target_filters.len > 0) { + for (options.test_target_filters) |filter| { + if (std.mem.indexOf(u8, triple_txt, filter) != null) break; + } else continue; + } if (target.os.tag == .windows and target.cpu.arch == .aarch64) { // https://github.com/ziglang/zig/issues/14908 @@ -1507,7 +1520,7 @@ pub fn addCAbiTests(b: *std.Build, skip_non_native: bool, skip_release: bool) *S const test_step = b.addTest(.{ .name = b.fmt("test-c-abi-{s}-{s}-{s}{s}{s}{s}", .{ - target.zigTriple(b.allocator) catch @panic("OOM"), + triple_txt, target.cpu.model.name, @tagName(optimize_mode), if (c_abi_target.use_llvm == true)