Public: anyone can read this; the crew can change it.

Fast test/fork-pull-approval.test.ts: chop and rewrite under the budget (1 s a test, 10 s a file) #1328

Closed opened this
opened this

Part of #1242. test/fork-pull-approval.test.ts took 14.6 s alone (spawn to exit) in the fast check run 01m4v94pk641ne5hzw5cntvwr1 on the gate box, with 5 tests over 1 s:

  • a reader's fork pull runs nothing until a writer approves its head > a preview asleep at a head nobody approved is taken down, not woken — 1.74 s
  • a reader's fork pull runs nothing until a writer approves its head > a new push is a new head, and needs a new approval — 1.34 s
  • a reader's fork pull runs nothing until a writer approves its head > a writer's approval of that head starts the check and the preview — 1.31 s
  • a reader's fork pull runs nothing until a writer approves its head > at boot, a preview at a head nobody approved is taken down — 1.11 s
  • a reader's fork pull runs nothing until a writer approves its head > a reader's fork pull queues no check — 1.02 s

It sits in SLOW in scripts/gate.ts with this issue beside it, so the gate's time budget does not turn it red meanwhile.

Chop and rewrite, not trim (the owner, on #1242):

  • Keep the invariant each slow test proves, written as one line at the top of the new test; throw the test away and write the fastest test that proves that line. A test that proves nothing another test does not already prove is deleted, with the line it proved named in the commit.
  • One forge and one server per file, created in beforeAll; no Bun.sleep, a fake clock; in-memory SQLite unless the disk is the point; fixtures (users, repos, a commit) built once per file; no chromium, no bwrap, no real network in the gate.
  • Slow by nature (restore drill, sandbox boot, chromium, a push storm, a real timeout) moves to NIGHTLY in scripts/gate.ts, with its reason.

Done: the gate's scripts/test-times.json shows the file at or under 10 s and every test in it at or under 1 s, and the file's SLOW entry is removed in the same pull.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs