From 79837d51123460e4f0a04ba523d01b10f7c314cd Mon Sep 17 00:00:00 2001 From: Pavel Verigo Date: Mon, 31 Aug 2026 21:12:09 +0200 Subject: [PATCH] incr-check: update timestamp on each update --- test/incremental/add_decl | 1 - test/incremental/add_decl_namespaced | 2 -- test/incremental/change_enum_tag_type | 1 - tools/incr-check.zig | 20 +++++++++++++------- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/test/incremental/add_decl b/test/incremental/add_decl index e280a1f49ccd161c821ce869e7922c125aa8f903..50d961da7b88f00b78b2895ebfeae18e76219d6a 100644 --- a/test/incremental/add_decl +++ b/test/incremental/add_decl @@ -1,4 +1,3 @@ -#skip_target=x86_64-linux-selfhosted #update=initial version #file=main.zig const std = @import("std"); diff --git a/test/incremental/add_decl_namespaced b/test/incremental/add_decl_namespaced index 8ac1bb8021a8f23d1e6f2b4f52e3af0d58fb767c..e1fa74a3ad7ecd6bb70b481f73d6db0702c27d22 100644 --- a/test/incremental/add_decl_namespaced +++ b/test/incremental/add_decl_namespaced @@ -1,5 +1,3 @@ -#skip_target=wasm32-wasi-selfhosted -#skip_target=x86_64-linux-selfhosted #update=initial version #file=main.zig const std = @import("std"); diff --git a/test/incremental/change_enum_tag_type b/test/incremental/change_enum_tag_type index c329a1e71cc57aeb735b2874b0a31dfcaaa2d562..6ff8a1424d0c695145e7e136b9989c7413fda5a2 100644 --- a/test/incremental/change_enum_tag_type +++ b/test/incremental/change_enum_tag_type @@ -1,4 +1,3 @@ -#skip_target=wasm32-wasi-selfhosted #update=initial version #file=main.zig const Tag = u2; diff --git a/tools/incr-check.zig b/tools/incr-check.zig index 9b7dbf8aa323c21c3aa4254f48dd4331be9bfb83..49a2fae873d33b40a9eaf573fda416f6085840eb 100644 --- a/tools/incr-check.zig +++ b/tools/incr-check.zig @@ -241,6 +241,7 @@ pub fn main(init: std.process.Init) !void { multi_reader.init(gpa, io, multi_reader_buffer.toStreams(), &.{ child.stdout.?, child.stderr.? }); defer multi_reader.deinit(); + var update_mtime = Io.Clock.real.now(io); for (case.updates) |update| { var update_prog_node = updates_prog_node.start(update.name, 0); defer update_prog_node.end(); @@ -253,7 +254,8 @@ pub fn main(init: std.process.Init) !void { log_cur_update = &update; defer log_cur_update = null; - eval.write(update); + eval.write(update, update_mtime); + update_mtime = update_mtime.addDuration(.fromSeconds(5)); try eval.requestUpdate(); try eval.check(&multi_reader, update, update_prog_node); } @@ -286,14 +288,18 @@ const Eval = struct { enable_darling: bool, /// Currently this function assumes the previous updates have already been written. - fn write(eval: *Eval, update: Case.Update) void { + fn write(eval: *Eval, update: Case.Update, mtime: Io.Timestamp) void { const io = eval.io; for (update.changes) |full_contents| { - eval.tmp_dir.writeFile(io, .{ - .sub_path = full_contents.name, - .data = full_contents.bytes, - }) catch |err| { - eval.fatal("failed to update '{s}': {t}", .{ full_contents.name, err }); + var update_file = eval.tmp_dir.createFile(io, full_contents.name, .{}) catch |err| { + eval.fatal("failed to create update '{s}': {t}", .{ full_contents.name, err }); + }; + defer update_file.close(io); + update_file.writeStreamingAll(io, full_contents.bytes) catch |err| { + eval.fatal("failed to write update '{s}': {t}", .{ full_contents.name, err }); + }; + update_file.setTimestamps(io, .{ .modify_timestamp = .{ .new = mtime } }) catch |err| { + eval.fatal("failed to set mtime for '{s}': {t}", .{ full_contents.name, err }); }; } for (update.deletes) |doomed_name| { -- 2.54.0