From 5aafee4a3b19b481347ff2c070c3aaa043ff47e9 Mon Sep 17 00:00:00 2001 From: Bobbie Goede Date: Thu, 21 Dec 2023 20:20:13 +0100 Subject: [PATCH] fix: use `restart` for server config update --- examples/module/test/basic.test.ts | 7 ++++--- src/core/runtime-config.ts | 10 ++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/examples/module/test/basic.test.ts b/examples/module/test/basic.test.ts index a1ffd5ba6..c9d9413e9 100644 --- a/examples/module/test/basic.test.ts +++ b/examples/module/test/basic.test.ts @@ -40,9 +40,10 @@ describe('ssr', async () => { }) it('changes runtime config', async () => { - await setRuntimeConfig({ public: { myValue: 'overwritten by test!' } }) + expect(await $fetch('/')).toContain('original value') - const html = await $fetch('/') - expect(html).toContain('overwritten by test!') + await setRuntimeConfig({ public: { myValue: 'overwritten by test!' } }, { restart: true }) + + expect(await $fetch('/')).toContain('overwritten by test!') }) }) diff --git a/src/core/runtime-config.ts b/src/core/runtime-config.ts index a95a90c07..b4edcbf17 100644 --- a/src/core/runtime-config.ts +++ b/src/core/runtime-config.ts @@ -1,5 +1,6 @@ import { snakeCase } from 'scule' import { useTestContext } from './context' +import { startServer } from './server' export function flattenObject(obj: Record = {}) { const flattened: Record = {} @@ -36,10 +37,15 @@ export function convertObjectToConfig(obj: Record, envPrefix: s return env } -export async function setRuntimeConfig(config: Record, envPrefix = 'NUXT_') { - const env = convertObjectToConfig(config, envPrefix) +type SetRuntimeConfigOptions = { envPrefix?: string; restart?: boolean } +export async function setRuntimeConfig(config: Record, options: SetRuntimeConfigOptions = {}) { + const env = convertObjectToConfig(config, options.envPrefix ?? 'NUXT_') const ctx = useTestContext() + if (options.restart) { + return await startServer({ env }) + } + let updatedConfig = false ctx.serverProcess?.once('message', (msg: { type: string }) => { if (msg.type === 'confirm:runtime-config') {