Skip to content

Commit 848d724

Browse files
authored
fix: don't duplicte oxc.target if user provides a custom array (#11095)
1 parent ccd3059 commit 848d724

3 files changed

Lines changed: 30 additions & 21 deletions

File tree

‎packages/vitest/src/node/plugins/config.ts‎

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -72,27 +72,18 @@ export function ViteConfigPlugin(harness: PluginHarness): Plugin[] {
7272
},
7373
}
7474

75-
if ('rolldownVersion' in vite) {
76-
// eslint-disable-next-line ts/ban-ts-comment
77-
// @ts-ignore rolldown-vite only
78-
config.oxc = viteConfig.oxc === false
79-
? false
80-
: {
81-
// eslint-disable-next-line ts/ban-ts-comment
82-
// @ts-ignore rolldown-vite only
83-
target: viteConfig.oxc?.target || 'node18',
84-
}
75+
if (viteConfig.oxc !== false) {
76+
viteConfig.oxc ??= {}
77+
// Lowest target Vitest supports is Node22
78+
viteConfig.oxc.target ??= 'node22'
8579
}
86-
else {
87-
config.esbuild = viteConfig.esbuild === false
88-
? false
89-
: {
90-
// Lowest target Vitest supports is Node18
91-
target: viteConfig.esbuild?.target || 'node18',
92-
sourcemap: 'external',
93-
// Enables using ignore hint for coverage providers with @preserve keyword
94-
legalComments: 'inline',
95-
}
80+
if (!('rolldownVersion' in vite) && viteConfig.esbuild !== false) {
81+
viteConfig.esbuild ??= {}
82+
// Lowest target Vitest supports is Node22
83+
viteConfig.esbuild.target ??= 'node22'
84+
viteConfig.esbuild.sourcemap = 'external'
85+
// Enables using ignore hint for coverage providers with @preserve keyword
86+
viteConfig.esbuild.legalComments = 'inline'
9687
}
9788

9889
const classNameStrategy

‎test/e2e/test/bail-race.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { StableTestFileOrderSorter } from '../../test-utils'
66
test('cancels previous run before starting new one', async () => {
77
const errors: unknown[] = []
88

9-
const vitest = await createVitest('test', {
9+
const vitest = await createVitest({
1010
maxWorkers: 1,
1111
maxConcurrency: 1,
1212
watch: false,

‎test/e2e/test/public.test.ts‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { resolve } from 'pathe'
33
import { expect, test } from 'vitest'
44
import { configDefaults } from 'vitest/config'
55
import { resolveConfig } from 'vitest/node'
6+
import { resolveTestConfig } from '#test-utils'
67

78
test('resolves the test config', async () => {
89
const viteConfig = await resolveConfig()
@@ -140,3 +141,20 @@ test('coverage.changed inherits from test.changed but can be overridden', async
140141

141142
expect(overridden.coverage.changed).toBe(false)
142143
})
144+
145+
test('user oxc.target as array doesn\'t break config resolution', async () => {
146+
const { config } = await resolveTestConfig({
147+
$viteConfig: {
148+
oxc: {
149+
target: ['chrome121', 'firefox118'],
150+
},
151+
esbuild: {
152+
target: ['chrome121', 'firefox118'],
153+
},
154+
},
155+
})
156+
expect.assert(config.oxc !== false)
157+
expect.assert(config.esbuild !== false)
158+
expect(config.oxc.target).toEqual(['chrome121', 'firefox118'])
159+
expect(config.esbuild.target).toEqual(['chrome121', 'firefox118'])
160+
})

0 commit comments

Comments
 (0)