* Update dependencies * Ignore snapshot fixture due to churn * Remove errant log * Update GHA actions * Test type definition with TS 5.3 * Select latest LTS in Volta * Remove unnecessary npx invocation * Rebuild lockfile * Work around legacy tap-based tests choking on our tsconfig.json No idea why it's even resolving the config when there are no TypeScript tests to run.
100 lines
2.7 KiB
YAML
100 lines
2.7 KiB
YAML
name: Install and test AVA
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
paths-ignore:
|
|
- "*.md"
|
|
- "docs/**"
|
|
- "media/**"
|
|
jobs:
|
|
nodejs:
|
|
name: Node.js
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node-version: [^18.18, ^20.8, ^21]
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Enable symlinks
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
git config core.symlinks true
|
|
git reset --hard
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: npm
|
|
- run: npm install --no-audit
|
|
- run: ./scripts/ci.sh
|
|
shell: bash
|
|
- uses: codecov/codecov-action@v3
|
|
with:
|
|
files: coverage/lcov.info
|
|
name: ${{ matrix.os }}/${{ matrix.node-version }}
|
|
|
|
typescript:
|
|
name: TypeScript compatibility
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
ts-version: [~5.2, ~5.3]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: package.json
|
|
cache: npm
|
|
- run: npm install --no-audit
|
|
- run: npm i typescript@${TS_VERSION}
|
|
env:
|
|
TS_VERSION: ${{ matrix.ts-version }}
|
|
- run: ./node_modules/typescript/bin/tsc --version
|
|
- run: ./node_modules/typescript/bin/tsc --noEmit
|
|
|
|
lockfile_churn:
|
|
name: Test package-lock for unexpected modifications
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: package.json
|
|
cache: npm
|
|
- run: npm install --no-audit
|
|
- name: Test package-lock for unexpected modifications
|
|
run: |
|
|
npm -v
|
|
checksum=$(sha512sum package-lock.json)
|
|
npm install --package-lock-only --no-audit
|
|
if ! echo ${checksum} | sha512sum --quiet -c -; then
|
|
echo "package-lock.json was modified unexpectedly. Please rebuild it using npm@$(npm -v) and commit the changes."
|
|
exit 1
|
|
fi
|
|
|
|
without_lockfile:
|
|
name: Install dependencies without using a lockfile
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: package.json
|
|
- run: npm install --no-package-lock --no-audit
|
|
- run: ./scripts/ci.sh
|
|
shell: bash
|
|
|
|
xo:
|
|
name: Lint source files
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: package.json
|
|
cache: npm
|
|
- run: npm install --no-audit
|
|
- run: npx xo
|