mirror of
https://github.com/vitest-dev/vitest.git
synced 2025-12-08 18:26:03 +00:00
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import type { TestProject } from 'vitest/node'
|
|
import assert from 'node:assert/strict'
|
|
import { readFile } from 'node:fs/promises'
|
|
|
|
declare module 'vitest' {
|
|
interface ProvidedContext {
|
|
globalSetup: boolean
|
|
globalSetupOverridden: boolean
|
|
invalidValue: unknown
|
|
projectConfigValue: boolean
|
|
globalConfigValue: boolean
|
|
|
|
providedConfigValue: string
|
|
}
|
|
}
|
|
|
|
export function setup({ provide }: TestProject) {
|
|
provide('globalSetup', true)
|
|
provide('globalSetupOverridden', false)
|
|
try {
|
|
provide('invalidValue', () => {})
|
|
throw new Error('Should throw')
|
|
}
|
|
catch (err: any) {
|
|
assert.equal(err.message, 'Cannot provide "invalidValue" because it\'s not serializable.')
|
|
assert.match(err.cause.message, /could not be cloned/)
|
|
assert.equal(err.cause.name, 'DataCloneError')
|
|
}
|
|
}
|
|
|
|
let teardownCalled = false
|
|
|
|
export async function teardown() {
|
|
teardownCalled = true
|
|
const results = JSON.parse(await readFile('./results.json', 'utf-8'))
|
|
|
|
try {
|
|
assert.ok(results.success)
|
|
assert.equal(results.numTotalTestSuites, 20)
|
|
assert.equal(results.numTotalTests, 25)
|
|
assert.equal(results.numPassedTests, 25)
|
|
assert.ok(results.coverageMap)
|
|
|
|
const shared = results.testResults.filter((r: any) => r.name.includes('space_shared/test.spec.ts'))
|
|
|
|
assert.equal(shared.length, 2)
|
|
}
|
|
catch (err) {
|
|
console.error(err)
|
|
// eslint-disable-next-line no-console
|
|
console.dir(results, { depth: null })
|
|
process.exit(1)
|
|
}
|
|
}
|
|
|
|
process.on('beforeExit', () => {
|
|
if (!teardownCalled) {
|
|
console.error('teardown was not called')
|
|
process.exitCode = 1
|
|
}
|
|
})
|