From a65079f10ac8af657428951270fa4bfeb7ef72b4 Mon Sep 17 00:00:00 2001 From: Huafu Gandon Date: Fri, 3 Aug 2018 08:48:41 +0200 Subject: [PATCH] fix: allow (but deprecate) use of old preprocessor.js --- preprocessor.js | 7 +++++++ scripts/tests.js | 7 +++++++ .../deprecated-transform.spec.ts.snap | 3 +++ tests/__tests__/deprecated-transform.spec.ts | 14 ++++++++++++++ tests/deprecated-transform/Hello.ts | 3 +++ tests/deprecated-transform/__tests__/Hello.test.ts | 10 ++++++++++ tests/deprecated-transform/package.json | 9 +++++++++ tests/deprecated-transform/tsconfig.json | 5 +++++ 8 files changed, 58 insertions(+) create mode 100644 preprocessor.js create mode 100644 tests/__tests__/__snapshots__/deprecated-transform.spec.ts.snap create mode 100644 tests/__tests__/deprecated-transform.spec.ts create mode 100644 tests/deprecated-transform/Hello.ts create mode 100644 tests/deprecated-transform/__tests__/Hello.test.ts create mode 100644 tests/deprecated-transform/package.json create mode 100644 tests/deprecated-transform/tsconfig.json diff --git a/preprocessor.js b/preprocessor.js new file mode 100644 index 0000000000..8e78f37f2e --- /dev/null +++ b/preprocessor.js @@ -0,0 +1,7 @@ +console.warn( + `[ts-jest][DEPRECATED] - replace any occurrences to "ts-jest/dist/preprocessor.js" or ` + + ` "/node_modules/ts-jest/preprocessor.js"` + + ` in the 'transform' section of your Jest config with just "ts-jest".` +); + +module.exports = require('./dist'); diff --git a/scripts/tests.js b/scripts/tests.js index a06cdf7bb3..86532ce067 100644 --- a/scripts/tests.js +++ b/scripts/tests.js @@ -39,6 +39,13 @@ function createIntegrationMock() { path.resolve(testCaseModuleFolder, 'package.json') ); + // TODO: remove this in next major version as well as the test, and the preprocessor.js file in root + // Copy preprocessor.js + fs.copySync( + path.resolve(rootDir, 'preprocessor.js'), + path.resolve(testCaseModuleFolder, 'preprocessor.js') + ); + // Copy dist folder fs.copySync( path.resolve(rootDir, 'dist'), diff --git a/tests/__tests__/__snapshots__/deprecated-transform.spec.ts.snap b/tests/__tests__/__snapshots__/deprecated-transform.spec.ts.snap new file mode 100644 index 0000000000..31be5d4641 --- /dev/null +++ b/tests/__tests__/__snapshots__/deprecated-transform.spec.ts.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Deprecated Jest transform value should log the depration message 1`] = `"[ts-jest][DEPRECATED] - replace any occurrences to \\"ts-jest/dist/preprocessor.js\\" or \\"/node_modules/ts-jest/preprocessor.js\\" in the 'transform' section of your Jest config with just \\"ts-jest\\"."`; diff --git a/tests/__tests__/deprecated-transform.spec.ts b/tests/__tests__/deprecated-transform.spec.ts new file mode 100644 index 0000000000..57877c69ed --- /dev/null +++ b/tests/__tests__/deprecated-transform.spec.ts @@ -0,0 +1,14 @@ +import runJest from '../__helpers__/runJest'; + +describe('Deprecated Jest transform value', () => { + it('should log the depration message', () => { + const result = runJest('../deprecated-transform', ['--no-cache']); + + const output = result.stderr; + + // get only the line with deprecation message (we dont want the snapshot to contain any timing or test name) + const msg = output.split('\n').find(line => /deprecated/i.test(line)); + + expect(msg).toMatchSnapshot(); + }); +}); diff --git a/tests/deprecated-transform/Hello.ts b/tests/deprecated-transform/Hello.ts new file mode 100644 index 0000000000..a6f54b1959 --- /dev/null +++ b/tests/deprecated-transform/Hello.ts @@ -0,0 +1,3 @@ +export class Hello { + constructor(readonly msg: string) {} +} diff --git a/tests/deprecated-transform/__tests__/Hello.test.ts b/tests/deprecated-transform/__tests__/Hello.test.ts new file mode 100644 index 0000000000..3fa7381daa --- /dev/null +++ b/tests/deprecated-transform/__tests__/Hello.test.ts @@ -0,0 +1,10 @@ +declare var jest, describe, it, expect; + +import { Hello } from '../Hello'; + +describe('Hello Class', () => { + it('should create a new Hello', () => { + const hello = new Hello('foo'); + expect(hello.msg).toBe('foo'); + }); +}); diff --git a/tests/deprecated-transform/package.json b/tests/deprecated-transform/package.json new file mode 100644 index 0000000000..19890f12ba --- /dev/null +++ b/tests/deprecated-transform/package.json @@ -0,0 +1,9 @@ +{ + "jest": { + "transform": { + "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js" + }, + "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", + "moduleFileExtensions": ["ts", "js"] + } +} diff --git a/tests/deprecated-transform/tsconfig.json b/tests/deprecated-transform/tsconfig.json new file mode 100644 index 0000000000..215e9fd521 --- /dev/null +++ b/tests/deprecated-transform/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "target": "es5", + } +}