diff --git a/babel.config.js b/babel.config.js index e3a840c0600f..1b7ec83a43ec 100644 --- a/babel.config.js +++ b/babel.config.js @@ -3,10 +3,6 @@ module.exports = { babelrcRoots: ['examples/*'], overrides: [ - { - presets: ['@babel/preset-flow'], - test: '**/*.js', - }, { plugins: [ 'babel-plugin-typescript-strip-namespaces', diff --git a/e2e/__tests__/coverageReport.test.ts b/e2e/__tests__/coverageReport.test.ts index f7dee0950d78..c825769aa33f 100644 --- a/e2e/__tests__/coverageReport.test.ts +++ b/e2e/__tests__/coverageReport.test.ts @@ -8,11 +8,15 @@ import fs from 'fs'; import path from 'path'; import {wrap} from 'jest-snapshot-serializer-raw'; -import {extractSummary} from '../Utils'; +import {extractSummary, run} from '../Utils'; import runJest from '../runJest'; const DIR = path.resolve(__dirname, '../coverage-report'); +beforeAll(() => { + run('yarn', DIR); +}); + test('outputs coverage report', () => { const {stdout, status} = runJest(DIR, ['--no-cache', '--coverage'], { stripAnsi: true, diff --git a/e2e/__tests__/expectAsyncMatcher.test.ts b/e2e/__tests__/expectAsyncMatcher.test.ts index 069314da4573..3e8d3a489bc4 100644 --- a/e2e/__tests__/expectAsyncMatcher.test.ts +++ b/e2e/__tests__/expectAsyncMatcher.test.ts @@ -8,9 +8,14 @@ import path from 'path'; import {wrap} from 'jest-snapshot-serializer-raw'; import runJest from '../runJest'; -import {extractSummary} from '../Utils'; +import {extractSummary, run} from '../Utils'; + const dir = path.resolve(__dirname, '../expect-async-matcher'); +beforeAll(() => { + run('yarn', dir); +}); + test('works with passing tests', () => { const result = runJest(dir, ['success.test.js']); expect(result.status).toBe(0); diff --git a/e2e/__tests__/failures.test.ts b/e2e/__tests__/failures.test.ts index ab266460509b..926bc7e15b55 100644 --- a/e2e/__tests__/failures.test.ts +++ b/e2e/__tests__/failures.test.ts @@ -7,7 +7,7 @@ import path from 'path'; import {wrap} from 'jest-snapshot-serializer-raw'; -import {extractSummary} from '../Utils'; +import {extractSummary, run} from '../Utils'; import runJest from '../runJest'; const dir = path.resolve(__dirname, '../failures'); @@ -21,6 +21,10 @@ function cleanStderr(stderr: string) { .replace(new RegExp('Failed: Object {', 'g'), 'thrown: Object {'); } +beforeAll(() => { + run('yarn', dir); +}); + test('not throwing Error objects', () => { let stderr; stderr = runJest(dir, ['throwNumber.test.js']).stderr; diff --git a/e2e/__tests__/globalSetup.test.ts b/e2e/__tests__/globalSetup.test.ts index 021f6c4e5719..6340fbd9a788 100644 --- a/e2e/__tests__/globalSetup.test.ts +++ b/e2e/__tests__/globalSetup.test.ts @@ -10,7 +10,7 @@ import fs from 'fs'; import os from 'os'; import path from 'path'; import runJest, {json as runWithJson} from '../runJest'; -import {cleanup} from '../Utils'; +import {cleanup, run} from '../Utils'; const DIR = path.join(os.tmpdir(), 'jest-global-setup'); const project1DIR = path.join(os.tmpdir(), 'jest-global-setup-project-1'); @@ -20,6 +20,11 @@ const customTransformDIR = path.join( 'jest-global-setup-custom-transform', ); const nodeModulesDIR = path.join(os.tmpdir(), 'jest-global-setup-node-modules'); +const e2eDir = path.resolve(__dirname, '../global-setup'); + +beforeAll(() => { + run('yarn', e2eDir); +}); beforeEach(() => { cleanup(DIR); @@ -37,8 +42,8 @@ afterAll(() => { }); test('globalSetup is triggered once before all test suites', () => { - const setupPath = path.resolve(__dirname, '../global-setup/setup.js'); - const result = runWithJson('global-setup', [ + const setupPath = path.join(e2eDir, 'setup.js'); + const result = runWithJson(e2eDir, [ `--globalSetup=${setupPath}`, `--testPathPattern=__tests__`, ]); @@ -52,7 +57,7 @@ test('globalSetup is triggered once before all test suites', () => { test('jest throws an error when globalSetup does not export a function', () => { const setupPath = path.resolve(__dirname, '../global-setup/invalidSetup.js'); - const {status, stderr} = runJest('global-setup', [ + const {status, stderr} = runJest(e2eDir, [ `--globalSetup=${setupPath}`, `--testPathPattern=__tests__`, ]); @@ -64,14 +69,11 @@ test('jest throws an error when globalSetup does not export a function', () => { }); test('globalSetup function gets jest config object as a parameter', () => { - const setupPath = path.resolve( - __dirname, - '../global-setup/setupWithConfig.js', - ); + const setupPath = path.resolve(e2eDir, 'setupWithConfig.js'); const testPathPattern = 'pass'; - const result = runJest('global-setup', [ + const result = runJest(e2eDir, [ `--globalSetup=${setupPath}`, `--testPathPattern=${testPathPattern}`, ]); @@ -80,12 +82,9 @@ test('globalSetup function gets jest config object as a parameter', () => { }); test('should call globalSetup function of multiple projects', () => { - const configPath = path.resolve( - __dirname, - '../global-setup/projects.jest.config.js', - ); + const configPath = path.resolve(e2eDir, 'projects.jest.config.js'); - const result = runWithJson('global-setup', [`--config=${configPath}`]); + const result = runWithJson(e2eDir, [`--config=${configPath}`]); expect(result.status).toBe(0); @@ -95,12 +94,9 @@ test('should call globalSetup function of multiple projects', () => { }); test('should not call a globalSetup of a project if there are no tests to run from this project', () => { - const configPath = path.resolve( - __dirname, - '../global-setup/projects.jest.config.js', - ); + const configPath = path.resolve(e2eDir, 'projects.jest.config.js'); - const result = runWithJson('global-setup', [ + const result = runWithJson(e2eDir, [ `--config=${configPath}`, '--testPathPattern=project-1', ]); @@ -113,12 +109,9 @@ test('should not call a globalSetup of a project if there are no tests to run fr }); test('should not call any globalSetup if there are no tests to run', () => { - const configPath = path.resolve( - __dirname, - '../global-setup/projects.jest.config.js', - ); + const configPath = path.resolve(e2eDir, 'projects.jest.config.js'); - const result = runWithJson('global-setup', [ + const result = runWithJson(e2eDir, [ `--config=${configPath}`, // onlyChanged ensures there are no tests to run '--onlyChanged', @@ -132,14 +125,11 @@ test('should not call any globalSetup if there are no tests to run', () => { }); test('globalSetup works with default export', () => { - const setupPath = path.resolve( - __dirname, - '../global-setup/setupWithDefaultExport.js', - ); + const setupPath = path.resolve(e2eDir, 'setupWithDefaultExport.js'); const testPathPattern = 'pass'; - const result = runJest('global-setup', [ + const result = runJest(e2eDir, [ `--globalSetup=${setupPath}`, `--testPathPattern=${testPathPattern}`, ]); @@ -148,12 +138,9 @@ test('globalSetup works with default export', () => { }); test('globalSetup throws with named export', () => { - const setupPath = path.resolve( - __dirname, - '../global-setup/invalidSetupWithNamedExport.js', - ); + const setupPath = path.resolve(e2eDir, 'invalidSetupWithNamedExport.js'); - const {status, stderr} = runJest('global-setup', [ + const {status, stderr} = runJest(e2eDir, [ `--globalSetup=${setupPath}`, `--testPathPattern=__tests__`, ]); diff --git a/e2e/__tests__/globalTeardown.test.ts b/e2e/__tests__/globalTeardown.test.ts index 64690de23c86..8ecc361dfb65 100644 --- a/e2e/__tests__/globalTeardown.test.ts +++ b/e2e/__tests__/globalTeardown.test.ts @@ -11,11 +11,16 @@ import os from 'os'; import path from 'path'; import {createDirectory} from 'jest-util'; import runJest, {json as runWithJson} from '../runJest'; -import {cleanup} from '../Utils'; +import {cleanup, run} from '../Utils'; const DIR = path.join(os.tmpdir(), 'jest-global-teardown'); const project1DIR = path.join(os.tmpdir(), 'jest-global-teardown-project-1'); const project2DIR = path.join(os.tmpdir(), 'jest-global-teardown-project-2'); +const e2eDir = path.resolve(__dirname, '../global-teardown'); + +beforeAll(() => { + run('yarn', e2eDir); +}); beforeEach(() => { cleanup(DIR); @@ -30,10 +35,7 @@ afterAll(() => { test('globalTeardown is triggered once after all test suites', () => { createDirectory(DIR); - const teardownPath = path.resolve( - __dirname, - '../global-teardown/teardown.js', - ); + const teardownPath = path.resolve(e2eDir, 'teardown.js'); const result = runWithJson('global-teardown', [ `--globalTeardown=${teardownPath}`, `--testPathPattern=__tests__`, @@ -47,11 +49,8 @@ test('globalTeardown is triggered once after all test suites', () => { }); test('jest throws an error when globalTeardown does not export a function', () => { - const teardownPath = path.resolve( - __dirname, - '../global-teardown/invalidTeardown.js', - ); - const {status, stderr} = runJest('global-teardown', [ + const teardownPath = path.resolve(e2eDir, 'invalidTeardown.js'); + const {status, stderr} = runJest(e2eDir, [ `--globalTeardown=${teardownPath}`, `--testPathPattern=__tests__`, ]); @@ -63,14 +62,11 @@ test('jest throws an error when globalTeardown does not export a function', () = }); test('globalTeardown function gets jest config object as a parameter', () => { - const teardownPath = path.resolve( - __dirname, - '../global-teardown/teardownWithConfig.js', - ); + const teardownPath = path.resolve(e2eDir, 'teardownWithConfig.js'); const testPathPattern = 'pass'; - const result = runJest('global-teardown', [ + const result = runJest(e2eDir, [ `--globalTeardown=${teardownPath}`, `--testPathPattern=${testPathPattern}`, ]); @@ -79,10 +75,7 @@ test('globalTeardown function gets jest config object as a parameter', () => { }); test('should call globalTeardown function of multiple projects', () => { - const configPath = path.resolve( - __dirname, - '../global-teardown/projects.jest.config.js', - ); + const configPath = path.resolve(e2eDir, 'projects.jest.config.js'); const result = runWithJson('global-teardown', [`--config=${configPath}`]); @@ -94,10 +87,7 @@ test('should call globalTeardown function of multiple projects', () => { }); test('should not call a globalTeardown of a project if there are no tests to run from this project', () => { - const configPath = path.resolve( - __dirname, - '../global-teardown/projects.jest.config.js', - ); + const configPath = path.resolve(e2eDir, 'projects.jest.config.js'); const result = runWithJson('global-teardown', [ `--config=${configPath}`, @@ -112,14 +102,11 @@ test('should not call a globalTeardown of a project if there are no tests to run }); test('globalTeardown works with default export', () => { - const teardownPath = path.resolve( - __dirname, - '../global-teardown/teardownWithDefaultExport.js', - ); + const teardownPath = path.resolve(e2eDir, 'teardownWithDefaultExport.js'); const testPathPattern = 'pass'; - const result = runJest('global-teardown', [ + const result = runJest(e2eDir, [ `--globalTeardown=${teardownPath}`, `--testPathPattern=${testPathPattern}`, ]); @@ -129,11 +116,11 @@ test('globalTeardown works with default export', () => { test('globalTeardown throws with named export', () => { const teardownPath = path.resolve( - __dirname, - '../global-teardown/invalidTeardownWithNamedExport.js', + e2eDir, + 'invalidTeardownWithNamedExport.js', ); - const {status, stderr} = runJest('global-teardown', [ + const {status, stderr} = runJest(e2eDir, [ `--globalTeardown=${teardownPath}`, `--testPathPattern=__tests__`, ]); diff --git a/e2e/coverage-report/package.json b/e2e/coverage-report/package.json index 4ced9148e930..604a68da7151 100644 --- a/e2e/coverage-report/package.json +++ b/e2e/coverage-report/package.json @@ -11,5 +11,8 @@ "setupFiles": [ "/setup.js" ] + }, + "devDependencies": { + "@babel/preset-flow": "^7.0.0" } } diff --git a/e2e/coverage-report/yarn.lock b/e2e/coverage-report/yarn.lock new file mode 100644 index 000000000000..3a3ca6b43081 --- /dev/null +++ b/e2e/coverage-report/yarn.lock @@ -0,0 +1,31 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" + integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/preset-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" diff --git a/e2e/expect-async-matcher/babel.config.js b/e2e/expect-async-matcher/babel.config.js index 7ec52588d4a4..bf18fc5ce74e 100644 --- a/e2e/expect-async-matcher/babel.config.js +++ b/e2e/expect-async-matcher/babel.config.js @@ -1,3 +1,7 @@ // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. -module.exports = require('../../babel.config'); +const baseConfig = require('../../babel.config'); + +module.exports = Object.assign({}, baseConfig, { + presets: baseConfig.presets.concat('@babel/preset-flow'), +}); diff --git a/e2e/expect-async-matcher/package.json b/e2e/expect-async-matcher/package.json index 148788b25446..8c4fa847a6cc 100644 --- a/e2e/expect-async-matcher/package.json +++ b/e2e/expect-async-matcher/package.json @@ -1,5 +1,8 @@ { "jest": { "testEnvironment": "node" + }, + "devDependencies": { + "@babel/preset-flow": "^7.0.0" } } diff --git a/e2e/expect-async-matcher/yarn.lock b/e2e/expect-async-matcher/yarn.lock new file mode 100644 index 000000000000..3a3ca6b43081 --- /dev/null +++ b/e2e/expect-async-matcher/yarn.lock @@ -0,0 +1,31 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" + integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/preset-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" diff --git a/e2e/failures/babel.config.js b/e2e/failures/babel.config.js index 7ec52588d4a4..bf18fc5ce74e 100644 --- a/e2e/failures/babel.config.js +++ b/e2e/failures/babel.config.js @@ -1,3 +1,7 @@ // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. -module.exports = require('../../babel.config'); +const baseConfig = require('../../babel.config'); + +module.exports = Object.assign({}, baseConfig, { + presets: baseConfig.presets.concat('@babel/preset-flow'), +}); diff --git a/e2e/failures/package.json b/e2e/failures/package.json index 148788b25446..8c4fa847a6cc 100644 --- a/e2e/failures/package.json +++ b/e2e/failures/package.json @@ -1,5 +1,8 @@ { "jest": { "testEnvironment": "node" + }, + "devDependencies": { + "@babel/preset-flow": "^7.0.0" } } diff --git a/e2e/failures/yarn.lock b/e2e/failures/yarn.lock new file mode 100644 index 000000000000..3a3ca6b43081 --- /dev/null +++ b/e2e/failures/yarn.lock @@ -0,0 +1,31 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" + integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/preset-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" diff --git a/e2e/global-setup/package.json b/e2e/global-setup/package.json index 3dc54e8651bf..ba6eb171d1a9 100644 --- a/e2e/global-setup/package.json +++ b/e2e/global-setup/package.json @@ -5,5 +5,8 @@ "/node_modules/", "/packages/" ] + }, + "devDependencies": { + "@babel/preset-flow": "^7.0.0" } } diff --git a/e2e/global-setup/yarn.lock b/e2e/global-setup/yarn.lock new file mode 100644 index 000000000000..3a3ca6b43081 --- /dev/null +++ b/e2e/global-setup/yarn.lock @@ -0,0 +1,31 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" + integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/preset-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" diff --git a/e2e/global-teardown/package.json b/e2e/global-teardown/package.json index 3dc54e8651bf..ba6eb171d1a9 100644 --- a/e2e/global-teardown/package.json +++ b/e2e/global-teardown/package.json @@ -5,5 +5,8 @@ "/node_modules/", "/packages/" ] + }, + "devDependencies": { + "@babel/preset-flow": "^7.0.0" } } diff --git a/e2e/global-teardown/yarn.lock b/e2e/global-teardown/yarn.lock new file mode 100644 index 000000000000..3a3ca6b43081 --- /dev/null +++ b/e2e/global-teardown/yarn.lock @@ -0,0 +1,31 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" + integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/preset-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" diff --git a/package.json b/package.json index 097f17103657..0a01255e6978 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "@babel/plugin-transform-modules-commonjs": "^7.1.0", "@babel/plugin-transform-strict-mode": "^7.0.0", "@babel/preset-env": "^7.1.0", - "@babel/preset-flow": "^7.0.0", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.0.0", "@babel/register": "^7.0.0", diff --git a/packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.js.snap b/packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.ts.snap similarity index 100% rename from packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.js.snap rename to packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.ts.snap diff --git a/packages/expect/src/__tests__/asymmetricMatchers.test.js b/packages/expect/src/__tests__/asymmetricMatchers.test.ts similarity index 98% rename from packages/expect/src/__tests__/asymmetricMatchers.test.js rename to packages/expect/src/__tests__/asymmetricMatchers.test.ts index f0166e38d04b..71fdbe66ded1 100644 --- a/packages/expect/src/__tests__/asymmetricMatchers.test.js +++ b/packages/expect/src/__tests__/asymmetricMatchers.test.ts @@ -6,10 +6,9 @@ * */ -'use strict'; +import jestExpect from '../'; -const jestExpect = require('../'); -const { +import { any, anything, arrayContaining, @@ -17,13 +16,13 @@ const { objectContaining, objectNotContaining, stringContaining, - stringNotContaining, stringMatching, + stringNotContaining, stringNotMatching, -} = require('../asymmetricMatchers'); +} from '../asymmetricMatchers'; test('Any.asymmetricMatch()', () => { - const Thing = function() {}; + class Thing {} [ any(String).asymmetricMatch('jest'), @@ -78,7 +77,7 @@ test('Any.toAsymmetricMatcher() with function name', () => { return $someFuncWithFakeToString; })(), ], - ].forEach(([name, fn]: [string, any]) => { + ].forEach(([name, fn]) => { jestExpect(any(fn).toAsymmetricMatcher()).toBe(`Any<${name}>`); }); }); diff --git a/packages/expect/src/__tests__/toThrowMatchers.test.js b/packages/expect/src/__tests__/toThrowMatchers.test.ts similarity index 91% rename from packages/expect/src/__tests__/toThrowMatchers.test.js rename to packages/expect/src/__tests__/toThrowMatchers.test.ts index 3c723369aecf..5586d13657d9 100644 --- a/packages/expect/src/__tests__/toThrowMatchers.test.js +++ b/packages/expect/src/__tests__/toThrowMatchers.test.ts @@ -5,15 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -'use strict'; - -const jestExpect = require('../'); +import jestExpect from '../'; // Custom Error class because node versions have different stack trace strings. -class customError extends Error { - constructor(message) { - super(); - this.message = message; +class CustomError extends Error { + constructor(message?: string) { + super(message); this.name = 'Error'; this.stack = 'Error\n' + @@ -22,14 +19,17 @@ class customError extends Error { } } -['toThrowError', 'toThrow'].forEach(toThrow => { +// `as const` needs newer babel which explodes on node 6 +const matchers: ['toThrowError', 'toThrow'] = ['toThrowError', 'toThrow']; + +matchers.forEach(toThrow => { describe(toThrow, () => { - class Err extends customError {} - class Err2 extends customError {} + class Err extends CustomError {} + class Err2 extends CustomError {} test('to throw or not to throw', () => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow](); jestExpect(() => {}).not[toThrow](); }); @@ -37,10 +37,10 @@ class customError extends Error { describe('substring', () => { it('passes', () => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow]('apple'); jestExpect(() => { - throw new customError('banana'); + throw new CustomError('banana'); }).not[toThrow]('apple'); jestExpect(() => {}).not[toThrow]('apple'); }); @@ -54,7 +54,7 @@ class customError extends Error { test('threw, but message did not match (error)', () => { expect(() => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow]('banana'); }).toThrowErrorMatchingSnapshot(); }); @@ -77,7 +77,7 @@ class customError extends Error { test('threw, but message should not match (error)', () => { expect(() => { jestExpect(() => { - throw new customError('Invalid array length'); + throw new CustomError('Invalid array length'); }).not[toThrow]('array'); }).toThrowErrorMatchingSnapshot(); }); @@ -95,10 +95,10 @@ class customError extends Error { describe('regexp', () => { it('passes', () => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow](/apple/); jestExpect(() => { - throw new customError('banana'); + throw new CustomError('banana'); }).not[toThrow](/apple/); jestExpect(() => {}).not[toThrow](/apple/); }); @@ -112,7 +112,7 @@ class customError extends Error { test('threw, but message did not match (error)', () => { expect(() => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow](/banana/); }).toThrowErrorMatchingSnapshot(); }); @@ -129,7 +129,7 @@ class customError extends Error { test('threw, but message should not match (error)', () => { expect(() => { jestExpect(() => { - throw new customError('Invalid array length'); + throw new CustomError('Invalid array length'); }).not[toThrow](/ array /); }).toThrowErrorMatchingSnapshot(); }); @@ -146,8 +146,8 @@ class customError extends Error { describe('error class', () => { class SubErr extends Err { - constructor(...args) { - super(...args); + constructor(message?: string) { + super(message); // In a carefully written error subclass, // name property is equal to constructor name. this.name = this.constructor.name; @@ -155,8 +155,8 @@ class customError extends Error { } class SubSubErr extends SubErr { - constructor(...args) { - super(...args); + constructor(message?: string) { + super(message); // In a carefully written error subclass, // name property is equal to constructor name. this.name = this.constructor.name; @@ -169,7 +169,7 @@ class customError extends Error { })[toThrow](Err); jestExpect(() => { throw new Err(); - })[toThrow](customError); + })[toThrow](CustomError); jestExpect(() => { throw new Err(); }).not[toThrow](Err2); @@ -320,7 +320,7 @@ class customError extends Error { describe('pass', () => { test('isNot false', () => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow](expect.anything()); }); @@ -346,7 +346,7 @@ class customError extends Error { test('isNot true', () => { expect(() => jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); }).not[toThrow](expect.anything()), ).toThrowErrorMatchingSnapshot(); }); @@ -357,7 +357,7 @@ class customError extends Error { // Test serialization of asymmetric matcher which has no property: // this.$$typeof = Symbol.for('jest.asymmetricMatcher') const matchError = { - asymmetricMatch(received) { + asymmetricMatch(received: Error | null | undefined) { return ( received !== null && received !== undefined && @@ -366,7 +366,7 @@ class customError extends Error { }, }; const matchNotError = { - asymmetricMatch(received) { + asymmetricMatch(received: Error | null | undefined) { return ( received !== null && received !== undefined && @@ -378,13 +378,13 @@ class customError extends Error { describe('pass', () => { test('isNot false', () => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow](matchError); }); test('isNot true', () => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); }).not[toThrow](matchNotError); }); }); @@ -393,7 +393,7 @@ class customError extends Error { test('isNot false', () => { expect(() => jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow](matchNotError), ).toThrowErrorMatchingSnapshot(); }); @@ -401,7 +401,7 @@ class customError extends Error { test('isNot true', () => { expect(() => jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); }).not[toThrow](matchError), ).toThrowErrorMatchingSnapshot(); }); @@ -419,13 +419,13 @@ class customError extends Error { describe('pass', () => { test('isNot false', () => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow](matchError); }); test('isNot true', () => { jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); }).not[toThrow](matchNotError); }); }); @@ -434,7 +434,7 @@ class customError extends Error { test('isNot false', () => { expect(() => jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); })[toThrow](matchNotError), ).toThrowErrorMatchingSnapshot(); }); @@ -442,7 +442,7 @@ class customError extends Error { test('isNot true', () => { expect(() => jestExpect(() => { - throw new customError('apple'); + throw new CustomError('apple'); }).not[toThrow](matchError), ).toThrowErrorMatchingSnapshot(); }); diff --git a/packages/jest-validate/src/__tests__/__snapshots__/validate.test.js.snap b/packages/jest-validate/src/__tests__/__snapshots__/validate.test.ts.snap similarity index 98% rename from packages/jest-validate/src/__tests__/__snapshots__/validate.test.js.snap rename to packages/jest-validate/src/__tests__/__snapshots__/validate.test.ts.snap index 5b92cbe4f751..5834cb065fdc 100644 --- a/packages/jest-validate/src/__tests__/__snapshots__/validate.test.js.snap +++ b/packages/jest-validate/src/__tests__/__snapshots__/validate.test.ts.snap @@ -94,7 +94,7 @@ exports[`pretty prints valid config for Function 1`] = ` Example: { - \\"fn\\": (config, option, deprecatedOptions) => true + \\"fn\\": (_config, _option, _deprecatedOptions) => true } " `; diff --git a/packages/jest-validate/src/__tests__/fixtures/jestConfig.js b/packages/jest-validate/src/__tests__/fixtures/jestConfig.ts similarity index 95% rename from packages/jest-validate/src/__tests__/fixtures/jestConfig.js rename to packages/jest-validate/src/__tests__/fixtures/jestConfig.ts index 607ad3f53c84..bd84bca1bf35 100644 --- a/packages/jest-validate/src/__tests__/fixtures/jestConfig.js +++ b/packages/jest-validate/src/__tests__/fixtures/jestConfig.ts @@ -3,13 +3,12 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - * - * @flow */ -const os = require('os'); -const path = require('path'); -const chalk = require('chalk'); +import os from 'os'; +import path from 'path'; +import chalk from 'chalk'; + const NODE_MODULES = path.sep + 'node_modules' + path.sep; const replacePathSepForRegex = (string: string) => { if (path.sep === '\\') { @@ -134,7 +133,7 @@ const validConfig = { const format = (value: string) => require('pretty-format')(value, {min: true}); const deprecatedConfig = { - preprocessorIgnorePatterns: (config: Object) => + preprocessorIgnorePatterns: (config: Record) => ` Option ${chalk.bold( 'preprocessorIgnorePatterns', )} was replaced by ${chalk.bold( @@ -150,7 +149,7 @@ const deprecatedConfig = { Please update your configuration.`, - scriptPreprocessor: (config: Object) => + scriptPreprocessor: (config: Record) => ` Option ${chalk.bold('scriptPreprocessor')} was replaced by ${chalk.bold( 'transform', )}, which support multiple preprocessors. diff --git a/packages/jest-validate/src/__tests__/validate.test.js b/packages/jest-validate/src/__tests__/validate.test.ts similarity index 97% rename from packages/jest-validate/src/__tests__/validate.test.js rename to packages/jest-validate/src/__tests__/validate.test.ts index 936ab1ae9b7f..fa83731159c6 100644 --- a/packages/jest-validate/src/__tests__/validate.test.js +++ b/packages/jest-validate/src/__tests__/validate.test.ts @@ -6,8 +6,6 @@ * */ -'use strict'; - import validate from '../validate'; import {multipleValidOptions} from '../condition'; import jestValidateExampleConfig from '../exampleConfig'; @@ -56,7 +54,7 @@ test.each([ test(`pretty prints valid config for Function`, () => { const config = {fn: 'test'}; - const validConfig = {fn: (config, option, deprecatedOptions) => true}; + const validConfig = {fn: (_config, _option, _deprecatedOptions) => true}; expect(() => validate(config, { exampleConfig: validConfig, @@ -294,7 +292,7 @@ test('Comments in config JSON using "//" key are not warned', () => { validate(config, { exampleConfig: validConfig, - recursiveBlacklist: [('myCustomKey': "don't validate this")], + recursiveBlacklist: ['myCustomKey' as "don't validate this"], }); expect(console.warn).not.toBeCalled(); diff --git a/yarn.lock b/yarn.lock index 300fe7317a4c..cc59dfb88153 100644 --- a/yarn.lock +++ b/yarn.lock @@ -793,14 +793,6 @@ js-levenshtein "^1.1.3" semver "^5.3.0" -"@babel/preset-flow@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" - integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/preset-react@*", "@babel/preset-react@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0"