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

Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:2ycx19qxfm is past its budget: trevato/forge: "verify an email from the People screen > an admin verifies the person under the cursor and the row chan… #7707

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

mason/forge:mason/7669-sentinel-shared-01m23vygyffx5hg2f5vm8r74 → main 2 commits fork

  • Merged. mason/7669-sentinel-shared-01m23vygyffx5hg2f5vm8r74 was merged into main as 51aaed1.

Review

Sign in to review this change.
2 files changed +20 −6
test/apps-rollout.test.ts +16 −6
@@ -117,14 +117,21 @@ function connect(forge: Forge) {
117117 return { ws, opened, closed, echo };
118118 }
119119
120 /** Ask `/` until `stop` is set, from whichever forge `target` names; every status seen. */
121 function loop(target: () => Forge, stop: { done: boolean }): Promise<number[]> {
120 /**
121 * Ask `/` until `stop` is set, from whichever forge `target` names; every
122 * status seen. `stop.asking` is the request in flight, so a test can let it
123 * land before it stops the forge it went to.
124 */
125 function loop(target: () => Forge, stop: { done: boolean; asking?: Promise<unknown> }): Promise<number[]> {
122126 return (async () => {
123127 const seen: number[] = [];
124128 while (!stop.done) {
125 const res = await get(target(), "/");
126 await res.arrayBuffer();
127 seen.push(res.status);
129 const asking = get(target(), "/").then(async (res) => {
130 await res.arrayBuffer();
131 return res.status;
132 });
133 stop.asking = asking;
134 seen.push(await asking);
128135 await Bun.sleep(20);
129136 }
130137 return seen;
@@ -237,7 +244,7 @@ describe("apps: through a rollout", () => {
237244 expect(await socket.opened).toBe(true);
238245 expect(await socket.echo("held")).toBe("held");
239246
240 const stop = { done: false };
247 const stop: { done: boolean; asking?: Promise<unknown> } = { done: false };
241248 let current: Forge = a;
242249 const statuses = loop(() => current, stop);
243250
@@ -259,6 +266,9 @@ describe("apps: through a rollout", () => {
259266
260267 // The platform routes to the new forge; the old one stops its apps.
261268 current = next;
269 // The request already sent to the old forge lands first, as the
270 // SIGTERM linger in `main.ts` lets it in production (#4496).
271 await stop.asking;
262272 await a.runtime.stop();
263273 a.presence.stop();
264274 const closed = await socket.closed;
test/tui-people-verify.test.ts +4
@@ -32,6 +32,10 @@ describe("verify an email from the People screen", () => {
3232 alice = a.value;
3333 bob = b.value;
3434 markUnproven(forge.db, bob.id);
35 // The list is newest first, ties by username. Argon2 is cheap under test,
36 // so both sign-ups can share a millisecond and put alice on top; the
37 // cursor's first row must be bobby whatever the clock did.
38 forge.db.query("UPDATE user SET created_at = '2000-01-01T00:00:00.000Z' WHERE id = ?1").run(alice.id);
3539 });
3640
3741 afterAll(async () => {

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs