Skip to content

Commit

Permalink
Handle prettier JUnit report generation
Browse files Browse the repository at this point in the history
Fixes #11949
  • Loading branch information
benbraou committed Jan 10, 2018
1 parent af523fe commit 90b58cb
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 12 deletions.
2 changes: 2 additions & 0 deletions .circleci/config.yml
Expand Up @@ -41,6 +41,8 @@ jobs:
ESLINT_OUTPUT: "reports/junit/eslint-results.xml"
FLOW_FORMATTER: "junit"
FLOW_OUTPUT: "reports/junit/flow-results.xml"
PRETTIER_FORMATTER: "junit"
PRETTIER_OUTPUT: "reports/junit/prettier-results.xml"
CHECK_LICENSE_FORMATTER: "junit"
CHECK_LICENSE_OUTPUT: "reports/junit/check_license-results.xml"
CHECK_MODULES_FORMATTER: "junit"
Expand Down
2 changes: 1 addition & 1 deletion scripts/circleci/test_entry_point.sh
Expand Up @@ -7,7 +7,7 @@ set -e
COMMANDS_TO_RUN=()

if [ $((0 % CIRCLE_NODE_TOTAL)) -eq "$CIRCLE_NODE_INDEX" ]; then
COMMANDS_TO_RUN+=('node ./scripts/prettier/index')
COMMANDS_TO_RUN+=("node ./scripts/prettier/index check --formatter=${PRETTIER_FORMATTER} --output=${PRETTIER_OUTPUT}")
COMMANDS_TO_RUN+=("node ./scripts/tasks/flow --formatter=${FLOW_FORMATTER} --output=${FLOW_OUTPUT}")
COMMANDS_TO_RUN+=("node ./scripts/tasks/eslint --formatter=${ESLINT_FORMATTER} --output=${ESLINT_OUTPUT}")
COMMANDS_TO_RUN+=("yarn test --runInBand --testResultsProcessor=${JEST_PROCESSOR}")
Expand Down
59 changes: 48 additions & 11 deletions scripts/prettier/index.js
Expand Up @@ -15,8 +15,15 @@ const prettier = require('prettier');
const fs = require('fs');
const listChangedFiles = require('../shared/listChangedFiles');
const prettierConfigPath = require.resolve('../../.prettierrc');
const {writeReportAsSingleTest} = require('../shared/junitReport');
const {
defaultFormatterConfig,
configFromProcessArgs,
isJUnitMode,
} = require('../shared/formatterConfig');

const mode = process.argv[2] || 'check';

const shouldWrite = mode === 'write' || mode === 'write-changed';
const onlyChanged = mode === 'check-changed' || mode === 'write-changed';

Expand All @@ -28,6 +35,15 @@ const files = glob
.sync('**/*.js', {ignore: '**/node_modules/**'})
.filter(f => !onlyChanged || changedFiles.has(f));

const defaultPrettierFormatterConfig = Object.assign(defaultFormatterConfig(), {
packageName: 'prettier',
});
const prettierConfig = configFromProcessArgs(
defaultPrettierFormatterConfig,
process.argv
);
let junitData = '';

if (!files.length) {
return;
}
Expand All @@ -46,30 +62,51 @@ files.forEach(file => {
} else {
if (!prettier.check(input, options)) {
if (!didWarn) {
console.log(
const announcement =
'\n' +
chalk.red(
` This project uses prettier to format all JavaScript code.\n`
) +
chalk.dim(` Please run `) +
chalk.reset('yarn prettier-all') +
chalk.dim(
` and add changes to files listed below to your commit:`
) +
`\n\n`
);
chalk.red(
` This project uses prettier to format all JavaScript code.\n`
) +
chalk.dim(` Please run `) +
chalk.reset('yarn prettier-all') +
chalk.dim(
` and add changes to files listed below to your commit:`
) +
`\n\n`;
console.log(announcement);
if (isJUnitMode(prettierConfig)) {
junitData += announcement;
}
didWarn = true;
}
console.log(file);
if (isJUnitMode(prettierConfig)) {
junitData += file + '\n';
}
}
}
} catch (error) {
didError = true;
console.log('\n\n' + error.message);
console.log(file);
if (isJUnitMode(prettierConfig)) {
junitData += '\n\n' + error.message;
junitData += file + '\n';
}
}
});

if (didWarn || didError) {
if (isJUnitMode(prettierConfig)) {
console.log(
`Writing a JUnit report for ${prettierConfig.packageName} in: ${
prettierConfig.outputFile
}`
);
writeReportAsSingleTest(
{packageName: prettierConfig.packageName, data: junitData},
prettierConfig.outputFile
);
}
process.exit(1);
}

0 comments on commit 90b58cb

Please sign in to comment.