From 028a051c2bb32a8886358d58e7a35dc90ffbf13a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 14 Aug 2020 14:20:06 -0400 Subject: [PATCH] Move legacy node version tests to GitHub actions (#11952) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: run node 6 and 8 test on GitHub actions * fix: apply dynamicImportUrlToPath polyfill on publish * Apply hacks unconditionally * try fix highlight issues * address review comments * chore: add test-legacy build env * Update .travis.yml [skip ci] Co-authored-by: Nicolò Ribaudo Co-authored-by: Nicolò Ribaudo --- .github/workflows/ci.yml | 42 ++++++++++++++++++++++++++++++++++ .github/workflows/coverage.yml | 21 ----------------- .travis.yml | 3 +-- babel.config.js | 10 ++++---- 4 files changed, 49 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/coverage.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000000..877c5a9b0d9a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,42 @@ +name: Node CI + +on: [push, pull_request] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Use Node.js latest + uses: actions/setup-node@v2-beta + - name: Generate coverage report + run: | + make -j test-ci-coverage + - name: Upload coverage report + uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + + legacy-node-version-test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [6.x, 8.x] + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Use Node.js latest + uses: actions/setup-node@v2-beta # Build Babel on latest node versions + - name: Build + run: | + BABEL_ENV=test-legacy make -j bootstrap + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2-beta + with: + node-version: ${{ matrix.node-version }} + - name: Test on node.js ${{ matrix.node-version }} + # Hack: --color has supports-color@5 returned true for GitHub CI + # Remove once `chalk` is bumped to 4.0. + run: | + BABEL_ENV=test node ./node_modules/.bin/jest --ci --color diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml deleted file mode 100644 index f50b56856cea..000000000000 --- a/.github/workflows/coverage.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Report Coverage - -on: [push, pull_request] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 - - name: Use Node.js latest - uses: actions/setup-node@v2-beta - with: - node-version: "*" - - name: Generate coverage report - run: | - make -j test-ci-coverage - - name: Upload coverage report - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.travis.yml b/.travis.yml index 0b5f27f648e6..6f060cbcee73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,10 +41,9 @@ matrix: directories: - $HOME/AppData/Local/Temp/chocolatey # Continue node_js matrix - - node_js: "6" - node_js: "12" - node_js: "10" - - node_js: "8" + # Node.js 6 and 8 are tested on GitHub actions - node_js: "node" env: JOB=babel-parser-flow-tests - node_js: "node" diff --git a/babel.config.js b/babel.config.js index db550768d642..f6fb35028752 100644 --- a/babel.config.js +++ b/babel.config.js @@ -17,7 +17,8 @@ module.exports = function (api) { }; const envOpts = Object.assign({}, envOptsNoTargets); - const compileDynamicImport = env === "test" || env === "development"; + const compileDynamicImport = + env === "test" || env === "development" || env === "test-legacy"; let convertESM = true; let ignoreLib = true; @@ -55,6 +56,7 @@ module.exports = function (api) { ); if (env === "rollup") envOpts.targets = { node: nodeVersion }; break; + case "test-legacy": // In test-legacy environment, we build babel on latest node but test on minimum supported legacy versions case "production": // Config during builds before publish. envOpts.targets = { @@ -169,9 +171,9 @@ module.exports = function (api) { // the original absolute path. // NOTE: This plugin must run before @babel/plugin-transform-modules-commonjs, // and assumes that the target is the current node version. -function dynamicImportUrlToPath({ template }) { - const currentNodeSupportsURL = !!require("url").pathToFileURL; - +function dynamicImportUrlToPath({ template, env }) { + const currentNodeSupportsURL = + !!require("url").pathToFileURL && env() !== "test-legacy"; // test-legacy is run on legacy node versions without pathToFileURL support if (currentNodeSupportsURL) { return { visitor: {