╭ changed ────────╮ │src/test/undo.zig│ ╰─────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │62 const aa = arena.allocator(); │ │63 const base = try temp.dir.realPathFileAlloc(io, ".", aa); │ │64 const admin_path = try std.fs.path.join(aa, &.{ base, "admin" }); │ │65 - const repos_dir = try std.fs.path.join(aa, &.{ base, "repos" }); │ │65 + const users_dir = try std.fs.path.join(aa, &.{ base, "users" }); │ │66 var admin = try xit.repo.Repo(.xit, evt.admin_repo_opts).init(io, allocator, .{ .path = admin_path });│ │67 defer admin.deinit(io, allocator); │ │68 const owner = [_]u8{1} ** evt.event_id_size; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │78 .{ .id = std.fmt.bytesToHex(reader, .lower), .author = author, .event = .{ .user = .{ .name = "reader", .email = "reader@example.test", .password_hash = "unused" } } }, │ │79 }; │ │80 try evt.consume(.server, .admin, .xit, evt.admin_repo_opts, io, allocator, &admin, evt.events_ref, &seed); │ │81 - var user_repo = try evt.initUserRepo(io, allocator, try evt.userRepoPath(aa, repos_dir, &owner)); │ │81 + var user_repo = try evt.initUserRepo(io, allocator, try evt.userRepoPath(aa, users_dir, &owner)); │ │82 defer user_repo.deinit(io, allocator); │ │83 try evt.consume(.server, .user, .xit, evt.user_repo_opts, io, allocator, &user_repo, evt.events_ref, &.{.{ .id = std.fmt.bytesToHex(repo_id, .lower), .author = author, .event = .{ .repo = repo_event } }});│ │84 - const repo_hex = std.fmt.bytesToHex(repo_id, .lower); │ │85 - const path = try std.fs.path.join(aa, &.{ repos_dir, &repo_hex }); │ │84 + const path = try evt.repoPath(aa, users_dir, &owner, &repo_id); │ │85 { │ │86 var repo = try xit.repo.Repo(.xit, .{}).init(io, allocator, .{ .path = path }); │ │87 defer repo.deinit(io, allocator); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │91 for ([_]?[]const u8{ &owner, &writer, &reader, null }, [_]bool{ true, true, false, false }) |user, allowed| {│ │92 var session = try ui.Session.init(&arena, &admin, .{ .user_id = user }); │ │93 session.io = io; │ │95 - session.repos_dir = repos_dir; │ │94 + session.users_dir = users_dir; │ │95 const files = ui.RoutablePage.repoFilesRoute("alice/demo", null, "", "", 0).?; │ │96 session.data.current_page = files; │ │97 const page = try ui.Repo.init(&arena, &session, files); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │115 } │ │116 var session = try ui.Session.init(&arena, &admin, .{ .user_id = &owner }); │ │117 session.io = io; │ │119 - session.repos_dir = repos_dir; │ │118 + session.users_dir = users_dir; │ │119 try Undo.perform(allocator, &session, ui.RoutablePage.repoUndoRoute("alice/demo", 2).?.repo_undo);│ │120 try std.testing.expectEqual(null, session.next_page.?.repo_undo.index); │ │121 { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │139 try evt.consume(.server, .user, .xit, evt.user_repo_opts, io, allocator, &user_repo, evt.events_ref, &.{.{ .id = std.fmt.bytesToHex(repo_id, .lower), .author = author, .event = .{ .repo = repo_event } }});│ │140 var anonymous = try ui.Session.init(&arena, &admin, .{}); │ │141 anonymous.io = io; │ │143 - anonymous.repos_dir = repos_dir; │ │142 + anonymous.users_dir = users_dir; │ │143 try std.testing.expectError(error.NotFound, ui.Repo.init(&arena, &anonymous, ui.RoutablePage.repoUndoRoute("alice/demo", null).?)); │ │144 } │ │145 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯