Skip to content

Commit 2c1abb5

Browse files
chore: preparations to run vitest in monorepo later
1 parent c63467b commit 2c1abb5

File tree

6 files changed

+40
-12
lines changed

6 files changed

+40
-12
lines changed

packages/dev-lib/cfg/vitest.config.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import type { InlineConfig } from 'vitest/node'
1111
})
1212
1313
*/
14-
export function defineVitestConfig(config?: Partial<ViteUserConfig>): ViteUserConfig
14+
export function defineVitestConfig(config?: Partial<ViteUserConfig>, cwd?: string): ViteUserConfig
1515

1616
export const sharedConfig: InlineConfig
1717

packages/dev-lib/cfg/vitest.config.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ export { CollectReporter } from './collectReporter.js'
88
const runsInIDE = doesItRunInIDE()
99
const testType = getTestType(runsInIDE)
1010
const silent = shouldBeSilent(runsInIDE)
11-
const setupFiles = getSetupFiles(testType)
1211
const { include, exclude } = getIncludeAndExclude(testType)
1312
const isCI = !!process.env['CI']
1413
const coverageEnabled = isCI && testType === 'unit'
@@ -37,11 +36,14 @@ if (silent) {
3736
* // bail: 1,
3837
* })
3938
*/
40-
export function defineVitestConfig(config) {
39+
export function defineVitestConfig(config, cwd) {
40+
const setupFiles = getSetupFiles(testType, cwd)
41+
4142
const mergedConfig = defineConfig({
4243
...config,
4344
test: {
4445
...sharedConfig,
46+
setupFiles,
4547
...config?.test,
4648
},
4749
})
@@ -58,6 +60,8 @@ export function defineVitestConfig(config) {
5860
pool,
5961
isolate,
6062
maxWorkers,
63+
setupFiles,
64+
cwd,
6165
})
6266

6367
return mergedConfig
@@ -74,7 +78,7 @@ export const sharedConfig = {
7478
// dir: 'src',
7579
restoreMocks: true,
7680
silent,
77-
setupFiles,
81+
setupFiles: getSetupFiles(testType),
7882
logHeapUsage: true,
7983
testTimeout: 60_000,
8084
slowTestThreshold: isCI ? 500 : 300, // higher threshold in CI
@@ -180,13 +184,13 @@ function isRunningAllTests() {
180184
return !hasPositionalArgs
181185
}
182186

183-
function getSetupFiles(testType) {
187+
function getSetupFiles(testType, cwd = '.') {
184188
// Set 'setupFiles' only if setup files exist
185189
const setupFiles = []
186-
if (fs.existsSync(`./src/test/setupVitest.ts`)) {
190+
if (fs.existsSync(`${cwd}/src/test/setupVitest.ts`)) {
187191
setupFiles.push('./src/test/setupVitest.ts')
188192
}
189-
if (fs.existsSync(`./src/test/setupVitest.${testType}.ts`)) {
193+
if (fs.existsSync(`${cwd}/src/test/setupVitest.${testType}.ts`)) {
190194
setupFiles.push(`./src/test/setupVitest.${testType}.ts`)
191195
}
192196
return setupFiles

packages/js-lib/src/deviceIdService.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { beforeEach, describe, expect, test, vi } from 'vitest'
1+
import { afterAll, beforeEach, describe, expect, test, vi } from 'vitest'
22
import { _range } from './array/range.js'
33
import { DeviceIdService } from './deviceIdService.js'
44
import { InMemoryWebStorage } from './web.js'
55

6+
afterAll(() => {
7+
vi.unstubAllGlobals()
8+
})
9+
610
describe('when run in Node', () => {
711
test('deviceId should be null', () => {
812
const deviceIdService = new DeviceIdService()

packages/js-lib/src/string/stringify.test.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
import { mockAllKindsOfThings } from '@naturalcycles/dev-lib/testing'
22
import { inspectStringifyFn } from '@naturalcycles/nodejs-lib'
3-
import { expect, test } from 'vitest'
3+
import { afterAll, expect, test } from 'vitest'
44
import type { BackendErrorResponseObject } from '../error/error.model.js'
55
import { _errorLikeToErrorObject, AppError } from '../error/error.util.js'
66
import { pExpectedError } from '../error/try.js'
77
import { expectResults } from '../test/test.util.js'
8-
import { _stringify, setGlobalStringifyFunction } from './stringify.js'
8+
import {
9+
_stringify,
10+
resetGlobalStringifyFunction,
11+
setGlobalStringifyFunction,
12+
} from './stringify.js'
13+
14+
afterAll(() => {
15+
resetGlobalStringifyFunction()
16+
})
917

1018
test('stringify default', () => {
1119
expectResults(v => _stringify(v), mockAllKindsOfThings()).toMatchSnapshot()

packages/js-lib/src/string/stringify.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ export function setGlobalStringifyFunction(fn: JsonStringifyFunction): void {
2626
globalStringifyFunction = fn
2727
}
2828

29+
export function resetGlobalStringifyFunction(): void {
30+
globalStringifyFunction = _safeJsonStringify
31+
}
32+
2933
export type JsonStringifyFunction = (obj: any, reviver?: Reviver, space?: number) => string
3034

3135
export interface StringifyOptions {

packages/nodejs-lib/src/script/runScript.test.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
import { pDelay } from '@naturalcycles/js-lib/promise/pDelay.js'
2-
import { _stringify, setGlobalStringifyFunction } from '@naturalcycles/js-lib/string'
2+
import {
3+
_stringify,
4+
resetGlobalStringifyFunction,
5+
setGlobalStringifyFunction,
6+
} from '@naturalcycles/js-lib/string'
37
import { _noop } from '@naturalcycles/js-lib/types'
4-
import { expect, test, vi } from 'vitest'
8+
import { afterAll, expect, test, vi } from 'vitest'
59
import { inspectStringifyFn } from '../string/inspect.js'
610
import { runScript } from './runScript.js'
711

812
const detectLeaks = process.argv.some(a => a.includes('detectLeaks'))
913

14+
afterAll(() => {
15+
resetGlobalStringifyFunction()
16+
})
17+
1018
// skipped, because mocking process.exit no longer works
1119
test.skip('runScript', async () => {
1220
if (detectLeaks) return // Somehow it fails with detect-leaks SOMETIMES

0 commit comments

Comments
 (0)