╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ───────╮ │src/test/ssh.zig│ ╰────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────╮ │13 // a post-auth session with deterministic ciphers, for exercising the packet │ │14 // pump independently of the full handshake below. initialize in place. │ │15 const TestSession = struct { │ │16 - const key = [_]u8{0x5a} ** 64; │ │16 + const key: [64]u8 = @splat(0x5a); │ │17 const Channel = @typeInfo(@FieldType(proto.SessionCtx, "channel")).pointer.child;│ │18 reader: std.Io.Reader = undefined, │ │19 output: [2048]u8 = undefined, │ ╰─────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────╮ │157 } │ │158 │ │159 test "fingerprint format matches openssh layout" { │ │160 - const seed = [_]u8{0x42} ** Ed25519.KeyPair.seed_length; │ │160 + const seed: [Ed25519.KeyPair.seed_length]u8 = @splat(0x42); │ │161 const keypair = try Ed25519.KeyPair.generateDeterministic(seed); │ │162 │ │163 // SSH wire-format pubkey blob: string "ssh-ed25519" || string raw_pubkey.│ ╰───────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────╮ │252 test "ignored packets do not count as connection activity" {│ │253 const io = std.testing.io; │ │254 const allocator = std.testing.allocator; │ │255 - const key_material = [_]u8{0x5A} ** 64; │ │255 + const key_material: [64]u8 = @splat(0x5A); │ │256 │ │257 var sender = proto.Cipher.init(&key_material, 0); │ │258 var encoded_buf: [128]u8 = undefined; │ ╰─────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────╮ │353 // 5. replies KEX_ECDH_REPLY with K_S (host key blob), q_s, signature│ │354 // │ │355 // client verifies the signature against K_S — MITM defense. │ │356 - const client_eph = try newClientEphemeral(); │ │356 + const client_eph = newClientEphemeral(); │ │357 { │ │358 var pkt: std.ArrayList(u8) = .empty; │ │359 defer pkt.deinit(allocator); │ ╰────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────╮ │674 const skex = try proto.readPlainPacket(allocator, cr);│ │675 defer allocator.free(skex); │ │676 │ │677 - const eph = try newClientEphemeral(); │ │677 + const eph = newClientEphemeral(); │ │678 { │ │679 var pkt: std.ArrayList(u8) = .empty; │ │680 defer pkt.deinit(allocator); │ ╰───────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────╮ │763 try std.testing.expectEqualSlices(u8, pubkey_blob.items, accepted_blob);│ │764 } │ │765 │ │766 - const wrong_session = [_]u8{0xFF} ** Sha256.digest_length; │ │766 + const wrong_session: [Sha256.digest_length]u8 = @splat(0xFF); │ │767 for ([_]struct { │ │768 sign_session: []const u8, │ │769 sign_user: []const u8, │ ╰─────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────╮ │ 994 // deterministic keys so failures don't depend on RNG state. │ │ 995 │ │ 996 fn newHostKey() !proto.HostKey { │ │ 997 - const seed = [_]u8{0xAA} ** Ed25519.KeyPair.seed_length; │ │ 997 + const seed: [Ed25519.KeyPair.seed_length]u8 = @splat(0xAA); │ │ 998 return .{ .keypair = try Ed25519.KeyPair.generateDeterministic(seed) };│ │ 999 } │ │1000 │ ╰─────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────╮ │1001 fn newUserKeypair() !Ed25519.KeyPair { │ │1002 - const seed = [_]u8{0xBB} ** Ed25519.KeyPair.seed_length; │ │1002 + const seed: [Ed25519.KeyPair.seed_length]u8 = @splat(0xBB);│ │1003 return try Ed25519.KeyPair.generateDeterministic(seed); │ │1004 } │ │1005 │ ╰─────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────╮ │1006 -fn newClientEphemeral() !X25519.KeyPair { │ │1007 - const seed = [_]u8{0xCC} ** X25519.seed_length; │ │1008 - return try X25519.KeyPair.generateDeterministic(seed);│ │1006 +fn newClientEphemeral() X25519.KeyPair { │ │1007 + const seed: [X25519.seed_length]u8 = @splat(0xCC); │ │1008 + return X25519.KeyPair.generateDeterministic(seed); │ │1009 } │ │1010 │ ╰────────────────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/test/ui.zig│ ╰───────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │147 try std.testing.expectEqual(0, (try Diff.init(kind, opts, &arena, &repo, io, allocator, unchanged.repo_diff)).window.hunks.len); │ │148 │ │149 // a zero base includes files that were already present in the first commit │ │150 - const zero = [_]u8{'0'} ** xit.hash.hexLen(opts.hash); │ │150 + const zero: [xit.hash.hexLen(opts.hash)]u8 = @splat('0'); │ │151 const created = ui.RoutablePage.repoDiffRoute("alice:project", .object, &head, 0, "shared.txt", &zero) orelse return error.BadRoute;│ │152 const created_diff = try Diff.init(kind, opts, &arena, &repo, io, allocator, created.repo_diff); │ │153 try std.testing.expectEqual(1, created_diff.window.hunks.len); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯