From 3daecc62df25fd675705d8e05524560b52aaddd7 Mon Sep 17 00:00:00 2001 From: jyunhan Date: Tue, 20 Oct 2020 16:13:40 +0800 Subject: [PATCH] fix(expect): `objectContaining` should recurse into sub-objects (#10508) --- .../__snapshots__/v8Coverage.test.ts.snap | 9 +++++++++ e2e/__tests__/v8Coverage.test.ts | 11 +++++++++++ e2e/v8-coverage/no-sourcemap/package.json | 3 +-- .../__tests__/extract-coverage.test.js | 18 ++++++++++++++++++ e2e/vmscript-coverage/package.json | 6 ++++++ e2e/vmscript-coverage/package/vmscript.js | 15 +++++++++++++++ e2e/vmscript-coverage/yarn.lock | 11 +++++++++++ packages/jest-runtime/src/index.ts | 1 - 8 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 e2e/vmscript-coverage/__tests__/extract-coverage.test.js create mode 100644 e2e/vmscript-coverage/package.json create mode 100644 e2e/vmscript-coverage/package/vmscript.js create mode 100644 e2e/vmscript-coverage/yarn.lock diff --git a/e2e/__tests__/__snapshots__/v8Coverage.test.ts.snap b/e2e/__tests__/__snapshots__/v8Coverage.test.ts.snap index a3fabf97c9d7..891216b6a8ff 100644 --- a/e2e/__tests__/__snapshots__/v8Coverage.test.ts.snap +++ b/e2e/__tests__/__snapshots__/v8Coverage.test.ts.snap @@ -14,3 +14,12 @@ All files | 100 | 100 | 100 | 100 | x.css | 100 | 100 | 100 | 100 | ----------|---------|----------|---------|---------|-------------------" `; + +exports[`on node >=10 vm script coverage generater 1`] = ` +"-------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-------------|---------|----------|---------|---------|------------------- +All files | 100 | 100 | 100 | 100 | + vmscript.js | 100 | 100 | 100 | 100 | +-------------|---------|----------|---------|---------|-------------------" +`; diff --git a/e2e/__tests__/v8Coverage.test.ts b/e2e/__tests__/v8Coverage.test.ts index 902d324aab10..062201bc35f2 100644 --- a/e2e/__tests__/v8Coverage.test.ts +++ b/e2e/__tests__/v8Coverage.test.ts @@ -9,6 +9,9 @@ import * as path from 'path'; import {onNodeVersions} from '@jest/test-utils'; import runJest from '../runJest'; +// import {wrap} from 'jest-snapshot-serializer-raw'; +// import {runYarn} from '../Utils'; + const DIR = path.resolve(__dirname, '../v8-coverage'); onNodeVersions('>=10', () => { @@ -26,4 +29,12 @@ onNodeVersions('>=10', () => { expect(exitCode).toBe(0); expect(stdout).toMatchSnapshot(); }); + + test('vm script coverage generater', () => { + const dir = path.resolve(__dirname, '../vmscript-coverage'); + const {stdout, exitCode} = runJest(dir, ['--coverage', '--coverage-provider', 'v8'], { stripAnsi: true }); + + expect(exitCode).toBe(0); + expect(stdout).toMatchSnapshot(); + }); }); diff --git a/e2e/v8-coverage/no-sourcemap/package.json b/e2e/v8-coverage/no-sourcemap/package.json index e63e40a94614..8ab5e321426b 100644 --- a/e2e/v8-coverage/no-sourcemap/package.json +++ b/e2e/v8-coverage/no-sourcemap/package.json @@ -4,8 +4,7 @@ "jest": { "testEnvironment": "node", "transform": { - "\\.[jt]sx?$": "babel-jest", - "\\.css$": "/cssTransform.js" + "\\.[jt]sx?$": "babel-jest" } } } diff --git a/e2e/vmscript-coverage/__tests__/extract-coverage.test.js b/e2e/vmscript-coverage/__tests__/extract-coverage.test.js new file mode 100644 index 000000000000..1ecde97a368f --- /dev/null +++ b/e2e/vmscript-coverage/__tests__/extract-coverage.test.js @@ -0,0 +1,18 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +const vm = require('vm'); +const path = require('path'); +const fs = require('fs'); +const filePath = path.resolve(__dirname, '../package/vmscript.js'); + +test('extract coverage', () => { + const content = fs.readFileSync(filePath, {encoding: 'utf8'}); + const result1 = vm.runInNewContext(content,{inputObject: { number: 0 },console}, {filename: filePath}); + const result2 = vm.runInNewContext(content,{inputObject: { number: 7 },console}, {filename: filePath}); + expect(result1).toBe(false) + expect(result2).toBe(true) +}); diff --git a/e2e/vmscript-coverage/package.json b/e2e/vmscript-coverage/package.json new file mode 100644 index 000000000000..c3ca3ea1d928 --- /dev/null +++ b/e2e/vmscript-coverage/package.json @@ -0,0 +1,6 @@ +{ + "jest": { + "rootDir": "./", + "testEnvironment": "node" + } +} diff --git a/e2e/vmscript-coverage/package/vmscript.js b/e2e/vmscript-coverage/package/vmscript.js new file mode 100644 index 000000000000..fd39e8db5ae0 --- /dev/null +++ b/e2e/vmscript-coverage/package/vmscript.js @@ -0,0 +1,15 @@ +function addOne(inputNumber) { + return ++inputNumber +} + +function isEvan(inputNumber) { + if (inputNumber % 2 === 0) { + return true + } else { + return false + } +} + +if (!!inputObject) { + result = isEvan(addOne(inputObject.number)) +} \ No newline at end of file diff --git a/e2e/vmscript-coverage/yarn.lock b/e2e/vmscript-coverage/yarn.lock new file mode 100644 index 000000000000..00246b971113 --- /dev/null +++ b/e2e/vmscript-coverage/yarn.lock @@ -0,0 +1,11 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 4 + +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + languageName: unknown + linkType: soft diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index b19b0dbf1cce..0e718c89fb87 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -827,7 +827,6 @@ class Runtime { res => // TODO: will this work on windows? It might be better if `shouldInstrument` deals with it anyways res.url.startsWith(this._config.rootDir) && - this._fileTransforms.has(res.url) && shouldInstrument(res.url, this._coverageOptions, this._config), ) .map(result => {