| author | |
| committer | |
| log | 2a29381117be7196378229d1c4e797f704675c61 |
| tree | c6b6767e78a6c79315dc4a9d9dd774079f42ccb1 |
| parent | 9c7776a9389f2c752c9cc66b653844a7d935f719 |
| signature |
4 files changed, 35 insertions(+), 10 deletions(-)
build.zig+1-1| ... | ... | @@ -442,7 +442,7 @@ pub fn build(b: *std.Build) !void { |
| 442 | 442 | test_step.dependOn(check_fmt); |
| 443 | 443 | |
| 444 | 444 | const test_cases_step = b.step("test-cases", "Run the main compiler test cases"); |
| 445 | try tests.addCases(b, test_cases_step, test_filters, target, .{ | |
| 445 | try tests.addCases(b, test_cases_step, test_filters, test_target_filters, target, .{ | |
| 446 | 446 | .skip_translate_c = skip_translate_c, |
| 447 | 447 | .skip_run_translated_c = skip_run_translated_c, |
| 448 | 448 | }, .{ |
test/src/Cases.zig+12-2| ... | ... | @@ -539,13 +539,14 @@ pub fn lowerToTranslateCSteps( |
| 539 | 539 | b: *std.Build, |
| 540 | 540 | parent_step: *std.Build.Step, |
| 541 | 541 | test_filters: []const []const u8, |
| 542 | test_target_filters: []const []const u8, | |
| 542 | 543 | target: std.Build.ResolvedTarget, |
| 543 | 544 | translate_c_options: TranslateCOptions, |
| 544 | 545 | ) void { |
| 545 | 546 | const tests = @import("../tests.zig"); |
| 546 | 547 | const test_translate_c_step = b.step("test-translate-c", "Run the C translation tests"); |
| 547 | 548 | if (!translate_c_options.skip_translate_c) { |
| 548 | tests.addTranslateCTests(b, test_translate_c_step, test_filters); | |
| 549 | tests.addTranslateCTests(b, test_translate_c_step, test_filters, test_target_filters); | |
| 549 | 550 | parent_step.dependOn(test_translate_c_step); |
| 550 | 551 | } |
| 551 | 552 | |
| ... | ... | @@ -620,6 +621,7 @@ pub fn lowerToBuildSteps( |
| 620 | 621 | b: *std.Build, |
| 621 | 622 | parent_step: *std.Build.Step, |
| 622 | 623 | test_filters: []const []const u8, |
| 624 | test_target_filters: []const []const u8, | |
| 623 | 625 | ) void { |
| 624 | 626 | const host = std.zig.system.resolveTargetQuery(.{}) catch |err| |
| 625 | 627 | std.debug.panic("unable to detect native host: {s}\n", .{@errorName(err)}); |
| ... | ... | @@ -648,6 +650,14 @@ pub fn lowerToBuildSteps( |
| 648 | 650 | if (std.mem.indexOf(u8, case.name, test_filter)) |_| break; |
| 649 | 651 | } else if (test_filters.len > 0) continue; |
| 650 | 652 | |
| 653 | const triple_txt = case.target.result.zigTriple(b.allocator) catch @panic("OOM"); | |
| 654 | ||
| 655 | if (test_target_filters.len > 0) { | |
| 656 | for (test_target_filters) |filter| { | |
| 657 | if (std.mem.indexOf(u8, triple_txt, filter) != null) break; | |
| 658 | } else continue; | |
| 659 | } | |
| 660 | ||
| 651 | 661 | const writefiles = b.addWriteFiles(); |
| 652 | 662 | var file_sources = std.StringHashMap(std.Build.LazyPath).init(b.allocator); |
| 653 | 663 | defer file_sources.deinit(); |
| ... | ... | @@ -740,7 +750,7 @@ pub fn lowerToBuildSteps( |
| 740 | 750 | "--", |
| 741 | 751 | "-lc", |
| 742 | 752 | "-target", |
| 743 | case.target.result.zigTriple(b.allocator) catch @panic("OOM"), | |
| 753 | triple_txt, | |
| 744 | 754 | }); |
| 745 | 755 | run_c.addArtifactArg(artifact); |
| 746 | 756 | break :run_step run_c; |
test/src/TranslateC.zig+12-1| ... | ... | @@ -2,6 +2,7 @@ b: *std.Build, |
| 2 | 2 | step: *std.Build.Step, |
| 3 | 3 | test_index: usize, |
| 4 | 4 | test_filters: []const []const u8, |
| 5 | test_target_filters: []const []const u8, | |
| 5 | 6 | |
| 6 | 7 | const TestCase = struct { |
| 7 | 8 | name: []const u8, |
| ... | ... | @@ -92,6 +93,16 @@ pub fn addCase(self: *TranslateCContext, case: *const TestCase) void { |
| 92 | 93 | if (mem.indexOf(u8, annotated_case_name, test_filter)) |_| break; |
| 93 | 94 | } else if (self.test_filters.len > 0) return; |
| 94 | 95 | |
| 96 | const target = b.resolveTargetQuery(case.target); | |
| 97 | ||
| 98 | if (self.test_target_filters.len > 0) { | |
| 99 | const triple_txt = target.result.zigTriple(b.allocator) catch @panic("OOM"); | |
| 100 | ||
| 101 | for (self.test_target_filters) |filter| { | |
| 102 | if (std.mem.indexOf(u8, triple_txt, filter) != null) break; | |
| 103 | } else return; | |
| 104 | } | |
| 105 | ||
| 95 | 106 | const write_src = b.addWriteFiles(); |
| 96 | 107 | const first_src = case.sources.items[0]; |
| 97 | 108 | 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 { |
| 101 | 112 | |
| 102 | 113 | const translate_c = b.addTranslateC(.{ |
| 103 | 114 | .root_source_file = root_source_file, |
| 104 | .target = b.resolveTargetQuery(case.target), | |
| 115 | .target = target, | |
| 105 | 116 | .optimize = .Debug, |
| 106 | 117 | }); |
| 107 | 118 |
test/tests.zig+10-6| ... | ... | @@ -1237,18 +1237,22 @@ pub fn addAssembleAndLinkTests(b: *std.Build, test_filters: []const []const u8, |
| 1237 | 1237 | return cases.step; |
| 1238 | 1238 | } |
| 1239 | 1239 | |
| 1240 | pub fn addTranslateCTests(b: *std.Build, parent_step: *std.Build.Step, test_filters: []const []const u8) void { | |
| 1240 | pub fn addTranslateCTests( | |
| 1241 | b: *std.Build, | |
| 1242 | parent_step: *std.Build.Step, | |
| 1243 | test_filters: []const []const u8, | |
| 1244 | test_target_filters: []const []const u8, | |
| 1245 | ) void { | |
| 1241 | 1246 | const cases = b.allocator.create(TranslateCContext) catch @panic("OOM"); |
| 1242 | 1247 | cases.* = TranslateCContext{ |
| 1243 | 1248 | .b = b, |
| 1244 | 1249 | .step = parent_step, |
| 1245 | 1250 | .test_index = 0, |
| 1246 | 1251 | .test_filters = test_filters, |
| 1252 | .test_target_filters = test_target_filters, | |
| 1247 | 1253 | }; |
| 1248 | 1254 | |
| 1249 | 1255 | translate_c.addCases(cases); |
| 1250 | ||
| 1251 | return; | |
| 1252 | 1256 | } |
| 1253 | 1257 | |
| 1254 | 1258 | pub fn addRunTranslatedCTests( |
| ... | ... | @@ -1267,8 +1271,6 @@ pub fn addRunTranslatedCTests( |
| 1267 | 1271 | }; |
| 1268 | 1272 | |
| 1269 | 1273 | run_translated_c.addCases(cases); |
| 1270 | ||
| 1271 | return; | |
| 1272 | 1274 | } |
| 1273 | 1275 | |
| 1274 | 1276 | const ModuleTestOptions = struct { |
| ... | ... | @@ -1565,6 +1567,7 @@ pub fn addCases( |
| 1565 | 1567 | b: *std.Build, |
| 1566 | 1568 | parent_step: *Step, |
| 1567 | 1569 | test_filters: []const []const u8, |
| 1570 | test_target_filters: []const []const u8, | |
| 1568 | 1571 | target: std.Build.ResolvedTarget, |
| 1569 | 1572 | translate_c_options: @import("src/Cases.zig").TranslateCOptions, |
| 1570 | 1573 | build_options: @import("cases.zig").BuildOptions, |
| ... | ... | @@ -1580,12 +1583,13 @@ pub fn addCases( |
| 1580 | 1583 | cases.addFromDir(dir, b); |
| 1581 | 1584 | try @import("cases.zig").addCases(&cases, build_options, b); |
| 1582 | 1585 | |
| 1583 | cases.lowerToTranslateCSteps(b, parent_step, test_filters, target, translate_c_options); | |
| 1586 | cases.lowerToTranslateCSteps(b, parent_step, test_filters, test_target_filters, target, translate_c_options); | |
| 1584 | 1587 | |
| 1585 | 1588 | cases.lowerToBuildSteps( |
| 1586 | 1589 | b, |
| 1587 | 1590 | parent_step, |
| 1588 | 1591 | test_filters, |
| 1592 | test_target_filters, | |
| 1589 | 1593 | ); |
| 1590 | 1594 | } |
| 1591 | 1595 |