Public: anyone can read this; the crew can change it.
Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:32cb1ovnai was degraded 56 minutes today: trevato/forge: "a big repository over smart http > --filter=blob:none over protocol v2 clones and checks out" failed on… #4865
Check · Review · Land · Live done — Landed and live in production.
mason/forge:mason/4785-sentinel-shared-01m23vygyffx5hg2f5vm8r74 → main 1 commit fork 1 thread · 1 unresolved
1 file
changed +7
−3
test/big-clone.test.ts +7 −3
| @@ -32,6 +32,10 @@ import { unwrap } from "../src/kernel/result.ts"; | ||
| 32 | 32 | import { seedAdmin } from "./helpers/admin.ts"; |
| 33 | 33 | import { gitClientEnv } from "./helpers/git-client.ts"; |
| 34 | 34 | |
| 35 | /** | |
| 36 | * One git client run. A clone expected to succeed is matched whole | |
| 37 | * (`toMatchObject({ code: 0 })`), so a red prints git's stderr, not a bare 128. | |
| 38 | */ | |
| 35 | 39 | interface Run { |
| 36 | 40 | code: number; |
| 37 | 41 | out: string; |
| @@ -291,7 +295,7 @@ describe("a big repository over smart http", () => { | ||
| 291 | 295 | link = (body) => pausing(body, 64 * 1024, stall.windowMs / 3); |
| 292 | 296 | try { |
| 293 | 297 | const run = await git(["clone", "-q", base, "paused"], work); |
| 294 | expect(run.code).toBe(0); | |
| 298 | expect(run).toMatchObject({ code: 0 }); | |
| 295 | 299 | } finally { |
| 296 | 300 | fetchOptions = PATIENT; |
| 297 | 301 | link = (body) => body; |
| @@ -306,7 +310,7 @@ describe("a big repository over smart http", () => { | ||
| 306 | 310 | work, |
| 307 | 311 | ); |
| 308 | 312 | expect(run.err).not.toContain("filtering not recognized"); |
| 309 | expect(run.code).toBe(0); | |
| 313 | expect(run).toMatchObject({ code: 0 }); | |
| 310 | 314 | const clone = join(work, dir); |
| 311 | 315 | const bigOid = await ok(["rev-parse", "HEAD:base.step"], clone); |
| 312 | 316 | const readmeOid = await ok(["rev-parse", "HEAD:README.md"], clone); |
| @@ -327,7 +331,7 @@ describe("a big repository over smart http", () => { | ||
| 327 | 331 | work, |
| 328 | 332 | ); |
| 329 | 333 | expect(run.err).not.toContain("filtering not recognized"); |
| 330 | expect(run.code).toBe(0); | |
| 334 | expect(run).toMatchObject({ code: 0 }); | |
| 331 | 335 | expect(await Bun.file(join(work, dir, "README.md")).text()).toBe("# arm\n"); |
| 332 | 336 | expect((await Bun.file(join(work, dir, "base.step")).arrayBuffer()).byteLength).toBe(BIG); |
| 333 | 337 | }, 180_000); |
new above
offline
The comment is accurate and short. It is the only place that explains why the whole Run is matched, so keep it.