From e9fcdc1c3b6a370d6a2d57c0205796fe2c52af9b Mon Sep 17 00:00:00 2001 From: Phillip Johnsen Date: Sun, 3 Jan 2021 12:18:56 +0100 Subject: [PATCH] Build ESM -> CJS before running legacy Node.js tests and packaging tests Because the source code is written in ESM syntax and we cannot use the `esm` package to make `require()` ESM compatible, since that package does not support legacy versions of Node.js. Also in our usage tests in CI, we need to mimck the npm packaging behaviour where building is involved. --- .github/workflows/usage.yml | 36 ++++++++++++++++++++++++++++++++++++ .github/workflows/verify.yml | 26 ++++++++++++++++++++++++++ package.json | 3 ++- 3 files changed, 64 insertions(+), 1 deletion(-) diff --git a/.github/workflows/usage.yml b/.github/workflows/usage.yml index 5608b2e..75d68ff 100644 --- a/.github/workflows/usage.yml +++ b/.github/workflows/usage.yml @@ -3,15 +3,41 @@ name: Package usage on: [push, pull_request] jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 14.x + - name: npm install and build + run: | + npm install + npm run build + - name: Store build-output for later + uses: actions/upload-artifact@v2 + with: + name: build-output + path: | + mustache.js + mustache.mjs + package: runs-on: ubuntu-latest + needs: build steps: - uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 14.x + - name: Get build-output from build step + uses: actions/download-artifact@v2 + with: + name: build-output - name: Create package tarball run: | export ARCHIVE_FILENAME=$(npm pack | tail -n 1) @@ -71,12 +97,17 @@ jobs: browser-usage: runs-on: ubuntu-latest + needs: build steps: - uses: actions/checkout@v1 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 12.x + - name: Get build-output from build step + uses: actions/download-artifact@v2 + with: + name: build-output - name: Install and test run: | npm ci @@ -85,10 +116,15 @@ jobs: deno-usage: runs-on: ubuntu-latest + needs: build steps: - uses: actions/checkout@v1 - uses: denolib/setup-deno@master with: deno-version: 'v1.0.0' + - name: Get build-output from build step + uses: actions/download-artifact@v2 + with: + name: build-output - run: deno --version - run: deno test --allow-net=deno.land test/module-systems/deno-test.ts diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 8a42589..0a86a51 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -35,6 +35,27 @@ jobs: npm install npm run test-unit + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 14.x + - name: npm install and build + run: | + npm install + npm run build + - name: Store build-output for later + uses: actions/upload-artifact@v2 + with: + name: build-output + path: | + mustache.js + mustache.mjs + tests-on-legacy: runs-on: ubuntu-latest @@ -42,6 +63,7 @@ jobs: matrix: node-version: [0.10.x, 0.12.x, 4.x, 6.x, 8.x] + needs: build steps: - uses: actions/checkout@v2 with: @@ -50,6 +72,10 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} + - name: Get build-output from build step + uses: actions/download-artifact@v2 + with: + name: build-output - name: npm install and test run: | npm install mocha@3 chai@3 diff --git a/package.json b/package.json index 48d672c..f5dda06 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "pre-test-browser": "node test/create-browser-suite.js", "test-browser": "npm run pre-test-browser && zuul -- test/context-test.js test/parse-test.js test/scanner-test.js test/render-test-browser.js", "test-browser-local": "npm run pre-test-browser && zuul --local 8080 -- test/context-test.js test/scanner-test.js test/parse-test.js test/render-test-browser.js", - "postversion": "scripts/bump-version-in-source" + "postversion": "scripts/bump-version-in-source", + "prepublishOnly": "npm run build" }, "devDependencies": { "chai": "^3.4.0",