Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions packages/vitest/src/node/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import type { CancelReason, File } from '@vitest/runner'
import type { Awaitable } from '@vitest/utils'
import type { Writable } from 'node:stream'
import type { ViteDevServer } from 'vite'
import type { defineWorkspace } from 'vitest/config'
import type { SerializedCoverageConfig } from '../runtime/config'
import type { ArgumentsType, ProvidedContext, UserConsoleLog } from '../types/general'
import type { CliOptions } from './cli/cli-api'
Expand Down Expand Up @@ -481,7 +480,7 @@ export class Vitest {
)

const workspaceModule = await this.import<{
default: ReturnType<typeof defineWorkspace>
default: TestProjectConfiguration[]
}>(workspaceConfigPath)

if (!workspaceModule.default || !Array.isArray(workspaceModule.default)) {
Expand Down
4 changes: 1 addition & 3 deletions packages/vitest/src/node/types/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1161,6 +1161,7 @@ export interface UserWorkspaceConfig extends ViteUserConfig {
test?: ProjectConfig
}

// TODO: remove types when "workspace" support is removed
export type UserProjectConfigFn = (
env: ConfigEnv
) => UserWorkspaceConfig | Promise<UserWorkspaceConfig>
Expand All @@ -1183,6 +1184,3 @@ export type TestProjectConfiguration =
| TestProjectInlineConfiguration
| Promise<UserWorkspaceConfig>
| UserProjectConfigFn

/** @deprecated use `TestProjectConfiguration` instead */
export type WorkspaceProjectConfiguration = TestProjectConfiguration
36 changes: 12 additions & 24 deletions packages/vitest/src/public/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ import type { ConfigEnv, UserConfig as ViteUserConfig } from 'vite'
import type {
TestProjectConfiguration,
TestProjectInlineConfiguration,
UserConfig,
UserProjectConfigExport,
UserProjectConfigFn,
UserWorkspaceConfig,
WorkspaceProjectConfiguration,
} from '../node/types/config'
import '../node/types/vite'

Expand All @@ -23,38 +23,33 @@ export type { WatcherTriggerPattern } from '../node/watcher'
export { mergeConfig } from 'vite'
export type { Plugin } from 'vite'

export type { ConfigEnv, ViteUserConfig }
/**
* @deprecated Use `ViteUserConfig` instead
*/
export type UserConfig = ViteUserConfig
export type { ConfigEnv, UserConfig as TestUserConfig, ViteUserConfig }
export type {
TestProjectConfiguration,
TestProjectInlineConfiguration,
UserProjectConfigExport,
UserProjectConfigFn,
UserWorkspaceConfig,
WorkspaceProjectConfiguration,
}
export type UserConfigFnObject = (env: ConfigEnv) => ViteUserConfig
export type UserConfigFnPromise = (env: ConfigEnv) => Promise<ViteUserConfig>
export type UserConfigFn = (
export type ViteUserConfigFnObject = (env: ConfigEnv) => ViteUserConfig
export type ViteUserConfigFnPromise = (env: ConfigEnv) => Promise<ViteUserConfig>
export type ViteUserConfigFn = (
env: ConfigEnv
) => ViteUserConfig | Promise<ViteUserConfig>
export type UserConfigExport =
export type ViteUserConfigExport =
| ViteUserConfig
| Promise<ViteUserConfig>
| UserConfigFnObject
| UserConfigFnPromise
| UserConfigFn
| ViteUserConfigFnObject
| ViteUserConfigFnPromise
| ViteUserConfigFn

export function defineConfig(config: ViteUserConfig): ViteUserConfig
export function defineConfig(
config: Promise<ViteUserConfig>
): Promise<ViteUserConfig>
export function defineConfig(config: UserConfigFnObject): UserConfigFnObject
export function defineConfig(config: UserConfigExport): UserConfigExport
export function defineConfig(config: UserConfigExport): UserConfigExport {
export function defineConfig(config: ViteUserConfigFnObject): ViteUserConfigFnObject
export function defineConfig(config: ViteUserConfigExport): ViteUserConfigExport
export function defineConfig(config: ViteUserConfigExport): ViteUserConfigExport {
return config
}

Expand All @@ -65,10 +60,3 @@ export function defineProject(config: UserProjectConfigExport): UserProjectConfi
export function defineProject(config: UserProjectConfigExport): UserProjectConfigExport {
return config
}

/**
* @deprecated use the `projects` field in the root config instead
*/
export function defineWorkspace(config: TestProjectConfiguration[]): TestProjectConfiguration[] {
return config
}
2 changes: 1 addition & 1 deletion test/cli/fixtures/browser-multiple/vitest.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { resolve } from 'pathe';
import { defineConfig, defineWorkspace } from 'vitest/config';
import { defineConfig } from 'vitest/config';

export default defineConfig({
test: {
Expand Down
4 changes: 2 additions & 2 deletions test/config/fixtures/pool-isolation/isolated.test.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { expect, test } from 'vitest'
import type { UserConfig } from 'vitest/config'
import type { TestUserConfig } from 'vitest/config'

const pool = process.env.TESTED_POOL as "forks" | "threads";

test('is isolated', () => {
// @ts-expect-error -- internal
const config: NonNullable<UserConfig['test']> = globalThis.__vitest_worker__.config
const config: TestUserConfig = globalThis.__vitest_worker__.config

if (pool === 'forks') {
expect(config.poolOptions?.forks?.isolate).toBe(true)
Expand Down
4 changes: 2 additions & 2 deletions test/config/fixtures/pool-isolation/non-isolated.test.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { expect, test } from 'vitest'
import type { UserConfig } from 'vitest/config'
import type { TestUserConfig } from 'vitest/config'

const pool = process.env.TESTED_POOL as "forks" | "threads";

test('is isolated', () => {
// @ts-expect-error -- internal
const config: NonNullable<UserConfig['test']> = globalThis.__vitest_worker__.config
const config: TestUserConfig = globalThis.__vitest_worker__.config

if (pool === 'forks') {
expect(config.poolOptions?.forks?.isolate).toBe(false)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { defineWorkspace } from "vitest/config";

export default defineWorkspace([
// TODO: remove when --workspace is removed
export default [
{
test: {
name: "Browser project",
Expand All @@ -11,4 +10,4 @@ export default defineWorkspace([
},
}
}
])
]
33 changes: 3 additions & 30 deletions test/config/test/config-types.test-d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { TestUserConfig } from 'vitest/config'
import { assertType, describe, expectTypeOf, test } from 'vitest'
import { defineConfig, defineProject, defineWorkspace, mergeConfig } from 'vitest/config'
import { defineConfig, defineProject, mergeConfig } from 'vitest/config'

const expectMainTestConfig = expectTypeOf(defineConfig).parameter(0).resolves.toHaveProperty('test').exclude<undefined>()
const expectProjectTestConfig = expectTypeOf(defineProject).parameter(0).resolves.toHaveProperty('test').exclude<undefined>()
Expand Down Expand Up @@ -32,7 +33,7 @@ describe('merge config helper', () => {
})

describe('define workspace helper', () => {
type DefineWorkspaceParameter = Parameters<typeof defineWorkspace>[0]
type DefineWorkspaceParameter = TestUserConfig['projects']

test('allows string', () => {
assertType<DefineWorkspaceParameter>(['./path/to/workspace'])
Expand Down Expand Up @@ -75,32 +76,4 @@ describe('define workspace helper', () => {
},
])
})

test('return type matches parameters', () => {
expectTypeOf(defineWorkspace).returns.toMatchTypeOf<DefineWorkspaceParameter>()

expectTypeOf(defineWorkspace([
'./path/to/project',
{
test: {
name: 'Workspace Project #1',
include: ['string'],

// @ts-expect-error -- Not allowed here
coverage: {},
},
},
'./path/to/another/project',
{
extends: 'workspace custom field',
test: {
name: 'Workspace Project #2',
include: ['string'],

// @ts-expect-error -- Not allowed here
coverage: {},
},
},
])).items.toMatchTypeOf<DefineWorkspaceParameter[number]>()
})
})
2 changes: 0 additions & 2 deletions test/core/test/exports.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ it('exports snapshot', async ({ skip, task }) => {
"defaultInclude": "object",
"defineConfig": "function",
"defineProject": "function",
"defineWorkspace": "function",
"extraInlineDeps": "object",
"mergeConfig": "function",
},
Expand Down Expand Up @@ -202,7 +201,6 @@ it('exports snapshot', async ({ skip, task }) => {
"defaultInclude": "object",
"defineConfig": "function",
"defineProject": "function",
"defineWorkspace": "function",
"extraInlineDeps": "object",
"mergeConfig": "function",
},
Expand Down
8 changes: 7 additions & 1 deletion test/coverage-test/vitest.workspace.custom.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { defineConfig, defineWorkspace } from 'vitest/config'
import type { UserWorkspaceConfig } from 'vitest/config'
import { defineConfig } from 'vitest/config'

const GENERIC_TESTS = 'test/**.test.ts'
const V8_TESTS = 'test/**.v8.test.ts'
Expand All @@ -14,6 +15,11 @@ const config = defineConfig({
},
})

// TODO: move when --workspace is removed
function defineWorkspace(config: UserWorkspaceConfig[]) {
return config
}

export default defineWorkspace([
// Test cases for v8-provider
{
Expand Down
2 changes: 1 addition & 1 deletion test/snapshots/test/fixtures/workspace/vitest.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defineConfig, defineWorkspace } from 'vitest/config'
import { defineConfig } from 'vitest/config'

export default defineConfig({
test: {
Expand Down
4 changes: 2 additions & 2 deletions test/test-utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { Options } from 'tinyexec'
import type { UserConfig as ViteUserConfig } from 'vite'
import type { WorkerGlobalState } from 'vitest'
import type { WorkspaceProjectConfiguration } from 'vitest/config'
import type { TestProjectConfiguration } from 'vitest/config'
import type { TestModule, UserConfig, Vitest, VitestRunMode } from 'vitest/node'
import { webcrypto as crypto } from 'node:crypto'
import fs from 'node:fs'
Expand Down Expand Up @@ -277,7 +277,7 @@ export type TestFsStructure = Record<
string,
| string
| ViteUserConfig
| WorkspaceProjectConfiguration[]
| TestProjectConfiguration[]
| ((...args: any[]) => unknown)
| [(...args: any[]) => unknown, { exports?: string[]; imports?: Record<string, string[]> }]
>
Expand Down
4 changes: 2 additions & 2 deletions test/workspaces/space-pools/isolate.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import type { UserConfig } from 'vitest/config'
import type { ViteUserConfig } from 'vitest/config'
import { expect, test } from 'vitest'

test('is isolated', () => {
// @ts-expect-error -- internal
const config: NonNullable<UserConfig['test']> = globalThis.__vitest_worker__.config
const config: NonNullable<ViteUserConfig['test']> = globalThis.__vitest_worker__.config

if (config.pool === 'forks') {
expect(config.poolOptions?.forks?.isolate).toBe(true)
Expand Down
4 changes: 2 additions & 2 deletions test/workspaces/space-pools/multi-worker.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import type { UserConfig } from 'vitest/config'
import type { ViteUserConfig } from 'vitest/config'
import { expect, test } from 'vitest'

test('is multi worker', () => {
// @ts-expect-error -- internal
const config: NonNullable<UserConfig['test']> = globalThis.__vitest_worker__.config
const config: NonNullable<ViteUserConfig['test']> = globalThis.__vitest_worker__.config

if (config.pool === 'forks') {
expect(config.poolOptions?.forks?.singleFork).toBe(false)
Expand Down
4 changes: 2 additions & 2 deletions test/workspaces/space-pools/no-isolate.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import type { UserConfig } from 'vitest/config'
import type { ViteUserConfig } from 'vitest/config'
import { expect, test } from 'vitest'

test('is not isolated', () => {
// @ts-expect-error -- internal
const config: NonNullable<UserConfig['test']> = globalThis.__vitest_worker__.config
const config: NonNullable<ViteUserConfig['test']> = globalThis.__vitest_worker__.config

if (config.pool === 'forks') {
expect(config.poolOptions?.forks?.isolate).toBe(false)
Expand Down
4 changes: 2 additions & 2 deletions test/workspaces/space-pools/single-worker.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import type { UserConfig } from 'vitest/config'
import type { ViteUserConfig } from 'vitest/config'
import { expect, test } from 'vitest'

test('is single worker', () => {
// @ts-expect-error -- internal
const config: NonNullable<UserConfig['test']> = globalThis.__vitest_worker__.config
const config: NonNullable<ViteUserConfig['test']> = globalThis.__vitest_worker__.config

if (config.pool === 'forks') {
expect(config.poolOptions?.forks?.singleFork).toBe(true)
Expand Down