From 8339bad72cd534dd553c7dc656561b791b3dba34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 16 Jan 2020 23:49:33 +0100 Subject: [PATCH] Check that generated compat-data is up to date on CI --- Makefile | 8 +++++++- .../babel-compat-data/scripts/build-data.js | 17 ++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index dfe03b547e9c..45693950f8e6 100644 --- a/Makefile +++ b/Makefile @@ -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* diff --git a/packages/babel-compat-data/scripts/build-data.js b/packages/babel-compat-data/scripts/build-data.js index aab44f0fe971..8d7a0d874fc9 100644 --- a/packages/babel-compat-data/scripts/build-data.js +++ b/packages/babel-compat-data/scripts/build-data.js @@ -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,19 +296,19 @@ const generateData = (environments, features) => { ); 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.exit(1); } - - process.exit(0); + } else { + fs.writeFileSync(dataPath, stringified); } - - fs.writeFileSync(dataPath, `${JSON.stringify(newData, null, 2)}\n`); });