Check that generated compat-data is up to date on CI (#11024)

This commit is contained in:
Nicolò Ribaudo 2020-01-20 01:42:47 +01:00 committed by GitHub
parent de75dbf2a0
commit 2b23c283dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 7 deletions

View File

@ -101,7 +101,7 @@ bootstrap-flowcheck: bootstrap-only
$(YARN) gulp build-babel-types
$(MAKE) build-typings
lint-ci: lint-js-ci lint-ts-ci
lint-ci: lint-js-ci lint-ts-ci check-compat-data
lint-js-ci: bootstrap-only
$(MAKE) lint-js
@ -125,6 +125,12 @@ fix-js:
fix-json:
$(YARN) prettier "{$(COMMA_SEPARATED_SOURCES)}/*/test/fixtures/**/options.json" --write --loglevel warn
check-compat-data:
cd packages/babel-compat-data; CHECK_COMPAT_DATA=true $(YARN) run build-data
build-compat-data:
cd packages/babel-compat-data; $(YARN) run build-data
clean: test-clean
rm -f .npmrc
rm -rf packages/babel-polyfill/browser*

View File

@ -4,7 +4,6 @@ const fs = require("fs");
const path = require("path");
const semver = require("semver");
const flattenDeep = require("lodash/flattenDeep");
const isEqual = require("lodash/isEqual");
const mapValues = require("lodash/mapValues");
const pickBy = require("lodash/pickBy");
const { unreleasedLabels } = require("@babel/helper-compilation-targets");
@ -297,18 +296,20 @@ for (const target of ["plugin", "corejs2-built-in"]) {
);
const dataPath = path.join(__dirname, `../data/${target}s.json`);
if (process.argv[2] === "--check") {
const currentData = require(dataPath);
const stringified = JSON.stringify(newData, null, 2) + "\n";
if (process.env.CHECK_COMPAT_DATA) {
const currentData = fs.readFileSync(dataPath, "utf8");
if (!isEqual(currentData, newData)) {
// Compare as JSON strings to also check keys ordering
if (currentData !== stringified) {
console.error(
"The newly generated plugin/built-in data does not match the current " +
"files. Re-run `npm run build-data`."
"files. Re-run `make build-compat-data`."
);
process.exitCode = 1;
break;
}
} else {
fs.writeFileSync(dataPath, `${JSON.stringify(newData, null, 2)}\n`);
fs.writeFileSync(dataPath, stringified);
}
}