Skip to content

feat(testing): add context to beforeEach and afterEach hooks #15941

feat(testing): add context to beforeEach and afterEach hooks

feat(testing): add context to beforeEach and afterEach hooks #15941

Workflow file for this run

name: ci
permissions:
contents: write
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
deno:
- v1.x
- v2.x
- canary
os:
- ubuntu-latest
- windows-latest
- macOS-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Deno
uses: denoland/setup-deno@v2
with:
deno-version: ${{ matrix.deno }}
- name: Run tests
run: deno task test
- name: Run timezone-dependent tests
run: |
TZ=Australia/Sydney deno test datetime
TZ=Europe/London deno test datetime
TZ=America/Toronto deno test datetime
if: matrix.os == 'ubuntu-latest'
- name: Type check browser compatible modules
run: deno task test:browser
if: matrix.deno == 'v2.x' && matrix.os == 'ubuntu-latest'
- name: Generate lcov
run: deno task cov:gen
- name: Upload coverage
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
name: ${{ matrix.os }}-${{ matrix.deno }}
- name: Publish dry run
run: deno publish --dry-run
if: matrix.deno == 'canary' && matrix.os == 'ubuntu-latest'
test-node:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
node:
- latest
os:
- ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Deno
uses: denoland/setup-deno@v2
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm install
working-directory: _tools/node_test_runner
- name: Run tests
run: deno task test:node
lint:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up Deno
uses: denoland/setup-deno@v2
with:
deno-version: canary
- name: Format
run: deno fmt --check
- name: Lint
run: deno task lint
- name: Spell-check
uses: crate-ci/typos@master
if: matrix.os == 'ubuntu-latest'
with:
config: ./.github/typos.toml
wasm:
name: wasm
runs-on: ubuntu-latest
strategy:
matrix:
module: [crypto/_wasm]
steps:
- name: Clone repository
uses: actions/checkout@v4
with:
# required to check for changes
fetch-depth: 2
persist-credentials: false
- name: Check for changes
id: source
run: |-
set -o errexit
shopt -s inherit_errexit
declare modifications="$(git diff --name-only HEAD~ -- ${{ matrix.module }})"
declare modified="$([[ "$modifications" ]] && echo true || echo false)"
echo "modified=$modified" >> $GITHUB_OUTPUT
echo "${{ matrix.module }} Wasm source modified in this commit? $modified"
echo "$modifications"
- name: Set up Deno
uses: denoland/setup-deno@v2
if: success() && steps.source.outputs.modified == 'true'
- name: Set up Rust
uses: hecrj/setup-rust-action@v2
if: success() && steps.source.outputs.modified == 'true'
with:
# This must match the version in _wasm/rust-toolchain.toml of the module folder
rust-version: 1.77.2
targets: wasm32-unknown-unknown
components: rustfmt
- name: Rebuild Wasm and verify it hasn't changed
if: success() && steps.source.outputs.modified == 'true'
run: deno task --cwd ${{ matrix.module }} --config deno.json wasmbuild --check