From a86cabcaad077a71a2e90af4f9bed66aac2ccc14 Mon Sep 17 00:00:00 2001 From: ZapAnton Date: Wed, 7 Jun 2023 17:57:59 +0300 Subject: [PATCH 1/2] Remove CheckObjectStep.runAndCompare Closes https://github.com/ziglang/zig/issues/14969 --- lib/std/Build/Step/CheckObject.zig | 16 ---------------- test/link/macho/dead_strip/build.zig | 12 ++++++------ test/link/macho/dylib/build.zig | 2 +- test/link/macho/entry/build.zig | 2 +- test/link/macho/entry_in_dylib/build.zig | 2 +- test/link/macho/needed_library/build.zig | 6 +++--- test/link/macho/search_strategy/build.zig | 2 +- test/link/macho/stack_size/build.zig | 2 +- test/link/macho/strict_validation/build.zig | 2 +- test/link/macho/unwind_info/build.zig | 6 +++--- test/link/macho/weak_library/build.zig | 6 +++--- 11 files changed, 21 insertions(+), 37 deletions(-) diff --git a/lib/std/Build/Step/CheckObject.zig b/lib/std/Build/Step/CheckObject.zig index 24ebfef3881b..1c2d86e4e36a 100644 --- a/lib/std/Build/Step/CheckObject.zig +++ b/lib/std/Build/Step/CheckObject.zig @@ -42,22 +42,6 @@ pub fn create( return self; } -/// Runs and (optionally) compares the output of a binary. -/// Asserts `self` was generated from an executable step. -/// TODO this doesn't actually compare, and there's no apparent reason for it -/// to depend on the check object step. I don't see why this function should exist, -/// the caller could just add the run step directly. -pub fn runAndCompare(self: *CheckObject) *std.Build.Step.Run { - const dependencies_len = self.step.dependencies.items.len; - assert(dependencies_len > 0); - const exe_step = self.step.dependencies.items[dependencies_len - 1]; - const exe = exe_step.cast(std.Build.Step.Compile).?; - const run = self.step.owner.addRunArtifact(exe); - run.skip_foreign_checks = true; - run.step.dependOn(&self.step); - return run; -} - const SearchPhrase = struct { string: []const u8, file_source: ?std.Build.FileSource = null, diff --git a/test/link/macho/dead_strip/build.zig b/test/link/macho/dead_strip/build.zig index 9d00bad9e0ab..5259e0d6fb7a 100644 --- a/test/link/macho/dead_strip/build.zig +++ b/test/link/macho/dead_strip/build.zig @@ -17,9 +17,9 @@ pub fn build(b: *std.Build) void { check.checkInSymtab(); check.checkNext("{*} (__TEXT,__text) external _iAmUnused"); - const run_cmd = check.runAndCompare(); - run_cmd.expectStdOutEqual("Hello!\n"); - test_step.dependOn(&run_cmd.step); + const run = b.addRunArtifact(exe); + run.expectStdOutEqual("Hello!\n"); + test_step.dependOn(&run.step); } { @@ -31,9 +31,9 @@ pub fn build(b: *std.Build) void { check.checkInSymtab(); check.checkNotPresent("{*} (__TEXT,__text) external _iAmUnused"); - const run_cmd = check.runAndCompare(); - run_cmd.expectStdOutEqual("Hello!\n"); - test_step.dependOn(&run_cmd.step); + const run = b.addRunArtifact(exe); + run.expectStdOutEqual("Hello!\n"); + test_step.dependOn(&run.step); } } diff --git a/test/link/macho/dylib/build.zig b/test/link/macho/dylib/build.zig index a4085b51e620..91d311c21778 100644 --- a/test/link/macho/dylib/build.zig +++ b/test/link/macho/dylib/build.zig @@ -54,7 +54,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check_exe.checkStart("cmd RPATH"); check_exe.checkNextFileSource("path", dylib.getOutputDirectorySource()); - const run = check_exe.runAndCompare(); + const run = b.addRunArtifact(exe); run.expectStdOutEqual("Hello world"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/entry/build.zig b/test/link/macho/entry/build.zig index e983bc9391cf..9f7de6f8dc87 100644 --- a/test/link/macho/entry/build.zig +++ b/test/link/macho/entry/build.zig @@ -35,7 +35,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check_exe.checkComputeCompare("vmaddr entryoff +", .{ .op = .eq, .value = .{ .variable = "n_value" } }); - const run = check_exe.runAndCompare(); + const run = b.addRunArtifact(exe); run.expectStdOutEqual("42"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/entry_in_dylib/build.zig b/test/link/macho/entry_in_dylib/build.zig index 135661872dbb..552cecfbc04e 100644 --- a/test/link/macho/entry_in_dylib/build.zig +++ b/test/link/macho/entry_in_dylib/build.zig @@ -48,7 +48,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize .value = .{ .variable = "stubs_vmaddr" }, // The entrypoint should be a synthetic stub }); - const run = check_exe.runAndCompare(); + const run = b.addRunArtifact(exe); run.expectStdOutEqual("Hello!\n"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/needed_library/build.zig b/test/link/macho/needed_library/build.zig index cb9ea38d4bcc..93b3ab24d6c5 100644 --- a/test/link/macho/needed_library/build.zig +++ b/test/link/macho/needed_library/build.zig @@ -42,7 +42,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check.checkStart("cmd LOAD_DYLIB"); check.checkNext("name @rpath/liba.dylib"); - const run_cmd = check.runAndCompare(); - run_cmd.expectStdOutEqual(""); - test_step.dependOn(&run_cmd.step); + const run = b.addRunArtifact(exe); + run.expectStdOutEqual(""); + test_step.dependOn(&run.step); } diff --git a/test/link/macho/search_strategy/build.zig b/test/link/macho/search_strategy/build.zig index 853c47196987..badd8dd65eb0 100644 --- a/test/link/macho/search_strategy/build.zig +++ b/test/link/macho/search_strategy/build.zig @@ -24,7 +24,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check.checkStart("cmd LOAD_DYLIB"); check.checkNext("name @rpath/libsearch_dylibs_first.dylib"); - const run = check.runAndCompare(); + const run = b.addRunArtifact(exe); run.expectStdOutEqual("Hello world"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/stack_size/build.zig b/test/link/macho/stack_size/build.zig index c7d308d004e4..4feca1dfbc84 100644 --- a/test/link/macho/stack_size/build.zig +++ b/test/link/macho/stack_size/build.zig @@ -28,7 +28,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check_exe.checkStart("cmd MAIN"); check_exe.checkNext("stacksize 100000000"); - const run = check_exe.runAndCompare(); + const run = b.addRunArtifact(exe); run.expectStdOutEqual(""); test_step.dependOn(&run.step); } diff --git a/test/link/macho/strict_validation/build.zig b/test/link/macho/strict_validation/build.zig index 34a0cd73fc1c..0e079a07d927 100644 --- a/test/link/macho/strict_validation/build.zig +++ b/test/link/macho/strict_validation/build.zig @@ -122,7 +122,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize else => unreachable, } - const run = check_exe.runAndCompare(); + const run = b.addRunArtifact(exe); run.expectStdOutEqual("Hello!\n"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/unwind_info/build.zig b/test/link/macho/unwind_info/build.zig index 96b5f6cacc57..5aa60c6e2dbf 100644 --- a/test/link/macho/unwind_info/build.zig +++ b/test/link/macho/unwind_info/build.zig @@ -47,8 +47,8 @@ fn testUnwindInfo( check.checkInSymtab(); check.checkNext("{*} (__TEXT,__text) external ___gxx_personality_v0"); - const run_cmd = check.runAndCompare(); - run_cmd.expectStdOutEqual( + const run = b.addRunArtifact(exe); + run.expectStdOutEqual( \\Constructed: a \\Constructed: b \\About to destroy: b @@ -57,7 +57,7 @@ fn testUnwindInfo( \\ ); - test_step.dependOn(&run_cmd.step); + test_step.dependOn(&run.step); } fn createScenario( diff --git a/test/link/macho/weak_library/build.zig b/test/link/macho/weak_library/build.zig index 88d72ad48775..aae7edb4f778 100644 --- a/test/link/macho/weak_library/build.zig +++ b/test/link/macho/weak_library/build.zig @@ -46,7 +46,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check.checkInSymtab(); check.checkNext("(undefined) weak external _asStr (from liba)"); - const run_cmd = check.runAndCompare(); - run_cmd.expectStdOutEqual("42 42"); - test_step.dependOn(&run_cmd.step); + const run = b.addRunArtifact(exe); + run.expectStdOutEqual("42 42"); + test_step.dependOn(&run.step); } From 8ba8823b10004da8379e458e09faf34d7ff01ebb Mon Sep 17 00:00:00 2001 From: ZapAnton Date: Wed, 7 Jun 2023 22:07:27 +0300 Subject: [PATCH 2/2] Added run.skip_foreign_checks = true to the test run artifacts, that used CheckObjectStep.runAndCompare --- test/link/macho/dead_strip/build.zig | 2 ++ test/link/macho/dylib/build.zig | 1 + test/link/macho/entry/build.zig | 1 + test/link/macho/entry_in_dylib/build.zig | 1 + test/link/macho/needed_library/build.zig | 1 + test/link/macho/search_strategy/build.zig | 1 + test/link/macho/stack_size/build.zig | 1 + test/link/macho/strict_validation/build.zig | 1 + test/link/macho/unwind_info/build.zig | 1 + test/link/macho/weak_library/build.zig | 1 + 10 files changed, 11 insertions(+) diff --git a/test/link/macho/dead_strip/build.zig b/test/link/macho/dead_strip/build.zig index 5259e0d6fb7a..5ca3e5f89f19 100644 --- a/test/link/macho/dead_strip/build.zig +++ b/test/link/macho/dead_strip/build.zig @@ -18,6 +18,7 @@ pub fn build(b: *std.Build) void { check.checkNext("{*} (__TEXT,__text) external _iAmUnused"); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual("Hello!\n"); test_step.dependOn(&run.step); } @@ -32,6 +33,7 @@ pub fn build(b: *std.Build) void { check.checkNotPresent("{*} (__TEXT,__text) external _iAmUnused"); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual("Hello!\n"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/dylib/build.zig b/test/link/macho/dylib/build.zig index 91d311c21778..fe294f333390 100644 --- a/test/link/macho/dylib/build.zig +++ b/test/link/macho/dylib/build.zig @@ -55,6 +55,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check_exe.checkNextFileSource("path", dylib.getOutputDirectorySource()); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual("Hello world"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/entry/build.zig b/test/link/macho/entry/build.zig index 9f7de6f8dc87..454956ad4134 100644 --- a/test/link/macho/entry/build.zig +++ b/test/link/macho/entry/build.zig @@ -36,6 +36,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check_exe.checkComputeCompare("vmaddr entryoff +", .{ .op = .eq, .value = .{ .variable = "n_value" } }); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual("42"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/entry_in_dylib/build.zig b/test/link/macho/entry_in_dylib/build.zig index 552cecfbc04e..acb26efcebe6 100644 --- a/test/link/macho/entry_in_dylib/build.zig +++ b/test/link/macho/entry_in_dylib/build.zig @@ -49,6 +49,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize }); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual("Hello!\n"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/needed_library/build.zig b/test/link/macho/needed_library/build.zig index 93b3ab24d6c5..7b56572cc322 100644 --- a/test/link/macho/needed_library/build.zig +++ b/test/link/macho/needed_library/build.zig @@ -43,6 +43,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check.checkNext("name @rpath/liba.dylib"); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual(""); test_step.dependOn(&run.step); } diff --git a/test/link/macho/search_strategy/build.zig b/test/link/macho/search_strategy/build.zig index badd8dd65eb0..4b52d9aa0a47 100644 --- a/test/link/macho/search_strategy/build.zig +++ b/test/link/macho/search_strategy/build.zig @@ -25,6 +25,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check.checkNext("name @rpath/libsearch_dylibs_first.dylib"); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual("Hello world"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/stack_size/build.zig b/test/link/macho/stack_size/build.zig index 4feca1dfbc84..219d65cdb84b 100644 --- a/test/link/macho/stack_size/build.zig +++ b/test/link/macho/stack_size/build.zig @@ -29,6 +29,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check_exe.checkNext("stacksize 100000000"); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual(""); test_step.dependOn(&run.step); } diff --git a/test/link/macho/strict_validation/build.zig b/test/link/macho/strict_validation/build.zig index 0e079a07d927..d75b4c582019 100644 --- a/test/link/macho/strict_validation/build.zig +++ b/test/link/macho/strict_validation/build.zig @@ -123,6 +123,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize } const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual("Hello!\n"); test_step.dependOn(&run.step); } diff --git a/test/link/macho/unwind_info/build.zig b/test/link/macho/unwind_info/build.zig index 5aa60c6e2dbf..6f19acef3897 100644 --- a/test/link/macho/unwind_info/build.zig +++ b/test/link/macho/unwind_info/build.zig @@ -48,6 +48,7 @@ fn testUnwindInfo( check.checkNext("{*} (__TEXT,__text) external ___gxx_personality_v0"); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual( \\Constructed: a \\Constructed: b diff --git a/test/link/macho/weak_library/build.zig b/test/link/macho/weak_library/build.zig index aae7edb4f778..81a694be9b4c 100644 --- a/test/link/macho/weak_library/build.zig +++ b/test/link/macho/weak_library/build.zig @@ -47,6 +47,7 @@ fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.Optimize check.checkNext("(undefined) weak external _asStr (from liba)"); const run = b.addRunArtifact(exe); + run.skip_foreign_checks = true; run.expectStdOutEqual("42 42"); test_step.dependOn(&run.step); }