mirror of https://github.com/facebook/jest.git
chore: migrate the `Config` type test to TSTyche (#14687)
This commit is contained in:
parent
341f529deb
commit
35f45f32c8
|
@ -48,7 +48,7 @@ jobs:
|
||||||
- name: ts integration
|
- name: ts integration
|
||||||
run: yarn test-ts --selectProjects ts-integration
|
run: yarn test-ts --selectProjects ts-integration
|
||||||
- name: type tests
|
- name: type tests
|
||||||
run: yarn test-ts --selectProjects type-tests
|
run: yarn tstyche --target 5.0,latest && yarn test-ts --selectProjects type-tests
|
||||||
- name: verify TypeScript@5.0 compatibility
|
- name: verify TypeScript@5.0 compatibility
|
||||||
run: yarn verify-old-ts
|
run: yarn verify-old-ts
|
||||||
- name: run ESLint with type info
|
- name: run ESLint with type info
|
||||||
|
|
|
@ -27,7 +27,10 @@ export default {
|
||||||
modulePathIgnorePatterns: baseConfig.modulePathIgnorePatterns,
|
modulePathIgnorePatterns: baseConfig.modulePathIgnorePatterns,
|
||||||
roots: ['<rootDir>/packages'],
|
roots: ['<rootDir>/packages'],
|
||||||
runner: 'jest-runner-tsd',
|
runner: 'jest-runner-tsd',
|
||||||
testMatch: ['**/__typetests__/**/*.test.ts'],
|
testMatch: [
|
||||||
|
'**/__typetests__/**/*.test.ts',
|
||||||
|
'!**/packages/jest-types/__typetests__/config.test.ts',
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
reporters: ['default', 'github-actions'],
|
reporters: ['default', 'github-actions'],
|
||||||
|
|
|
@ -79,6 +79,7 @@
|
||||||
"strip-json-comments": "^3.1.1",
|
"strip-json-comments": "^3.1.1",
|
||||||
"tempy": "^1.0.0",
|
"tempy": "^1.0.0",
|
||||||
"ts-node": "^10.5.0",
|
"ts-node": "^10.5.0",
|
||||||
|
"tstyche": "^1.0.0-beta.6",
|
||||||
"typescript": "^5.0.4",
|
"typescript": "^5.0.4",
|
||||||
"webpack": "^5.68.0",
|
"webpack": "^5.68.0",
|
||||||
"webpack-node-externals": "^3.0.0",
|
"webpack-node-externals": "^3.0.0",
|
||||||
|
@ -110,7 +111,7 @@
|
||||||
"test-ci-partial:parallel": "yarn jest --color --config jest.config.ci.mjs",
|
"test-ci-partial:parallel": "yarn jest --color --config jest.config.ci.mjs",
|
||||||
"test-leak": "yarn jest -i --detectLeaks --color jest-mock jest-diff jest-repl pretty-format",
|
"test-leak": "yarn jest -i --detectLeaks --color jest-mock jest-diff jest-repl pretty-format",
|
||||||
"test-ts": "yarn jest --config jest.config.ts.mjs",
|
"test-ts": "yarn jest --config jest.config.ts.mjs",
|
||||||
"test-types": "yarn test-ts --selectProjects type-tests",
|
"test-types": "yarn tstyche && yarn test-ts --selectProjects type-tests",
|
||||||
"test": "yarn lint && yarn jest",
|
"test": "yarn lint && yarn jest",
|
||||||
"typecheck": "yarn typecheck:examples && yarn typecheck:tests",
|
"typecheck": "yarn typecheck:examples && yarn typecheck:tests",
|
||||||
"typecheck:examples": "tsc -p examples/angular --noEmit && tsc -p examples/expect-extend --noEmit && tsc -p examples/typescript --noEmit",
|
"typecheck:examples": "tsc -p examples/angular --noEmit && tsc -p examples/expect-extend --noEmit && tsc -p examples/typescript --noEmit",
|
||||||
|
|
|
@ -5,12 +5,14 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {expectAssignable, expectNotAssignable} from 'tsd-lite';
|
import {describe, expect, test} from 'tstyche';
|
||||||
import type {Config} from '@jest/types';
|
import type {Config} from 'jest';
|
||||||
|
|
||||||
expectAssignable<Config.InitialOptions>({});
|
const config: Config = {};
|
||||||
|
|
||||||
expectAssignable<Config.InitialOptions>({
|
describe('Config', () => {
|
||||||
|
test('coverageThreshold', () => {
|
||||||
|
expect(config).type.toBeAssignable({
|
||||||
coverageThreshold: {
|
coverageThreshold: {
|
||||||
'./src/api/very-important-module.js': {
|
'./src/api/very-important-module.js': {
|
||||||
branches: 100,
|
branches: 100,
|
||||||
|
@ -32,6 +34,89 @@ expectAssignable<Config.InitialOptions>({
|
||||||
statements: 50,
|
statements: 50,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('fakeTimers', () => {
|
||||||
|
const doNotFake = [
|
||||||
|
'Date' as const,
|
||||||
|
'hrtime' as const,
|
||||||
|
'nextTick' as const,
|
||||||
|
'performance' as const,
|
||||||
|
'queueMicrotask' as const,
|
||||||
|
'requestAnimationFrame' as const,
|
||||||
|
'cancelAnimationFrame' as const,
|
||||||
|
'requestIdleCallback' as const,
|
||||||
|
'cancelIdleCallback' as const,
|
||||||
|
'setImmediate' as const,
|
||||||
|
'clearImmediate' as const,
|
||||||
|
'setInterval' as const,
|
||||||
|
'clearInterval' as const,
|
||||||
|
'setTimeout' as const,
|
||||||
|
'clearTimeout' as const,
|
||||||
|
];
|
||||||
|
|
||||||
|
expect(config).type.toBeAssignable({
|
||||||
|
fakeTimers: {
|
||||||
|
advanceTimers: true,
|
||||||
|
doNotFake,
|
||||||
|
enableGlobally: true,
|
||||||
|
now: 1_483_228_800_000,
|
||||||
|
timerLimit: 1000,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(config).type.toBeAssignable({
|
||||||
|
fakeTimers: {
|
||||||
|
advanceTimers: 40,
|
||||||
|
now: Date.now(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(config).type.not.toBeAssignable({
|
||||||
|
fakeTimers: {
|
||||||
|
now: new Date(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(config).type.toBeAssignable({
|
||||||
|
fakeTimers: {
|
||||||
|
enableGlobally: true,
|
||||||
|
legacyFakeTimers: true as const,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(config).type.not.toBeAssignable({
|
||||||
|
fakeTimers: {
|
||||||
|
advanceTimers: true,
|
||||||
|
legacyFakeTimers: true as const,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(config).type.not.toBeAssignable({
|
||||||
|
fakeTimers: {
|
||||||
|
doNotFake,
|
||||||
|
legacyFakeTimers: true as const,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(config).type.not.toBeAssignable({
|
||||||
|
fakeTimers: {
|
||||||
|
legacyFakeTimers: true as const,
|
||||||
|
now: 1_483_228_800_000,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(config).type.not.toBeAssignable({
|
||||||
|
fakeTimers: {
|
||||||
|
legacyFakeTimers: true as const,
|
||||||
|
timerLimit: 1000,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('projects', () => {
|
||||||
|
expect(config).type.toBeAssignable({
|
||||||
projects: [
|
projects: [
|
||||||
// projects can be globs or objects
|
// projects can be globs or objects
|
||||||
'./src/**',
|
'./src/**',
|
||||||
|
@ -41,79 +126,5 @@ expectAssignable<Config.InitialOptions>({
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
const doNotFake: Array<Config.FakeableAPI> = [
|
|
||||||
'Date',
|
|
||||||
'hrtime',
|
|
||||||
'nextTick',
|
|
||||||
'performance',
|
|
||||||
'queueMicrotask',
|
|
||||||
'requestAnimationFrame',
|
|
||||||
'cancelAnimationFrame',
|
|
||||||
'requestIdleCallback',
|
|
||||||
'cancelIdleCallback',
|
|
||||||
'setImmediate',
|
|
||||||
'clearImmediate',
|
|
||||||
'setInterval',
|
|
||||||
'clearInterval',
|
|
||||||
'setTimeout',
|
|
||||||
'clearTimeout',
|
|
||||||
];
|
|
||||||
|
|
||||||
expectAssignable<Config.InitialOptions>({
|
|
||||||
fakeTimers: {
|
|
||||||
advanceTimers: true,
|
|
||||||
doNotFake,
|
|
||||||
enableGlobally: true,
|
|
||||||
now: 1_483_228_800_000,
|
|
||||||
timerLimit: 1000,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expectAssignable<Config.InitialOptions>({
|
|
||||||
fakeTimers: {
|
|
||||||
advanceTimers: 40,
|
|
||||||
now: Date.now(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
expectNotAssignable<Config.InitialOptions>({
|
|
||||||
fakeTimers: {
|
|
||||||
now: new Date(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
expectAssignable<Config.InitialOptions>({
|
|
||||||
fakeTimers: {
|
|
||||||
enableGlobally: true,
|
|
||||||
legacyFakeTimers: true as const,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
expectNotAssignable<Config.InitialOptions>({
|
|
||||||
fakeTimers: {
|
|
||||||
advanceTimers: true,
|
|
||||||
legacyFakeTimers: true as const,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
expectNotAssignable<Config.InitialOptions>({
|
|
||||||
fakeTimers: {
|
|
||||||
doNotFake,
|
|
||||||
legacyFakeTimers: true as const,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
expectNotAssignable<Config.InitialOptions>({
|
|
||||||
fakeTimers: {
|
|
||||||
legacyFakeTimers: true as const,
|
|
||||||
now: 1_483_228_800_000,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
expectNotAssignable<Config.InitialOptions>({
|
|
||||||
fakeTimers: {
|
|
||||||
legacyFakeTimers: true as const,
|
|
||||||
timerLimit: 1000,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"testFileMatch": ["**/packages/jest-types/__typetests__/config.test.ts"]
|
||||||
|
}
|
15
yarn.lock
15
yarn.lock
|
@ -3067,6 +3067,7 @@ __metadata:
|
||||||
strip-json-comments: ^3.1.1
|
strip-json-comments: ^3.1.1
|
||||||
tempy: ^1.0.0
|
tempy: ^1.0.0
|
||||||
ts-node: ^10.5.0
|
ts-node: ^10.5.0
|
||||||
|
tstyche: ^1.0.0-beta.6
|
||||||
typescript: ^5.0.4
|
typescript: ^5.0.4
|
||||||
webpack: ^5.68.0
|
webpack: ^5.68.0
|
||||||
webpack-node-externals: ^3.0.0
|
webpack-node-externals: ^3.0.0
|
||||||
|
@ -21161,6 +21162,20 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"tstyche@npm:^1.0.0-beta.6":
|
||||||
|
version: 1.0.0-beta.6
|
||||||
|
resolution: "tstyche@npm:1.0.0-beta.6"
|
||||||
|
peerDependencies:
|
||||||
|
typescript: 4.x || 5.x
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
bin:
|
||||||
|
tstyche: ./build/bin.js
|
||||||
|
checksum: 197ef69d05b8a82f5d0d4a618ed36102d906badb537712d4399387f2ed822b076d37d8a4c2b8e2d13582fb733d0737794b6789a4635bde23bd41f520ddb8c337
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"tsutils@npm:^3.21.0":
|
"tsutils@npm:^3.21.0":
|
||||||
version: 3.21.0
|
version: 3.21.0
|
||||||
resolution: "tsutils@npm:3.21.0"
|
resolution: "tsutils@npm:3.21.0"
|
||||||
|
|
Loading…
Reference in New Issue