authorgravatar for carl@astholm.seCarl Åstholm <carl@astholm.se> 2024-11-06 22:30:46+01:00
committergravatar for ian@ianjohnson.devIan Johnson <ian@ianjohnson.dev> 2024-12-13 08:49:02-05:00
logb352595aa2ede0c2fd53094da4123aac031335ec
treeaa94a2af3250a50ddf169a8e2c1da0e11f34f730
parent82f35c51866826fb71eb6f27d9210bb738d602e9

Add compiler internals tests

There are several test decls inside `/src` that are not currently being tested and have bitrotted as a result. This commit revives those tests and adds the `test-compiler-internals` set of tests which tests everything reachable from `/src/main.zig`.

6 files changed, 29 insertions(+), 31 deletions(-)

build.zig+15-26
......@@ -381,32 +381,6 @@ pub fn build(b: *std.Build) !void {
381381 const test_target_filters = b.option([]const []const u8, "test-target-filter", "Skip tests whose target triple do not match any filter") orelse &[0][]const u8{};
382382 const test_slow_targets = b.option(bool, "test-slow-targets", "Enable running module tests for targets that have a slow compiler backend") orelse false;
383383
384 const test_cases_options = b.addOptions();
385
386 test_cases_options.addOption(bool, "enable_tracy", false);
387 test_cases_options.addOption(bool, "enable_debug_extensions", enable_debug_extensions);
388 test_cases_options.addOption(bool, "enable_logging", enable_logging);
389 test_cases_options.addOption(bool, "enable_link_snapshots", enable_link_snapshots);
390 test_cases_options.addOption(bool, "skip_non_native", skip_non_native);
391 test_cases_options.addOption(bool, "have_llvm", enable_llvm);
392 test_cases_options.addOption(bool, "llvm_has_m68k", llvm_has_m68k);
393 test_cases_options.addOption(bool, "llvm_has_csky", llvm_has_csky);
394 test_cases_options.addOption(bool, "llvm_has_arc", llvm_has_arc);
395 test_cases_options.addOption(bool, "llvm_has_xtensa", llvm_has_xtensa);
396 test_cases_options.addOption(bool, "force_gpa", force_gpa);
397 test_cases_options.addOption(bool, "enable_qemu", b.enable_qemu);
398 test_cases_options.addOption(bool, "enable_wine", b.enable_wine);
399 test_cases_options.addOption(bool, "enable_wasmtime", b.enable_wasmtime);
400 test_cases_options.addOption(bool, "enable_rosetta", b.enable_rosetta);
401 test_cases_options.addOption(bool, "enable_darling", b.enable_darling);
402 test_cases_options.addOption(u32, "mem_leak_frames", mem_leak_frames * 2);
403 test_cases_options.addOption(bool, "value_tracing", value_tracing);
404 test_cases_options.addOption(?[]const u8, "glibc_runtimes_dir", b.glibc_runtimes_dir);
405 test_cases_options.addOption([:0]const u8, "version", version);
406 test_cases_options.addOption(std.SemanticVersion, "semver", semver);
407 test_cases_options.addOption([]const []const u8, "test_filters", test_filters);
408 test_cases_options.addOption(DevEnv, "dev", if (only_c) .bootstrap else .core);
409
410384 var chosen_opt_modes_buf: [4]builtin.OptimizeMode = undefined;
411385 var chosen_mode_index: usize = 0;
412386 if (!skip_debug) {
......@@ -533,6 +507,21 @@ pub fn build(b: *std.Build) !void {
533507 .max_rss = 5029889638,
534508 }));
535509
510 test_modules_step.dependOn(tests.addModuleTests(b, .{
511 .test_filters = test_filters,
512 .test_target_filters = test_target_filters,
513 .test_slow_targets = test_slow_targets,
514 .root_src = "src/main.zig",
515 .name = "compiler-internals",
516 .desc = "Run the compiler internals tests",
517 .optimize_modes = optimization_modes,
518 .include_paths = &.{},
519 .skip_single_threaded = skip_single_threaded,
520 .skip_non_native = true,
521 .skip_libc = skip_libc,
522 .build_options = exe_options,
523 }));
524
536525 test_step.dependOn(test_modules_step);
537526
538527 test_step.dependOn(tests.addCompareOutputTests(b, test_filters, optimization_modes));
src/InternPool.zig+1
......@@ -9822,6 +9822,7 @@ test "basic usage" {
98229822 const gpa = std.testing.allocator;
98239823
98249824 var ip: InternPool = .empty;
9825 try ip.init(gpa, 1);
98259826 defer ip.deinit(gpa);
98269827
98279828 const i32_type = try ip.get(gpa, .main, .{ .int_type = .{
src/Package/Fetch.zig+4-4
......@@ -2244,7 +2244,6 @@ const TestFetchBuilder = struct {
22442244 thread_pool: ThreadPool,
22452245 http_client: std.http.Client,
22462246 global_cache_directory: Cache.Directory,
2247 progress: std.Progress,
22482247 job_queue: Fetch.JobQueue,
22492248 fetch: Fetch,
22502249
......@@ -2260,8 +2259,6 @@ const TestFetchBuilder = struct {
22602259 self.http_client = .{ .allocator = allocator };
22612260 self.global_cache_directory = .{ .handle = cache_dir, .path = null };
22622261
2263 self.progress = .{ .dont_print_on_dumb = true };
2264
22652262 self.job_queue = .{
22662263 .http_client = &self.http_client,
22672264 .thread_pool = &self.thread_pool,
......@@ -2281,10 +2278,11 @@ const TestFetchBuilder = struct {
22812278 .lazy_status = .eager,
22822279 .parent_package_root = Cache.Path{ .root_dir = Cache.Directory{ .handle = cache_dir, .path = null } },
22832280 .parent_manifest_ast = null,
2284 .prog_node = self.progress.start("Fetch", 0),
2281 .prog_node = std.Progress.Node.none,
22852282 .job_queue = &self.job_queue,
22862283 .omit_missing_hash_error = true,
22872284 .allow_missing_paths_field = false,
2285 .use_latest_commit = true,
22882286
22892287 .package_root = undefined,
22902288 .error_bundle = undefined,
......@@ -2293,6 +2291,8 @@ const TestFetchBuilder = struct {
22932291 .actual_hash = undefined,
22942292 .has_build_zig = false,
22952293 .oom_flag = false,
2294 .latest_commit = null,
2295
22962296 .module = null,
22972297 };
22982298 return &self.fetch;
src/link/MachO/dyld_info/Rebase.zig+1-1
......@@ -281,7 +281,7 @@ test "rebase - no entries" {
281281 defer rebase.deinit(gpa);
282282
283283 try rebase.finalize(gpa);
284 try testing.expectEqual(@as(u64, 0), rebase.size());
284 try testing.expectEqual(0, rebase.buffer.items.len);
285285}
286286
287287test "rebase - single entry" {
src/main.zig+4
......@@ -34,6 +34,10 @@ const Zcu = @import("Zcu.zig");
3434const mingw = @import("mingw.zig");
3535const dev = @import("dev.zig");
3636
37test {
38 _ = Package;
39}
40
3741pub const std_options: std.Options = .{
3842 .wasiCwd = wasi_cwd,
3943 .logFn = log,
test/tests.zig+4
......@@ -1303,6 +1303,7 @@ const ModuleTestOptions = struct {
13031303 skip_libc: bool,
13041304 max_rss: usize = 0,
13051305 no_builtin: bool = false,
1306 build_options: ?*std.Build.Step.Options = null,
13061307};
13071308
13081309pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step {
......@@ -1392,6 +1393,9 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step {
13921393 .strip = test_target.strip,
13931394 });
13941395 if (options.no_builtin) these_tests.no_builtin = true;
1396 if (options.build_options) |build_options| {
1397 these_tests.root_module.addOptions("build_options", build_options);
1398 }
13951399 const single_threaded_suffix = if (test_target.single_threaded == true) "-single" else "";
13961400 const backend_suffix = if (test_target.use_llvm == true)
13971401 "-llvm"