| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Integration test for CLAUDE.md §7.3 — when the deploymentId changes for
- // an existing project, the next invocation must retire the old isolate
- // and cold-start a fresh one against the new bundle. We assert that two
- // invocations against the same projectId (but different deploymentIds)
- // produce two distinct PIDs, and that each invocation returns the value
- // from its own bundle (so we know the new deployment really took effect).
- import { describe, expect, test } from 'bun:test';
- import { runTwoSequentialInvocations } from './test-helpers.js';
- describe('deploy invalidation (integration)', () => {
- test('changing deploymentId retires the old isolate and respawns fresh', async () => {
- const { first, second, pidsObserved, cleanup } = await runTwoSequentialInvocations({
- first: {
- fnName: 'v',
- deploymentId: 'd1',
- fnSource: `
- import { query } from '@briven/cli/server';
- export const v = query(async () => 'A');
- `,
- },
- second: {
- fnName: 'v',
- deploymentId: 'd2',
- fnSource: `
- import { query } from '@briven/cli/server';
- export const v = query(async () => 'B');
- `,
- },
- });
- try {
- expect(first.ok).toBe(true);
- expect(second.ok).toBe(true);
- if (first.ok) expect(first.value).toBe('A');
- if (second.ok) expect(second.value).toBe('B');
- expect(pidsObserved.length).toBeGreaterThanOrEqual(2);
- // Two distinct PIDs prove the second invocation got a fresh isolate.
- const unique = new Set(pidsObserved);
- expect(unique.size).toBe(2);
- } finally {
- await cleanup();
- }
- }, 60_000);
- });
|