Skip to content

Commit 9b595dd

Browse files
committed
link-test: refactor and reorg
Move common tests by target file format (Wasm, MachO) into helper functions in `link.zig`, and sort alphabetically within for easier tracking versus file organization on disk.
1 parent d842821 commit 9b595dd

File tree

6 files changed

+47
-35
lines changed

6 files changed

+47
-35
lines changed

test/link.zig

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
2323
.build_modes = true,
2424
});
2525

26-
cases.addBuildFile("test/link/wasm/type/build.zig", .{
26+
addWasmCases(cases);
27+
addMachOCases(cases);
28+
}
29+
30+
fn addWasmCases(cases: *tests.StandaloneContext) void {
31+
cases.addBuildFile("test/link/wasm/bss/build.zig", .{
2732
.build_modes = true,
2833
.requires_stage2 = true,
2934
});
@@ -38,23 +43,13 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
3843
.requires_stage2 = true,
3944
});
4045

41-
cases.addBuildFile("test/link/wasm/bss/build.zig", .{
46+
cases.addBuildFile("test/link/wasm/type/build.zig", .{
4247
.build_modes = true,
4348
.requires_stage2 = true,
4449
});
50+
}
4551

46-
cases.addBuildFile("test/link/macho/entry/build.zig", .{
47-
.build_modes = true,
48-
});
49-
50-
cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
51-
.build_modes = false,
52-
});
53-
54-
cases.addBuildFile("test/link/macho/dylib/build.zig", .{
55-
.build_modes = true,
56-
});
57-
52+
fn addMachOCases(cases: *tests.StandaloneContext) void {
5853
cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{
5954
.build_modes = false,
6055
});
@@ -64,50 +59,60 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
6459
.requires_macos_sdk = true,
6560
});
6661

67-
cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
62+
cases.addBuildFile("test/link/macho/dylib/build.zig", .{
6863
.build_modes = true,
6964
});
7065

71-
cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
66+
cases.addBuildFile("test/link/macho/entry/build.zig", .{
7267
.build_modes = true,
7368
});
7469

75-
cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
70+
cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
7671
.build_modes = true,
7772
.requires_macos_sdk = true,
7873
});
7974

80-
cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
75+
cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
8176
.build_modes = true,
8277
.requires_macos_sdk = true,
8378
});
8479

85-
// Try to build and run an Objective-C executable.
80+
cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
81+
.build_modes = true,
82+
});
83+
8684
cases.addBuildFile("test/link/macho/objc/build.zig", .{
8785
.build_modes = true,
8886
.requires_macos_sdk = true,
8987
});
9088

91-
// Try to build and run an Objective-C++ executable.
9289
cases.addBuildFile("test/link/macho/objcpp/build.zig", .{
9390
.build_modes = true,
9491
.requires_macos_sdk = true,
9592
});
9693

97-
cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
98-
.build_modes = true,
94+
cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
95+
.build_modes = false,
9996
});
10097

10198
cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
10299
.build_modes = true,
103100
});
104101

105-
cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
102+
cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
106103
.build_modes = true,
107-
.requires_macos_sdk = true,
108104
});
109105

110106
cases.addBuildFile("test/link/macho/tls/build.zig", .{
111107
.build_modes = true,
112108
});
109+
110+
cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
111+
.build_modes = true,
112+
});
113+
114+
cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
115+
.build_modes = true,
116+
.requires_macos_sdk = true,
117+
});
113118
}

test/link/macho/dead_strip/build.zig

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ const LibExeObjectStep = std.build.LibExeObjStep;
44

55
pub fn build(b: *Builder) void {
66
const mode = b.standardReleaseOptions();
7+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
78

89
const test_step = b.step("test", "Test the program");
910
test_step.dependOn(b.getInstallStep());
1011

1112
{
1213
// Without -dead_strip, we expect `iAmUnused` symbol present
13-
const exe = createScenario(b, mode);
14+
const exe = createScenario(b, mode, target);
1415

1516
const check = exe.checkObject(.macho);
1617
check.checkInSymtab();
@@ -23,7 +24,7 @@ pub fn build(b: *Builder) void {
2324

2425
{
2526
// With -dead_strip, no `iAmUnused` symbol should be present
26-
const exe = createScenario(b, mode);
27+
const exe = createScenario(b, mode, target);
2728
exe.link_gc_sections = true;
2829

2930
const check = exe.checkObject(.macho);
@@ -36,10 +37,11 @@ pub fn build(b: *Builder) void {
3637
}
3738
}
3839

39-
fn createScenario(b: *Builder, mode: std.builtin.Mode) *LibExeObjectStep {
40+
fn createScenario(b: *Builder, mode: std.builtin.Mode, target: std.zig.CrossTarget) *LibExeObjectStep {
4041
const exe = b.addExecutable("test", null);
4142
exe.addCSourceFile("main.c", &[0][]const u8{});
4243
exe.setBuildMode(mode);
44+
exe.setTarget(target);
4345
exe.linkLibC();
4446
return exe;
4547
}

test/link/macho/pagezero/build.zig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ const Builder = std.build.Builder;
33

44
pub fn build(b: *Builder) void {
55
const mode = b.standardReleaseOptions();
6+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
67

78
const test_step = b.step("test", "Test");
89
test_step.dependOn(b.getInstallStep());
910

1011
{
1112
const exe = b.addExecutable("pagezero", null);
12-
exe.setTarget(.{ .os_tag = .macos });
13+
exe.setTarget(target);
1314
exe.setBuildMode(mode);
1415
exe.addCSourceFile("main.c", &.{});
1516
exe.linkLibC();
@@ -29,7 +30,7 @@ pub fn build(b: *Builder) void {
2930

3031
{
3132
const exe = b.addExecutable("no_pagezero", null);
32-
exe.setTarget(.{ .os_tag = .macos });
33+
exe.setTarget(target);
3334
exe.setBuildMode(mode);
3435
exe.addCSourceFile("main.c", &.{});
3536
exe.linkLibC();

test/link/macho/search_strategy/build.zig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
const std = @import("std");
22
const Builder = std.build.Builder;
33
const LibExeObjectStep = std.build.LibExeObjStep;
4-
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
54

65
pub fn build(b: *Builder) void {
76
const mode = b.standardReleaseOptions();
7+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
88

99
const test_step = b.step("test", "Test");
1010
test_step.dependOn(b.getInstallStep());
1111

1212
{
1313
// -search_dylibs_first
14-
const exe = createScenario(b, mode);
14+
const exe = createScenario(b, mode, target);
1515
exe.search_strategy = .dylibs_first;
1616

1717
const check = exe.checkObject(.macho);
@@ -26,7 +26,7 @@ pub fn build(b: *Builder) void {
2626

2727
{
2828
// -search_paths_first
29-
const exe = createScenario(b, mode);
29+
const exe = createScenario(b, mode, target);
3030
exe.search_strategy = .paths_first;
3131

3232
const run = std.build.EmulatableRunStep.create(b, "run", exe);
@@ -36,7 +36,7 @@ pub fn build(b: *Builder) void {
3636
}
3737
}
3838

39-
fn createScenario(b: *Builder, mode: std.builtin.Mode) *LibExeObjectStep {
39+
fn createScenario(b: *Builder, mode: std.builtin.Mode, target: std.zig.CrossTarget) *LibExeObjectStep {
4040
const static = b.addStaticLibrary("a", null);
4141
static.setTarget(target);
4242
static.setBuildMode(mode);

test/link/macho/stack_size/build.zig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ const Builder = std.build.Builder;
33

44
pub fn build(b: *Builder) void {
55
const mode = b.standardReleaseOptions();
6+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
67

78
const test_step = b.step("test", "Test");
89
test_step.dependOn(b.getInstallStep());
910

1011
const exe = b.addExecutable("main", null);
11-
exe.setTarget(.{ .os_tag = .macos });
12+
exe.setTarget(target);
1213
exe.setBuildMode(mode);
1314
exe.addCSourceFile("main.c", &.{});
1415
exe.linkLibC();

test/link/macho/tls/build.zig

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
1-
const Builder = @import("std").build.Builder;
1+
const std = @import("std");
2+
const Builder = std.build.Builder;
23

34
pub fn build(b: *Builder) void {
45
const mode = b.standardReleaseOptions();
56
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
67

78
const lib = b.addSharedLibrary("a", null, b.version(1, 0, 0));
89
lib.setBuildMode(mode);
10+
lib.setTarget(target);
911
lib.addCSourceFile("a.c", &.{});
1012
lib.linkLibC();
1113

1214
const test_exe = b.addTest("main.zig");
1315
test_exe.setBuildMode(mode);
16+
test_exe.setTarget(target);
1417
test_exe.linkLibrary(lib);
1518
test_exe.linkLibC();
1619

0 commit comments

Comments
 (0)