(userDataDir: string, fn: () => Promise<T> | T)
| 28 | } |
| 29 | |
| 30 | async function withDataDirEnv<T>(userDataDir: string, fn: () => Promise<T> | T): Promise<T> { |
| 31 | const previousDataDir = process.env.CHATLAB_DATA_DIR |
| 32 | const previousOverride = process.env.CHATLAB_ALLOW_INCOMPATIBLE_DATA_DIR |
| 33 | process.env.CHATLAB_DATA_DIR = userDataDir |
| 34 | delete process.env.CHATLAB_ALLOW_INCOMPATIBLE_DATA_DIR |
| 35 | |
| 36 | try { |
| 37 | return await fn() |
| 38 | } finally { |
| 39 | if (previousDataDir === undefined) { |
| 40 | delete process.env.CHATLAB_DATA_DIR |
| 41 | } else { |
| 42 | process.env.CHATLAB_DATA_DIR = previousDataDir |
| 43 | } |
| 44 | |
| 45 | if (previousOverride === undefined) { |
| 46 | delete process.env.CHATLAB_ALLOW_INCOMPATIBLE_DATA_DIR |
| 47 | } else { |
| 48 | process.env.CHATLAB_ALLOW_INCOMPATIBLE_DATA_DIR = previousOverride |
| 49 | } |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | test('startHttpServer fails before serving when data directory requires a newer runtime', async () => { |
| 54 | const userDataDir = makeTempDir() |
no outgoing calls
no test coverage detected