CASSNODEJS-12: Deno and Bun support #54
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Unit and Integration Tests for Apache Cassandra NodeJS Driver | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: # allow manual trigger from Actions page | |
| permissions: | |
| contents: read | |
| actions: read | |
| checks: write | |
| jobs: | |
| eslint: | |
| name: Run eslint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: "npm" | |
| - run: npm install -g eslint@4 | |
| - run: npm run eslint | |
| typescript: | |
| name: TypeScript generation and compilation tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| NODE_VERSION: ["20", "22", "24"] | |
| TSC_VERSION: ["4.9", "5.9", "6.0"] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.NODE_VERSION }} | |
| cache: "npm" | |
| - run: npm ci | |
| - run: npm install typescript@${{ matrix.TSC_VERSION }} --no-save | |
| - run: | | |
| pushd test/unit/typescript/ | |
| npx tsc | |
| node -e "require('./api-generation-test').generate()" > generated.ts | |
| npx tsc --noEmit | |
| bun-unit-tests: | |
| name: Unit tests on Bun | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/setup-bun | |
| - run: bun install | |
| - run: bunx mocha test/unit --recursive -R spec -t 5000 | |
| deno-unit-tests: | |
| name: Unit tests on Deno | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ./.github/actions/setup-deno | |
| # --allow-scripts runs lifecycle scripts so the kerberos prebuild is fetched. | |
| - run: deno install --allow-scripts=npm:kerberos | |
| - run: deno run -A --unstable-detect-cjs npm:mocha@10.8.2 test/unit --recursive -R spec -t 5000 | |
| unit-integration-tests: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| NODE_VERSION: ["20", "22", "24"] | |
| SERVER_VERSION: ["3.11", "4.0", "4.1", "5.0"] # Cassandra minor versions | |
| fail-fast: false | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up CCM | |
| uses: ./.github/actions/setup-ccm | |
| with: | |
| server-version: ${{ matrix.SERVER_VERSION }} | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.NODE_VERSION }} | |
| cache: "npm" | |
| - name: Run tests | |
| run: | | |
| npm ci | |
| npm install --no-save mocha-multi-reporters mocha-junit-reporter | |
| echo '{ | |
| "reporterEnabled": "spec, mocha-junit-reporter", | |
| "mochaJunitReporterReporterOptions": { | |
| "mochaFile": "test-results/results.xml" | |
| } | |
| }' > config.json | |
| npx mocha test/unit test/integration/short --recursive --exit --reporter mocha-multi-reporters \ | |
| --reporter-options configFile=config.json | |
| - name: Upload Test Results | |
| if: (!cancelled()) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Test Results (Node.js ${{ matrix.NODE_VERSION }}, Cassandra ${{ matrix.SERVER_VERSION }}) | |
| path: test-results/**/* | |
| publish-test-results: | |
| name: "Publish Tests Results" | |
| needs: unit-integration-tests | |
| runs-on: ubuntu-latest | |
| permissions: | |
| checks: write | |
| pull-requests: write | |
| if: (!cancelled()) | |
| steps: | |
| - name: Download Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Publish Test Results | |
| uses: EnricoMi/publish-unit-test-result-action@v2 | |
| with: | |
| files: artifacts/**/*.xml |