aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-03-08 00:16:16 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-03-15 10:48:14 -0700
commit030742f1f73d0c9a237d7512d894e88b05ad53af (patch)
treeb05b85401ffb09d9d7d5b6a86608394b67c0fbd1 /test
parent15c4fae1c93d970d02a9eede96371fb7c053837f (diff)
downloadzig-030742f1f73d0c9a237d7512d894e88b05ad53af.tar.gz
zig-030742f1f73d0c9a237d7512d894e88b05ad53af.zip
re-enable standalone tests based on build.zig
Diffstat (limited to 'test')
-rw-r--r--test/standalone.zig234
-rw-r--r--test/standalone/brace_expansion.zig (renamed from test/standalone/brace_expansion/main.zig)4
-rw-r--r--test/standalone/brace_expansion/build.zig11
-rw-r--r--test/standalone/c_compiler/build.zig39
-rw-r--r--test/standalone/dep_diamond/build.zig6
-rw-r--r--test/standalone/dep_mutually_recursive/build.zig6
-rw-r--r--test/standalone/dep_recursive/build.zig6
-rw-r--r--test/standalone/dep_shared_builtin/build.zig6
-rw-r--r--test/standalone/dep_triangle/build.zig6
-rw-r--r--test/standalone/embed_generated_file/build.zig8
-rw-r--r--test/standalone/emit_asm_and_bin/build.zig4
-rw-r--r--test/standalone/empty_env/build.zig16
-rw-r--r--test/standalone/global_linkage/build.zig11
-rw-r--r--test/standalone/install_raw_hex/build.zig6
-rw-r--r--test/standalone/issue_11595/build.zig31
-rw-r--r--test/standalone/issue_12588/build.zig8
-rw-r--r--test/standalone/issue_12706/build.zig30
-rw-r--r--test/standalone/issue_13030/build.zig15
-rw-r--r--test/standalone/issue_13970/build.zig4
-rw-r--r--test/standalone/issue_339/build.zig11
-rw-r--r--test/standalone/issue_5825/build.zig6
-rw-r--r--test/standalone/issue_7030.zig (renamed from test/standalone/issue_7030/main.zig)0
-rw-r--r--test/standalone/issue_7030/build.zig17
-rw-r--r--test/standalone/issue_794/build.zig6
-rw-r--r--test/standalone/issue_8550/build.zig7
-rw-r--r--test/standalone/issue_9812/build.zig7
-rw-r--r--test/standalone/load_dynamic_library/build.zig20
-rw-r--r--test/standalone/load_dynamic_library/main.zig6
-rw-r--r--test/standalone/main_pkg_path/build.zig4
-rw-r--r--test/standalone/mix_c_files/build.zig32
-rw-r--r--test/standalone/mix_o_files/build.zig10
-rw-r--r--test/standalone/pie/build.zig15
-rw-r--r--test/standalone/pkg_import/build.zig6
-rw-r--r--test/standalone/shared_library/build.zig10
-rw-r--r--test/standalone/sigpipe/build.zig11
-rw-r--r--test/standalone/static_c_lib/build.zig6
-rw-r--r--test/standalone/test_runner_path/build.zig6
-rw-r--r--test/standalone/test_runner_path/test_runner.zig40
-rw-r--r--test/standalone/use_alias/build.zig8
-rw-r--r--test/standalone/windows_spawn/build.zig17
-rw-r--r--test/tests.zig93
41 files changed, 455 insertions, 334 deletions
diff --git a/test/standalone.zig b/test/standalone.zig
index fa67d6a14d..6e0adcaa00 100644
--- a/test/standalone.zig
+++ b/test/standalone.zig
@@ -3,6 +3,8 @@ pub const SimpleCase = struct {
link_libc: bool = false,
all_modes: bool = false,
target: std.zig.CrossTarget = .{},
+ is_test: bool = false,
+ is_exe: bool = true,
};
pub const BuildCase = struct {
@@ -27,6 +29,17 @@ pub const simple_cases = [_]SimpleCase{
//.{
// .src_path = "test/standalone/issue_9693/main.zig",
//},
+ .{
+ .src_path = "test/standalone/brace_expansion.zig",
+ .is_test = true,
+ },
+ .{
+ .src_path = "test/standalone/issue_7030.zig",
+ .target = .{
+ .cpu_arch = .wasm32,
+ .os_tag = .freestanding,
+ },
+ },
.{ .src_path = "test/standalone/issue_12471/main.zig" },
.{ .src_path = "test/standalone/guess_number/main.zig" },
@@ -57,88 +70,143 @@ pub const simple_cases = [_]SimpleCase{
.{ .src_path = "tools/update_spirv_features.zig" },
};
-pub const build_cases = [_]BuildCase{};
-
-//pub fn addCases(cases: *tests.StandaloneContext) void {
-// cases.addBuildFile("test/standalone/options/build.zig", .{
-// .extra_argv = &.{
-// "-Dbool_true",
-// "-Dbool_false=false",
-// "-Dint=1234",
-// "-De=two",
-// "-Dstring=hello",
-// },
-// });
-//
-// cases.addBuildFile("test/standalone/test_runner_path/build.zig", .{ .requires_stage2 = true });
-// cases.addBuildFile("test/standalone/issue_13970/build.zig", .{});
-// cases.addBuildFile("test/standalone/main_pkg_path/build.zig", .{});
-// cases.addBuildFile("test/standalone/shared_library/build.zig", .{});
-// cases.addBuildFile("test/standalone/mix_o_files/build.zig", .{});
-// cases.addBuildFile("test/standalone/mix_c_files/build.zig", .{
-// .build_modes = true,
-// .cross_targets = true,
-// });
-// cases.addBuildFile("test/standalone/global_linkage/build.zig", .{});
-// cases.addBuildFile("test/standalone/static_c_lib/build.zig", .{});
-// cases.addBuildFile("test/standalone/issue_339/build.zig", .{});
-// cases.addBuildFile("test/standalone/issue_8550/build.zig", .{});
-// cases.addBuildFile("test/standalone/issue_794/build.zig", .{});
-// cases.addBuildFile("test/standalone/issue_5825/build.zig", .{});
-// cases.addBuildFile("test/standalone/pkg_import/build.zig", .{});
-// cases.addBuildFile("test/standalone/use_alias/build.zig", .{});
-// cases.addBuildFile("test/standalone/brace_expansion/build.zig", .{});
-// if (builtin.os.tag != .windows or builtin.cpu.arch != .aarch64) {
-// // https://github.com/ziglang/zig/issues/13685
-// cases.addBuildFile("test/standalone/empty_env/build.zig", .{});
-// }
-// cases.addBuildFile("test/standalone/issue_7030/build.zig", .{});
-// cases.addBuildFile("test/standalone/install_raw_hex/build.zig", .{});
-// if (builtin.zig_backend == .stage1) { // https://github.com/ziglang/zig/issues/12194
-// cases.addBuildFile("test/standalone/issue_9812/build.zig", .{});
-// }
-// if (builtin.os.tag != .windows) {
-// // https://github.com/ziglang/zig/issues/12419
-// cases.addBuildFile("test/standalone/issue_11595/build.zig", .{});
-// }
-//
-// if (builtin.os.tag != .wasi and
-// // https://github.com/ziglang/zig/issues/13550
-// (builtin.os.tag != .macos or builtin.cpu.arch != .aarch64) and
-// // https://github.com/ziglang/zig/issues/13686
-// (builtin.os.tag != .windows or builtin.cpu.arch != .aarch64))
-// {
-// cases.addBuildFile("test/standalone/load_dynamic_library/build.zig", .{});
-// }
-//
-// if (builtin.os.tag == .windows) {
-// cases.addBuildFile("test/standalone/windows_spawn/build.zig", .{});
-// }
-//
-// cases.addBuildFile("test/standalone/c_compiler/build.zig", .{
-// .build_modes = true,
-// .cross_targets = true,
-// });
-//
-// // Try to build and run a PIE executable.
-// if (builtin.os.tag == .linux) {
-// cases.addBuildFile("test/standalone/pie/build.zig", .{});
-// }
-// cases.addBuildFile("test/standalone/issue_12706/build.zig", .{});
-// if (std.os.have_sigpipe_support) {
-// cases.addBuildFile("test/standalone/sigpipe/build.zig", .{});
-// }
-//
-// cases.addBuildFile("test/standalone/issue_13030/build.zig", .{ .build_modes = true });
-// cases.addBuildFile("test/standalone/emit_asm_and_bin/build.zig", .{});
-// cases.addBuildFile("test/standalone/issue_12588/build.zig", .{});
-// cases.addBuildFile("test/standalone/embed_generated_file/build.zig", .{});
-//
-// cases.addBuildFile("test/standalone/dep_diamond/build.zig", .{});
-// cases.addBuildFile("test/standalone/dep_triangle/build.zig", .{});
-// cases.addBuildFile("test/standalone/dep_recursive/build.zig", .{});
-// cases.addBuildFile("test/standalone/dep_mutually_recursive/build.zig", .{});
-// cases.addBuildFile("test/standalone/dep_shared_builtin/build.zig", .{});
-//}
+pub const build_cases = [_]BuildCase{
+ .{
+ .build_root = "test/standalone/test_runner_path",
+ .import = @import("standalone/test_runner_path/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/issue_13970",
+ .import = @import("standalone/issue_13970/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/main_pkg_path",
+ .import = @import("standalone/main_pkg_path/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/shared_library",
+ .import = @import("standalone/shared_library/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/mix_o_files",
+ .import = @import("standalone/mix_o_files/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/mix_c_files",
+ .import = @import("standalone/mix_c_files/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/global_linkage",
+ .import = @import("standalone/global_linkage/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/static_c_lib",
+ .import = @import("standalone/static_c_lib/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/issue_339",
+ .import = @import("standalone/issue_339/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/issue_8550",
+ .import = @import("standalone/issue_8550/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/issue_794",
+ .import = @import("standalone/issue_794/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/issue_5825",
+ .import = @import("standalone/issue_5825/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/pkg_import",
+ .import = @import("standalone/pkg_import/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/use_alias",
+ .import = @import("standalone/use_alias/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/install_raw_hex",
+ .import = @import("standalone/install_raw_hex/build.zig"),
+ },
+ // TODO take away EmitOption.emit_to option and make it give a FileSource
+ //.{
+ // .build_root = "test/standalone/emit_asm_and_bin",
+ // .import = @import("standalone/emit_asm_and_bin/build.zig"),
+ //},
+ // TODO take away EmitOption.emit_to option and make it give a FileSource
+ //.{
+ // .build_root = "test/standalone/issue_12588",
+ // .import = @import("standalone/issue_12588/build.zig"),
+ //},
+ .{
+ .build_root = "test/standalone/embed_generated_file",
+ .import = @import("standalone/embed_generated_file/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/dep_diamond",
+ .import = @import("standalone/dep_diamond/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/dep_triangle",
+ .import = @import("standalone/dep_triangle/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/dep_recursive",
+ .import = @import("standalone/dep_recursive/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/dep_mutually_recursive",
+ .import = @import("standalone/dep_mutually_recursive/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/dep_shared_builtin",
+ .import = @import("standalone/dep_shared_builtin/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/empty_env",
+ .import = @import("standalone/empty_env/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/issue_9812",
+ .import = @import("standalone/issue_9812/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/issue_11595",
+ .import = @import("standalone/issue_11595/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/load_dynamic_library",
+ .import = @import("standalone/load_dynamic_library/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/windows_spawn",
+ .import = @import("standalone/windows_spawn/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/c_compiler",
+ .import = @import("standalone/c_compiler/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/pie",
+ .import = @import("standalone/pie/build.zig"),
+ },
+ .{
+ .build_root = "test/standalone/issue_12706",
+ .import = @import("standalone/issue_12706/build.zig"),
+ },
+ // TODO This test is disabled for doing naughty things in the build script.
+ // The logic needs to get moved to a child process instead of build.zig.
+ //.{
+ // .build_root = "test/standalone/sigpipe",
+ // .import = @import("standalone/sigpipe/build.zig"),
+ //},
+ .{
+ .build_root = "test/standalone/issue_13030",
+ .import = @import("standalone/issue_13030/build.zig"),
+ },
+};
const std = @import("std");
diff --git a/test/standalone/brace_expansion/main.zig b/test/standalone/brace_expansion.zig
index dcdcad3865..7a769f6af7 100644
--- a/test/standalone/brace_expansion/main.zig
+++ b/test/standalone/brace_expansion.zig
@@ -234,8 +234,8 @@ pub fn main() !void {
var result_buf = ArrayList(u8).init(global_allocator);
defer result_buf.deinit();
- try expandString(stdin.items, &result_buf);
- try stdout_file.write(result_buf.items);
+ try expandString(stdin, &result_buf);
+ try stdout_file.writeAll(result_buf.items);
}
test "invalid inputs" {
diff --git a/test/standalone/brace_expansion/build.zig b/test/standalone/brace_expansion/build.zig
deleted file mode 100644
index 7c32a09bef..0000000000
--- a/test/standalone/brace_expansion/build.zig
+++ /dev/null
@@ -1,11 +0,0 @@
-const std = @import("std");
-
-pub fn build(b: *std.Build) void {
- const main = b.addTest(.{
- .root_source_file = .{ .path = "main.zig" },
- .optimize = b.standardOptimizeOption(.{}),
- });
-
- const test_step = b.step("test", "Test it");
- test_step.dependOn(&main.step);
-}
diff --git a/test/standalone/c_compiler/build.zig b/test/standalone/c_compiler/build.zig
index dce999d4a2..6c5f2b4db6 100644
--- a/test/standalone/c_compiler/build.zig
+++ b/test/standalone/c_compiler/build.zig
@@ -1,27 +1,24 @@
const std = @import("std");
const builtin = @import("builtin");
-const CrossTarget = std.zig.CrossTarget;
-// TODO integrate this with the std.Build executor API
-fn isRunnableTarget(t: CrossTarget) bool {
- if (t.isNative()) return true;
+pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
- return (t.getOsTag() == builtin.os.tag and
- t.getCpuArch() == builtin.cpu.arch);
+ add(b, test_step, .Debug);
+ add(b, test_step, .ReleaseFast);
+ add(b, test_step, .ReleaseSmall);
+ add(b, test_step, .ReleaseSafe);
}
-pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
- const target = b.standardTargetOptions(.{});
-
- const test_step = b.step("test", "Test the program");
+fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
+ const target: std.zig.CrossTarget = .{};
const exe_c = b.addExecutable(.{
.name = "test_c",
.optimize = optimize,
.target = target,
});
- b.default_step.dependOn(&exe_c.step);
exe_c.addCSourceFile("test.c", &[0][]const u8{});
exe_c.linkLibC();
@@ -47,13 +44,13 @@ pub fn build(b: *std.Build) void {
else => {},
}
- if (isRunnableTarget(target)) {
- const run_c_cmd = exe_c.run();
- test_step.dependOn(&run_c_cmd.step);
- const run_cpp_cmd = exe_cpp.run();
- test_step.dependOn(&run_cpp_cmd.step);
- } else {
- test_step.dependOn(&exe_c.step);
- test_step.dependOn(&exe_cpp.step);
- }
+ const run_c_cmd = b.addRunArtifact(exe_c);
+ run_c_cmd.expectExitCode(0);
+ run_c_cmd.skip_foreign_checks = true;
+ test_step.dependOn(&run_c_cmd.step);
+
+ const run_cpp_cmd = b.addRunArtifact(exe_cpp);
+ run_cpp_cmd.expectExitCode(0);
+ run_cpp_cmd.skip_foreign_checks = true;
+ test_step.dependOn(&run_cpp_cmd.step);
}
diff --git a/test/standalone/dep_diamond/build.zig b/test/standalone/dep_diamond/build.zig
index b60f898f0b..12eda4ec5d 100644
--- a/test/standalone/dep_diamond/build.zig
+++ b/test/standalone/dep_diamond/build.zig
@@ -1,7 +1,10 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
const shared = b.createModule(.{
.source_file = .{ .path = "shared.zig" },
@@ -23,6 +26,5 @@ pub fn build(b: *std.Build) void {
const run = exe.run();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&run.step);
}
diff --git a/test/standalone/dep_mutually_recursive/build.zig b/test/standalone/dep_mutually_recursive/build.zig
index 0123646a9a..1a6bff8501 100644
--- a/test/standalone/dep_mutually_recursive/build.zig
+++ b/test/standalone/dep_mutually_recursive/build.zig
@@ -1,7 +1,10 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
const foo = b.createModule(.{
.source_file = .{ .path = "foo.zig" },
@@ -21,6 +24,5 @@ pub fn build(b: *std.Build) void {
const run = exe.run();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&run.step);
}
diff --git a/test/standalone/dep_recursive/build.zig b/test/standalone/dep_recursive/build.zig
index 32d546e283..35b9f3cc47 100644
--- a/test/standalone/dep_recursive/build.zig
+++ b/test/standalone/dep_recursive/build.zig
@@ -1,7 +1,10 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
const foo = b.createModule(.{
.source_file = .{ .path = "foo.zig" },
@@ -17,6 +20,5 @@ pub fn build(b: *std.Build) void {
const run = exe.run();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&run.step);
}
diff --git a/test/standalone/dep_shared_builtin/build.zig b/test/standalone/dep_shared_builtin/build.zig
index 6c029b654b..776794f95e 100644
--- a/test/standalone/dep_shared_builtin/build.zig
+++ b/test/standalone/dep_shared_builtin/build.zig
@@ -1,7 +1,10 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
const exe = b.addExecutable(.{
.name = "test",
@@ -14,6 +17,5 @@ pub fn build(b: *std.Build) void {
const run = exe.run();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&run.step);
}
diff --git a/test/standalone/dep_triangle/build.zig b/test/standalone/dep_triangle/build.zig
index f3b73aaf35..14163df84c 100644
--- a/test/standalone/dep_triangle/build.zig
+++ b/test/standalone/dep_triangle/build.zig
@@ -1,7 +1,10 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
const shared = b.createModule(.{
.source_file = .{ .path = "shared.zig" },
@@ -20,6 +23,5 @@ pub fn build(b: *std.Build) void {
const run = exe.run();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&run.step);
}
diff --git a/test/standalone/embed_generated_file/build.zig b/test/standalone/embed_generated_file/build.zig
index 3b17ff0b8f..af1ae0a00f 100644
--- a/test/standalone/embed_generated_file/build.zig
+++ b/test/standalone/embed_generated_file/build.zig
@@ -1,8 +1,8 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const target = b.standardTargetOptions(.{});
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
const bootloader = b.addExecutable(.{
.name = "bootloader",
@@ -16,13 +16,11 @@ pub fn build(b: *std.Build) void {
const exe = b.addTest(.{
.root_source_file = .{ .path = "main.zig" },
- .target = target,
- .optimize = optimize,
+ .optimize = .Debug,
});
exe.addAnonymousModule("bootloader.elf", .{
.source_file = bootloader.getOutputSource(),
});
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&exe.step);
}
diff --git a/test/standalone/emit_asm_and_bin/build.zig b/test/standalone/emit_asm_and_bin/build.zig
index 5345f0f538..9bdfadc33d 100644
--- a/test/standalone/emit_asm_and_bin/build.zig
+++ b/test/standalone/emit_asm_and_bin/build.zig
@@ -1,6 +1,9 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
const main = b.addTest(.{
.root_source_file = .{ .path = "main.zig" },
.optimize = b.standardOptimizeOption(.{}),
@@ -8,6 +11,5 @@ pub fn build(b: *std.Build) void {
main.emit_asm = .{ .emit_to = b.pathFromRoot("main.s") };
main.emit_bin = .{ .emit_to = b.pathFromRoot("main") };
- const test_step = b.step("test", "Run test");
test_step.dependOn(&main.step);
}
diff --git a/test/standalone/empty_env/build.zig b/test/standalone/empty_env/build.zig
index c4b4846141..27ec75be22 100644
--- a/test/standalone/empty_env/build.zig
+++ b/test/standalone/empty_env/build.zig
@@ -1,15 +1,25 @@
const std = @import("std");
+const builtin = @import("builtin");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+
+ if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64) {
+ // https://github.com/ziglang/zig/issues/13685
+ return;
+ }
+
const main = b.addExecutable(.{
.name = "main",
.root_source_file = .{ .path = "main.zig" },
- .optimize = b.standardOptimizeOption(.{}),
+ .optimize = optimize,
});
- const run = main.run();
+ const run = b.addRunArtifact(main);
run.clearEnvironment();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&run.step);
}
diff --git a/test/standalone/global_linkage/build.zig b/test/standalone/global_linkage/build.zig
index 9f79c80fcf..2cf1b248a5 100644
--- a/test/standalone/global_linkage/build.zig
+++ b/test/standalone/global_linkage/build.zig
@@ -1,20 +1,24 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test the program");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{};
const obj1 = b.addStaticLibrary(.{
.name = "obj1",
.root_source_file = .{ .path = "obj1.zig" },
.optimize = optimize,
- .target = .{},
+ .target = target,
});
const obj2 = b.addStaticLibrary(.{
.name = "obj2",
.root_source_file = .{ .path = "obj2.zig" },
.optimize = optimize,
- .target = .{},
+ .target = target,
});
const main = b.addTest(.{
@@ -24,6 +28,5 @@ pub fn build(b: *std.Build) void {
main.linkLibrary(obj1);
main.linkLibrary(obj2);
- const test_step = b.step("test", "Test it");
test_step.dependOn(&main.step);
}
diff --git a/test/standalone/install_raw_hex/build.zig b/test/standalone/install_raw_hex/build.zig
index 6ed515e381..b34bb01378 100644
--- a/test/standalone/install_raw_hex/build.zig
+++ b/test/standalone/install_raw_hex/build.zig
@@ -3,8 +3,8 @@ const std = @import("std");
const CheckFileStep = std.Build.CheckFileStep;
pub fn build(b: *std.Build) void {
- const test_step = b.step("test", "Test the program");
- b.default_step.dependOn(test_step);
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
const target = .{
.cpu_arch = .thumb,
@@ -13,7 +13,7 @@ pub fn build(b: *std.Build) void {
.abi = .gnueabihf,
};
- const optimize = b.standardOptimizeOption(.{});
+ const optimize: std.builtin.OptimizeMode = .Debug;
const elf = b.addExecutable(.{
.name = "zig-nrf52-blink.elf",
diff --git a/test/standalone/issue_11595/build.zig b/test/standalone/issue_11595/build.zig
index c335fb73da..7d9530c690 100644
--- a/test/standalone/issue_11595/build.zig
+++ b/test/standalone/issue_11595/build.zig
@@ -1,18 +1,17 @@
const std = @import("std");
const builtin = @import("builtin");
-const CrossTarget = std.zig.CrossTarget;
-// TODO integrate this with the std.Build executor API
-fn isRunnableTarget(t: CrossTarget) bool {
- if (t.isNative()) return true;
+pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
- return (t.getOsTag() == builtin.os.tag and
- t.getCpuArch() == builtin.cpu.arch);
-}
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{};
-pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
- const target = b.standardTargetOptions(.{});
+ if (builtin.os.tag == .windows) {
+ // https://github.com/ziglang/zig/issues/12419
+ return;
+ }
const exe = b.addExecutable(.{
.name = "zigtest",
@@ -44,11 +43,9 @@ pub fn build(b: *std.Build) void {
b.default_step.dependOn(&exe.step);
- const test_step = b.step("test", "Test the program");
- if (isRunnableTarget(target)) {
- const run_cmd = exe.run();
- test_step.dependOn(&run_cmd.step);
- } else {
- test_step.dependOn(&exe.step);
- }
+ const run_cmd = b.addRunArtifact(exe);
+ run_cmd.skip_foreign_checks = true;
+ run_cmd.expectExitCode(0);
+
+ test_step.dependOn(&run_cmd.step);
}
diff --git a/test/standalone/issue_12588/build.zig b/test/standalone/issue_12588/build.zig
index 9f14c53e38..fa22252fcc 100644
--- a/test/standalone/issue_12588/build.zig
+++ b/test/standalone/issue_12588/build.zig
@@ -1,8 +1,11 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
- const target = b.standardTargetOptions(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{};
const obj = b.addObject(.{
.name = "main",
@@ -15,6 +18,5 @@ pub fn build(b: *std.Build) void {
obj.emit_bin = .no_emit;
b.default_step.dependOn(&obj.step);
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&obj.step);
}
diff --git a/test/standalone/issue_12706/build.zig b/test/standalone/issue_12706/build.zig
index 9d616477a2..04eb826b44 100644
--- a/test/standalone/issue_12706/build.zig
+++ b/test/standalone/issue_12706/build.zig
@@ -2,17 +2,12 @@ const std = @import("std");
const builtin = @import("builtin");
const CrossTarget = std.zig.CrossTarget;
-// TODO integrate this with the std.Build executor API
-fn isRunnableTarget(t: CrossTarget) bool {
- if (t.isNative()) return true;
-
- return (t.getOsTag() == builtin.os.tag and
- t.getCpuArch() == builtin.cpu.arch);
-}
-
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
- const target = b.standardTargetOptions(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{};
const exe = b.addExecutable(.{
.name = "main",
@@ -20,22 +15,15 @@ pub fn build(b: *std.Build) void {
.optimize = optimize,
.target = target,
});
- exe.install();
const c_sources = [_][]const u8{
"test.c",
};
-
exe.addCSourceFiles(&c_sources, &.{});
exe.linkLibC();
- b.default_step.dependOn(&exe.step);
-
- const test_step = b.step("test", "Test the program");
- if (isRunnableTarget(target)) {
- const run_cmd = exe.run();
- test_step.dependOn(&run_cmd.step);
- } else {
- test_step.dependOn(&exe.step);
- }
+ const run_cmd = b.addRunArtifact(exe);
+ run_cmd.expectExitCode(0);
+ run_cmd.skip_foreign_checks = true;
+ test_step.dependOn(&run_cmd.step);
}
diff --git a/test/standalone/issue_13030/build.zig b/test/standalone/issue_13030/build.zig
index 258d9b7db8..e31863fee2 100644
--- a/test/standalone/issue_13030/build.zig
+++ b/test/standalone/issue_13030/build.zig
@@ -3,17 +3,22 @@ const builtin = @import("builtin");
const CrossTarget = std.zig.CrossTarget;
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
- const target = b.standardTargetOptions(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+ add(b, test_step, .Debug);
+ add(b, test_step, .ReleaseFast);
+ add(b, test_step, .ReleaseSmall);
+ add(b, test_step, .ReleaseSafe);
+}
+
+fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
const obj = b.addObject(.{
.name = "main",
.root_source_file = .{ .path = "main.zig" },
.optimize = optimize,
- .target = target,
+ .target = .{},
});
- b.default_step.dependOn(&obj.step);
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&obj.step);
}
diff --git a/test/standalone/issue_13970/build.zig b/test/standalone/issue_13970/build.zig
index f5e07d8903..bbaaac5886 100644
--- a/test/standalone/issue_13970/build.zig
+++ b/test/standalone/issue_13970/build.zig
@@ -1,6 +1,9 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
const test1 = b.addTest(.{
.root_source_file = .{ .path = "test_root/empty.zig" },
});
@@ -14,7 +17,6 @@ pub fn build(b: *std.Build) void {
test2.setTestRunner("src/main.zig");
test3.setTestRunner("src/main.zig");
- const test_step = b.step("test", "Test package path resolution of custom test runner");
test_step.dependOn(&test1.step);
test_step.dependOn(&test2.step);
test_step.dependOn(&test3.step);
diff --git a/test/standalone/issue_339/build.zig b/test/standalone/issue_339/build.zig
index 62ac128aab..f4215dbb8b 100644
--- a/test/standalone/issue_339/build.zig
+++ b/test/standalone/issue_339/build.zig
@@ -1,13 +1,18 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{};
+
const obj = b.addObject(.{
.name = "test",
.root_source_file = .{ .path = "test.zig" },
- .target = b.standardTargetOptions(.{}),
- .optimize = b.standardOptimizeOption(.{}),
+ .target = target,
+ .optimize = optimize,
});
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&obj.step);
}
diff --git a/test/standalone/issue_5825/build.zig b/test/standalone/issue_5825/build.zig
index 89272280d4..e8e8d48772 100644
--- a/test/standalone/issue_5825/build.zig
+++ b/test/standalone/issue_5825/build.zig
@@ -1,12 +1,15 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
const target = .{
.cpu_arch = .x86_64,
.os_tag = .windows,
.abi = .msvc,
};
- const optimize = b.standardOptimizeOption(.{});
+ const optimize: std.builtin.OptimizeMode = .Debug;
const obj = b.addObject(.{
.name = "issue_5825",
.root_source_file = .{ .path = "main.zig" },
@@ -24,6 +27,5 @@ pub fn build(b: *std.Build) void {
exe.linkSystemLibrary("ntdll");
exe.addObject(obj);
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&exe.step);
}
diff --git a/test/standalone/issue_7030/main.zig b/test/standalone/issue_7030.zig
index 8a4146e84a..8a4146e84a 100644
--- a/test/standalone/issue_7030/main.zig
+++ b/test/standalone/issue_7030.zig
diff --git a/test/standalone/issue_7030/build.zig b/test/standalone/issue_7030/build.zig
deleted file mode 100644
index dc535318cc..0000000000
--- a/test/standalone/issue_7030/build.zig
+++ /dev/null
@@ -1,17 +0,0 @@
-const std = @import("std");
-
-pub fn build(b: *std.Build) void {
- const exe = b.addExecutable(.{
- .name = "issue_7030",
- .root_source_file = .{ .path = "main.zig" },
- .target = .{
- .cpu_arch = .wasm32,
- .os_tag = .freestanding,
- },
- });
- exe.install();
- b.default_step.dependOn(&exe.step);
-
- const test_step = b.step("test", "Test the program");
- test_step.dependOn(&exe.step);
-}
diff --git a/test/standalone/issue_794/build.zig b/test/standalone/issue_794/build.zig
index 3089a28fd0..8527f4af2c 100644
--- a/test/standalone/issue_794/build.zig
+++ b/test/standalone/issue_794/build.zig
@@ -1,13 +1,13 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
const test_artifact = b.addTest(.{
.root_source_file = .{ .path = "main.zig" },
});
test_artifact.addIncludePath("a_directory");
- b.default_step.dependOn(&test_artifact.step);
-
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&test_artifact.step);
}
diff --git a/test/standalone/issue_8550/build.zig b/test/standalone/issue_8550/build.zig
index c3303d55db..8f7631e68f 100644
--- a/test/standalone/issue_8550/build.zig
+++ b/test/standalone/issue_8550/build.zig
@@ -1,6 +1,10 @@
const std = @import("std");
pub fn build(b: *std.Build) !void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
const target = std.zig.CrossTarget{
.os_tag = .freestanding,
.cpu_arch = .arm,
@@ -8,7 +12,7 @@ pub fn build(b: *std.Build) !void {
.explicit = &std.Target.arm.cpu.arm1176jz_s,
},
};
- const optimize = b.standardOptimizeOption(.{});
+
const kernel = b.addExecutable(.{
.name = "kernel",
.root_source_file = .{ .path = "./main.zig" },
@@ -19,6 +23,5 @@ pub fn build(b: *std.Build) !void {
kernel.setLinkerScriptPath(.{ .path = "./linker.ld" });
kernel.install();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&kernel.step);
}
diff --git a/test/standalone/issue_9812/build.zig b/test/standalone/issue_9812/build.zig
index 4ca55ce999..71104b903c 100644
--- a/test/standalone/issue_9812/build.zig
+++ b/test/standalone/issue_9812/build.zig
@@ -1,7 +1,11 @@
const std = @import("std");
pub fn build(b: *std.Build) !void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+
const zip_add = b.addTest(.{
.root_source_file = .{ .path = "main.zig" },
.optimize = optimize,
@@ -13,6 +17,5 @@ pub fn build(b: *std.Build) !void {
zip_add.addIncludePath("vendor/kuba-zip");
zip_add.linkLibC();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&zip_add.step);
}
diff --git a/test/standalone/load_dynamic_library/build.zig b/test/standalone/load_dynamic_library/build.zig
index 44fc37893c..06a5424a8d 100644
--- a/test/standalone/load_dynamic_library/build.zig
+++ b/test/standalone/load_dynamic_library/build.zig
@@ -1,8 +1,19 @@
const std = @import("std");
+const builtin = @import("builtin");
pub fn build(b: *std.Build) void {
- const target = b.standardTargetOptions(.{});
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{};
+
+ const ok = (builtin.os.tag != .wasi and
+ // https://github.com/ziglang/zig/issues/13550
+ (builtin.os.tag != .macos or builtin.cpu.arch != .aarch64) and
+ // https://github.com/ziglang/zig/issues/13686
+ (builtin.os.tag != .windows or builtin.cpu.arch != .aarch64));
+ if (!ok) return;
const lib = b.addSharedLibrary(.{
.name = "add",
@@ -19,9 +30,10 @@ pub fn build(b: *std.Build) void {
.target = target,
});
- const run = main.run();
+ const run = b.addRunArtifact(main);
run.addArtifactArg(lib);
+ run.skip_foreign_checks = true;
+ run.expectExitCode(0);
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&run.step);
}
diff --git a/test/standalone/load_dynamic_library/main.zig b/test/standalone/load_dynamic_library/main.zig
index baf47c23ad..b47ea8a81f 100644
--- a/test/standalone/load_dynamic_library/main.zig
+++ b/test/standalone/load_dynamic_library/main.zig
@@ -11,11 +11,7 @@ pub fn main() !void {
var lib = try std.DynLib.open(dynlib_name);
defer lib.close();
- const Add = switch (@import("builtin").zig_backend) {
- .stage1 => fn (i32, i32) callconv(.C) i32,
- else => *const fn (i32, i32) callconv(.C) i32,
- };
-
+ const Add = *const fn (i32, i32) callconv(.C) i32;
const addFn = lib.lookup(Add, "add") orelse return error.SymbolNotFound;
const result = addFn(12, 34);
diff --git a/test/standalone/main_pkg_path/build.zig b/test/standalone/main_pkg_path/build.zig
index f9919d5ab5..cd49573692 100644
--- a/test/standalone/main_pkg_path/build.zig
+++ b/test/standalone/main_pkg_path/build.zig
@@ -1,11 +1,13 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
const test_exe = b.addTest(.{
.root_source_file = .{ .path = "a/test.zig" },
});
test_exe.setMainPkgPath(".");
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&test_exe.step);
}
diff --git a/test/standalone/mix_c_files/build.zig b/test/standalone/mix_c_files/build.zig
index f2dfb2093f..0ea585e4e0 100644
--- a/test/standalone/mix_c_files/build.zig
+++ b/test/standalone/mix_c_files/build.zig
@@ -1,34 +1,28 @@
const std = @import("std");
-const builtin = @import("builtin");
-const CrossTarget = std.zig.CrossTarget;
-// TODO integrate this with the std.Build executor API
-fn isRunnableTarget(t: CrossTarget) bool {
- if (t.isNative()) return true;
+pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
- return (t.getOsTag() == builtin.os.tag and
- t.getCpuArch() == builtin.cpu.arch);
+ add(b, test_step, .Debug);
+ add(b, test_step, .ReleaseFast);
+ add(b, test_step, .ReleaseSmall);
+ add(b, test_step, .ReleaseSafe);
}
-pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
- const target = b.standardTargetOptions(.{});
-
+fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
const exe = b.addExecutable(.{
.name = "test",
.root_source_file = .{ .path = "main.zig" },
.optimize = optimize,
- .target = target,
});
exe.addCSourceFile("test.c", &[_][]const u8{"-std=c11"});
exe.linkLibC();
b.default_step.dependOn(&exe.step);
- const test_step = b.step("test", "Test the program");
- if (isRunnableTarget(target)) {
- const run_cmd = exe.run();
- test_step.dependOn(&run_cmd.step);
- } else {
- test_step.dependOn(&exe.step);
- }
+ const run_cmd = b.addRunArtifact(exe);
+ run_cmd.skip_foreign_checks = true;
+ run_cmd.expectExitCode(0);
+
+ test_step.dependOn(&run_cmd.step);
}
diff --git a/test/standalone/mix_o_files/build.zig b/test/standalone/mix_o_files/build.zig
index 2708343aa5..17ce55a8aa 100644
--- a/test/standalone/mix_o_files/build.zig
+++ b/test/standalone/mix_o_files/build.zig
@@ -1,18 +1,23 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{};
const obj = b.addObject(.{
.name = "base64",
.root_source_file = .{ .path = "base64.zig" },
.optimize = optimize,
- .target = .{},
+ .target = target,
});
const exe = b.addExecutable(.{
.name = "test",
.optimize = optimize,
+ .target = target,
});
exe.addCSourceFile("test.c", &[_][]const u8{"-std=c99"});
exe.addObject(obj);
@@ -22,6 +27,5 @@ pub fn build(b: *std.Build) void {
const run_cmd = exe.run();
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&run_cmd.step);
}
diff --git a/test/standalone/pie/build.zig b/test/standalone/pie/build.zig
index d51ea27328..615111b6c2 100644
--- a/test/standalone/pie/build.zig
+++ b/test/standalone/pie/build.zig
@@ -1,14 +1,21 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{
+ .os_tag = .linux,
+ .cpu_arch = .x86_64,
+ };
+
const main = b.addTest(.{
.root_source_file = .{ .path = "main.zig" },
- .optimize = b.standardOptimizeOption(.{}),
+ .optimize = optimize,
+ .target = target,
});
main.pie = true;
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&main.step);
-
- b.default_step.dependOn(test_step);
}
diff --git a/test/standalone/pkg_import/build.zig b/test/standalone/pkg_import/build.zig
index 5ea6c90af7..42799ab896 100644
--- a/test/standalone/pkg_import/build.zig
+++ b/test/standalone/pkg_import/build.zig
@@ -1,7 +1,10 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
const exe = b.addExecutable(.{
.name = "test",
@@ -12,6 +15,5 @@ pub fn build(b: *std.Build) void {
const run = exe.run();
- const test_step = b.step("test", "Test it");
test_step.dependOn(&run.step);
}
diff --git a/test/standalone/shared_library/build.zig b/test/standalone/shared_library/build.zig
index 91f7c8a06a..63370af0cc 100644
--- a/test/standalone/shared_library/build.zig
+++ b/test/standalone/shared_library/build.zig
@@ -1,8 +1,11 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
- const target = b.standardTargetOptions(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{};
const lib = b.addSharedLibrary(.{
.name = "mathtest",
.root_source_file = .{ .path = "mathtest.zig" },
@@ -20,10 +23,7 @@ pub fn build(b: *std.Build) void {
exe.linkLibrary(lib);
exe.linkSystemLibrary("c");
- b.default_step.dependOn(&exe.step);
-
const run_cmd = exe.run();
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&run_cmd.step);
}
diff --git a/test/standalone/sigpipe/build.zig b/test/standalone/sigpipe/build.zig
index 400f1a970d..6f50a86d68 100644
--- a/test/standalone/sigpipe/build.zig
+++ b/test/standalone/sigpipe/build.zig
@@ -2,7 +2,16 @@ const std = @import("std");
const os = std.os;
pub fn build(b: *std.build.Builder) !void {
- const test_step = b.step("test", "Run the tests");
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ // TODO signal handling code has no business being in a build script.
+ // this logic needs to move to a file called parent.zig which is
+ // added as an executable.
+
+ //if (!std.os.have_sigpipe_support) {
+ // return;
+ //}
// This test runs "breakpipe" as a child process and that process
// depends on inheriting a SIGPIPE disposition of "default".
diff --git a/test/standalone/static_c_lib/build.zig b/test/standalone/static_c_lib/build.zig
index 9937888843..5996c978d8 100644
--- a/test/standalone/static_c_lib/build.zig
+++ b/test/standalone/static_c_lib/build.zig
@@ -1,7 +1,10 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
const foo = b.addStaticLibrary(.{
.name = "foo",
@@ -18,6 +21,5 @@ pub fn build(b: *std.Build) void {
test_exe.linkLibrary(foo);
test_exe.addIncludePath(".");
- const test_step = b.step("test", "Test it");
test_step.dependOn(&test_exe.step);
}
diff --git a/test/standalone/test_runner_path/build.zig b/test/standalone/test_runner_path/build.zig
index f073c55d4a..40aad42b21 100644
--- a/test/standalone/test_runner_path/build.zig
+++ b/test/standalone/test_runner_path/build.zig
@@ -1,6 +1,11 @@
const std = @import("std");
+pub const requires_stage2 = true;
+
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test the program");
+ b.default_step = test_step;
+
const test_exe = b.addTest(.{
.root_source_file = .{ .path = "test.zig" },
.kind = .test_exe,
@@ -9,6 +14,5 @@ pub fn build(b: *std.Build) void {
const test_run = test_exe.run();
- const test_step = b.step("test", "Test the program");
test_step.dependOn(&test_run.step);
}
diff --git a/test/standalone/test_runner_path/test_runner.zig b/test/standalone/test_runner_path/test_runner.zig
index f49ff55cae..2139ea8f68 100644
--- a/test/standalone/test_runner_path/test_runner.zig
+++ b/test/standalone/test_runner_path/test_runner.zig
@@ -1,51 +1,19 @@
const std = @import("std");
-const io = std.io;
const builtin = @import("builtin");
-pub const io_mode: io.Mode = builtin.test_io_mode;
-
pub fn main() void {
- const test_fn_list = builtin.test_functions;
var ok_count: usize = 0;
var skip_count: usize = 0;
var fail_count: usize = 0;
- var async_frame_buffer: []align(std.Target.stack_align) u8 = undefined;
- // TODO this is on the next line (using `undefined` above) because otherwise zig incorrectly
- // ignores the alignment of the slice.
- async_frame_buffer = &[_]u8{};
-
- for (test_fn_list) |test_fn| {
- const result = if (test_fn.async_frame_size) |size| switch (io_mode) {
- .evented => blk: {
- if (async_frame_buffer.len < size) {
- std.heap.page_allocator.free(async_frame_buffer);
- async_frame_buffer = std.heap.page_allocator.alignedAlloc(u8, std.Target.stack_align, size) catch @panic("out of memory");
- }
- const casted_fn = @ptrCast(fn () callconv(.Async) anyerror!void, test_fn.func);
- break :blk await @asyncCall(async_frame_buffer, {}, casted_fn, .{});
- },
- .blocking => {
- skip_count += 1;
- continue;
- },
- } else test_fn.func();
- if (result) |_| {
+ for (builtin.test_functions) |test_fn| {
+ if (test_fn.func()) |_| {
ok_count += 1;
} else |err| switch (err) {
- error.SkipZigTest => {
- skip_count += 1;
- },
- else => {
- fail_count += 1;
- },
+ error.SkipZigTest => skip_count += 1,
+ else => fail_count += 1,
}
}
- if (ok_count == test_fn_list.len) {
- std.debug.print("All {d} tests passed.\n", .{ok_count});
- } else {
- std.debug.print("{d} passed; {d} skipped; {d} failed.\n", .{ ok_count, skip_count, fail_count });
- }
if (ok_count != 1 or skip_count != 1 or fail_count != 1) {
std.process.exit(1);
}
diff --git a/test/standalone/use_alias/build.zig b/test/standalone/use_alias/build.zig
index 89e07efb22..947db0828d 100644
--- a/test/standalone/use_alias/build.zig
+++ b/test/standalone/use_alias/build.zig
@@ -1,12 +1,16 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+
const main = b.addTest(.{
.root_source_file = .{ .path = "main.zig" },
- .optimize = b.standardOptimizeOption(.{}),
+ .optimize = optimize,
});
main.addIncludePath(".");
- const test_step = b.step("test", "Test it");
test_step.dependOn(&main.step);
}
diff --git a/test/standalone/windows_spawn/build.zig b/test/standalone/windows_spawn/build.zig
index 3ebde5a50c..8cc6e18599 100644
--- a/test/standalone/windows_spawn/build.zig
+++ b/test/standalone/windows_spawn/build.zig
@@ -1,23 +1,34 @@
const std = @import("std");
+const builtin = @import("builtin");
pub fn build(b: *std.Build) void {
- const optimize = b.standardOptimizeOption(.{});
+ const test_step = b.step("test", "Test it");
+ b.default_step = test_step;
+
+ const optimize: std.builtin.OptimizeMode = .Debug;
+ const target: std.zig.CrossTarget = .{
+ .os_tag = .windows,
+ .cpu_arch = .x86_64,
+ };
const hello = b.addExecutable(.{
.name = "hello",
.root_source_file = .{ .path = "hello.zig" },
.optimize = optimize,
+ .target = target,
});
const main = b.addExecutable(.{
.name = "main",
.root_source_file = .{ .path = "main.zig" },
.optimize = optimize,
+ .target = target,
});
- const run = main.run();
+ const run = b.addRunArtifact(main);
run.addArtifactArg(hello);
+ run.expectExitCode(0);
+ run.skip_foreign_checks = true;
- const test_step = b.step("test", "Test it");
test_step.dependOn(&run.step);
}
diff --git a/test/tests.zig b/test/tests.zig
index 038111136a..2cd06b18b9 100644
--- a/test/tests.zig
+++ b/test/tests.zig
@@ -560,34 +560,62 @@ pub fn addStackTraceTests(
pub fn addStandaloneTests(
b: *std.Build,
- test_filter: ?[]const u8,
optimize_modes: []const OptimizeMode,
- skip_non_native: bool,
enable_macos_sdk: bool,
omit_stage2: bool,
enable_symlinks_windows: bool,
) *Step {
const step = b.step("test-standalone", "Run the standalone tests");
-
- _ = test_filter;
- _ = skip_non_native;
- _ = enable_macos_sdk;
- _ = omit_stage2;
- _ = enable_symlinks_windows;
+ const omit_symlinks = builtin.os.tag == .windows and !enable_symlinks_windows;
for (standalone.simple_cases) |case| {
for (optimize_modes) |optimize| {
if (!case.all_modes and optimize != .Debug) continue;
- const exe = b.addExecutable(.{
- .name = std.fs.path.stem(case.src_path),
- .root_source_file = .{ .path = case.src_path },
- .optimize = optimize,
- .target = case.target,
- });
- if (case.link_libc) exe.linkLibC();
+ if (case.is_exe) {
+ const exe = b.addExecutable(.{
+ .name = std.fs.path.stem(case.src_path),
+ .root_source_file = .{ .path = case.src_path },
+ .optimize = optimize,
+ .target = case.target,
+ });
+ if (case.link_libc) exe.linkLibC();
+
+ step.dependOn(&exe.step);
+ }
- step.dependOn(&exe.step);
+ if (case.is_test) {
+ const exe = b.addTest(.{
+ .name = std.fs.path.stem(case.src_path),
+ .root_source_file = .{ .path = case.src_path },
+ .optimize = optimize,
+ .target = case.target,
+ });
+ if (case.link_libc) exe.linkLibC();
+
+ step.dependOn(&exe.step);
+ }
+ }
+ }
+
+ inline for (standalone.build_cases) |case| {
+ const requires_stage2 = @hasDecl(case.import, "requires_stage2") and
+ case.import.requires_stage2;
+ const requires_symlinks = @hasDecl(case.import, "requires_symlinks") and
+ case.import.requires_symlinks;
+ const requires_macos_sdk = @hasDecl(case.import, "requires_macos_sdk") and
+ case.import.requires_macos_sdk;
+ const bad =
+ (requires_stage2 and omit_stage2) or
+ (requires_symlinks and omit_symlinks) or
+ (requires_macos_sdk and !enable_macos_sdk);
+ if (!bad) {
+ const dep = b.anonymousDependency(case.build_root, case.import, .{});
+ const dep_step = dep.builder.default_step;
+ assert(mem.startsWith(u8, dep.builder.dep_prefix, "test."));
+ const dep_prefix_adjusted = dep.builder.dep_prefix["test.".len..];
+ dep_step.name = b.fmt("{s}{s}", .{ dep_prefix_adjusted, dep_step.name });
+ step.dependOn(dep_step);
}
}
@@ -603,19 +631,19 @@ pub fn addLinkTests(
const step = b.step("test-link", "Run the linker tests");
const omit_symlinks = builtin.os.tag == .windows and !enable_symlinks_windows;
- inline for (link.cases) |link_test| {
- const requires_stage2 = @hasDecl(link_test.import, "requires_stage2") and
- link_test.import.requires_stage2;
- const requires_symlinks = @hasDecl(link_test.import, "requires_symlinks") and
- link_test.import.requires_symlinks;
- const requires_macos_sdk = @hasDecl(link_test.import, "requires_macos_sdk") and
- link_test.import.requires_macos_sdk;
+ inline for (link.cases) |case| {
+ const requires_stage2 = @hasDecl(case.import, "requires_stage2") and
+ case.import.requires_stage2;
+ const requires_symlinks = @hasDecl(case.import, "requires_symlinks") and
+ case.import.requires_symlinks;
+ const requires_macos_sdk = @hasDecl(case.import, "requires_macos_sdk") and
+ case.import.requires_macos_sdk;
const bad =
(requires_stage2 and omit_stage2) or
(requires_symlinks and omit_symlinks) or
(requires_macos_sdk and !enable_macos_sdk);
if (!bad) {
- const dep = b.anonymousDependency(link_test.build_root, link_test.import, .{});
+ const dep = b.anonymousDependency(case.build_root, case.import, .{});
const dep_step = dep.builder.default_step;
assert(mem.startsWith(u8, dep.builder.dep_prefix, "test."));
const dep_prefix_adjusted = dep.builder.dep_prefix["test.".len..];
@@ -627,9 +655,7 @@ pub fn addLinkTests(
return step;
}
-pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []const OptimizeMode) *Step {
- _ = test_filter;
- _ = optimize_modes;
+pub fn addCliTests(b: *std.Build) *Step {
const step = b.step("test-cli", "Test the command line interface");
{
@@ -815,6 +841,19 @@ pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []co
step.dependOn(&cleanup.step);
}
+ {
+ // TODO this should move to become a CLI test rather than standalone
+ // cases.addBuildFile("test/standalone/options/build.zig", .{
+ // .extra_argv = &.{
+ // "-Dbool_true",
+ // "-Dbool_false=false",
+ // "-Dint=1234",
+ // "-De=two",
+ // "-Dstring=hello",
+ // },
+ // });
+ }
+
return step;
}