Skip to content

Commit

Permalink
Improve Jest phabricator plugin (jestjs#4195)
Browse files Browse the repository at this point in the history
  • Loading branch information
mjesun authored and cpojer committed Aug 4, 2017
1 parent da8c8ca commit 50cf6f9
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 36 deletions.
2 changes: 1 addition & 1 deletion packages/jest-phabricator/example/JestUnitTestEngine.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ private function getFutureResults($future) {
$raw_results = json_decode(
Filesystem::readFile($output_JSON),
true
)['phabricatorReport'];
)['coverageMap'];
Filesystem::remove($output_JSON);
} else {
$raw_results = json_decode($stdout, true);
Expand Down
41 changes: 8 additions & 33 deletions packages/jest-phabricator/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,14 @@

import type {
AggregatedResult,
AggregatedResultWithoutCoverage,
CoverageMap,
FormattedTestResult,
} from 'types/TestResult';

type PhabricatorReport = AggregatedResult & {
phabricatorReport: Array<FormattedTestResult>,
type PhabricatorReport = AggregatedResultWithoutCoverage & {
coverageMap?: ?{[string]: string},
};

import {formatTestResults} from 'jest-util';

function summarize(coverageMap: CoverageMap) {
const summaries = Object.create(null);

Expand All @@ -29,8 +27,7 @@ function summarize(coverageMap: CoverageMap) {
Object.keys(lineCoverage).forEach(lineNumber => {
// Line numbers start at one
const number = parseInt(lineNumber, 10) - 1;
const visited = !!lineCoverage[lineNumber];
covered[number] = visited ? 'C' : 'U';
covered[number] = lineCoverage[lineNumber] ? 'C' : 'U';
});

for (let i = 0; i < covered.length; i++) {
Expand All @@ -46,30 +43,8 @@ function summarize(coverageMap: CoverageMap) {
}

module.exports = function(results: AggregatedResult): PhabricatorReport {
const coverageMap = results.coverageMap && summarize(results.coverageMap);

const formatter = (coverage, reporter) => coverageMap;
const report = formatTestResults(results, formatter);

return {
aggregatedResult: results,
// Remove the coverageMap here as it uses a lot of memory.
coverageMap: null,
formattedTestResults: report.testResults,
numFailedTestSuites: results.numFailedTestSuites,
numFailedTests: results.numFailedTests,
numPassedTestSuites: results.numPassedTestSuites,
numPassedTests: results.numPassedTests,
numPendingTestSuites: results.numPendingTestSuites,
numPendingTests: results.numPendingTests,
numRuntimeErrorTestSuites: results.numRuntimeErrorTestSuites,
numTotalTestSuites: results.numTotalTestSuites,
numTotalTests: results.numTotalTests,
phabricatorReport: report.testResults,
snapshot: results.snapshot,
startTime: results.startTime,
success: results.success,
testResults: results.testResults,
wasInterrupted: results.wasInterrupted,
};
// $FlowFixMe: This should work, but it does not.
return Object.assign({}, results, {
coverageMap: results.coverageMap && summarize(results.coverageMap),
});
};
7 changes: 5 additions & 2 deletions types/TestResult.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,7 @@ export type FormattedAssertionResult = {
failureMessages: Array<string> | null,
};

export type AggregatedResult = {
coverageMap?: ?CoverageMap,
export type AggregatedResultWithoutCoverage = {
numFailedTests: number,
numFailedTestSuites: number,
numPassedTests: number,
Expand All @@ -117,6 +116,10 @@ export type AggregatedResult = {
wasInterrupted: boolean,
};

export type AggregatedResult = AggregatedResultWithoutCoverage & {
coverageMap?: ?CoverageMap,
};

export type Suite = {|
title: string,
suites: Array<Suite>,
Expand Down

0 comments on commit 50cf6f9

Please sign in to comment.