From 374dca126f8748882370f0207dbd8346492e3ab5 Mon Sep 17 00:00:00 2001 From: Huafu Gandon Date: Thu, 20 Sep 2018 20:42:22 +0200 Subject: [PATCH] fix(compile): js files were never transpiled thru TS Closes #740 --- src/ts-jest-transformer.spec.ts | 59 +++++++++++++++++++++++++++++++-- src/ts-jest-transformer.ts | 2 +- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/ts-jest-transformer.spec.ts b/src/ts-jest-transformer.spec.ts index e9244ad935..2d8ea19c92 100644 --- a/src/ts-jest-transformer.spec.ts +++ b/src/ts-jest-transformer.spec.ts @@ -64,7 +64,7 @@ describe('process', () => { typescript = { options: {} } as any }) - it('should process input without babel', () => { + it('should process ts input without babel', () => { expect(process()).toBe(`ts:${INPUT}`) expect(config.shouldStringifyContent.mock.calls).toMatchInlineSnapshot(` Array [ @@ -83,7 +83,28 @@ Array [ `) }) - it('should process input with babel', () => { + it('should process js input without babel', () => { + typescript.options.allowJs = true + args[1] = '/foo/bar.js' + expect(process()).toBe(`ts:${INPUT}`) + expect(config.shouldStringifyContent.mock.calls).toMatchInlineSnapshot(` +Array [ + Array [ + "/foo/bar.js", + ], +] +`) + expect(config.tsCompiler.compile.mock.calls).toMatchInlineSnapshot(` +Array [ + Array [ + "export default \\"foo\\"", + "/foo/bar.js", + ], +] +`) + }) + + it('should process ts input with babel', () => { babel = { process: jest.fn(s => `babel:${s}`) } expect(process()).toBe(`babel:ts:${INPUT}`) expect(config.shouldStringifyContent.mock.calls).toMatchInlineSnapshot(` @@ -115,6 +136,40 @@ Array [ `) }) + it('should process js input with babel', () => { + typescript.options.allowJs = true + babel = { process: jest.fn(s => `babel:${s}`) } + args[1] = '/foo/bar.js' + expect(process()).toBe(`babel:ts:${INPUT}`) + expect(config.shouldStringifyContent.mock.calls).toMatchInlineSnapshot(` +Array [ + Array [ + "/foo/bar.js", + ], +] +`) + expect(config.babelJestTransformer.process.mock.calls).toMatchInlineSnapshot(` +Array [ + Array [ + "ts:export default \\"foo\\"", + "/foo/bar.js", + Object {}, + Object { + "instrument": false, + }, + ], +] +`) + expect(config.tsCompiler.compile.mock.calls).toMatchInlineSnapshot(` +Array [ + Array [ + "export default \\"foo\\"", + "/foo/bar.js", + ], +] +`) + }) + it('should return stringified version of file', () => { config.shouldStringifyContent.mockImplementation(() => true) expect(process()).toMatchInlineSnapshot(`"module.exports=\\"export default \\\\\\"foo\\\\\\"\\""`) diff --git a/src/ts-jest-transformer.ts b/src/ts-jest-transformer.ts index fa443a6d78..bcbeafa47e 100644 --- a/src/ts-jest-transformer.ts +++ b/src/ts-jest-transformer.ts @@ -111,7 +111,7 @@ export class TsJestTransformer implements jest.Transformer { // we've got a '.js' but the compiler option `allowJs` is not set or set to false this.logger.warn({ fileName: filePath }, interpolate(Errors.GotJsFileButAllowJsFalse, { path: filePath })) result = source - } else if (isTsFile) { + } else if (isJsFile || isTsFile) { // transpile TS code (source maps are included) result = configs.tsCompiler.compile(source, filePath) } else {