Skip to content

Keep the outer link on a parked Function-constructor environment #3020

Keep the outer link on a parked Function-constructor environment

Keep the outer link on a parked Function-constructor environment #3020

Workflow file for this run

name: PR
on:
# Deliberately no "branches:" filter. That filter matches a pull request's *base*, so restricting
# it to main and 3.x silently skipped CI on every layer of a stacked pull request except the
# bottom one - the upper layers base on the branch below them, not on main, and showed "no checks
# reported" until GitHub retargeted them at merge time. Running on every pull request costs a
# little more CI on the rare cross-branch PR and makes a stack reviewable.
pull_request:
env:
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: 1
concurrency:
group: ${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
test:
name: ${{ matrix.os.name }}
strategy:
fail-fast: false
matrix:
os:
- { name: 'linux', image: 'ubuntu-latest' }
- { name: 'linux - ARM', image: 'ubuntu-24.04-arm' }
- { name: 'windows', image: 'windows-latest' }
- { name: 'macos', image: 'macos-latest' }
runs-on: ${{ matrix.os.image }}
steps:
- name: Setup NET
uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0
- name: Checkout source code
uses: actions/checkout@v7
- name: Cache Test262 generated suite
uses: actions/cache@v6
with:
path: Jint.Tests.Test262/Generated
key: test262-generated-${{ hashFiles('Jint.Tests.Test262/Test262Harness.settings.json') }}
# The generated suite is pure codegen (identical on every OS), so share one cache across
# platforms. Without this, only the Build workflow (Linux) ever seeds the cache and the
# Windows/macOS/ARM jobs regenerate the whole suite on every run.
enableCrossOsArchive: true
- name: Test
run: dotnet test --configuration Release --logger "console;verbosity=quiet" --logger "GitHubActions;summary-include-passed=false;summary-include-skipped=false"
# The matrix above is the shipped configuration: Release with host-contract verification off, which is what
# the probe-count and no-descriptor pins in Jint.Tests.PublicInterface document as costing nothing. This leg
# is the other one an embedder is told to use — the shipped Release package with
# Jint.EnableHostContractVerification set — so that a verifier which misbehaves under the Release JIT, or a
# gating bug, fails here rather than in someone's integration suite. One OS is enough: the verifiers are
# platform-independent, and the switch is set the same way everywhere.
test-release-verification:
name: 'linux - host-contract verification'
runs-on: ubuntu-latest
env:
JINT_HOST_CONTRACT_VERIFICATION: 1
steps:
- name: Setup NET
uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0
- name: Checkout source code
uses: actions/checkout@v7
- name: Test Jint.Tests
run: dotnet test Jint.Tests/Jint.Tests.csproj --configuration Release --logger "console;verbosity=quiet" --logger "GitHubActions;summary-include-passed=false;summary-include-skipped=false"
- name: Test Jint.Tests.PublicInterface
run: dotnet test Jint.Tests.PublicInterface/Jint.Tests.PublicInterface.csproj --configuration Release --logger "console;verbosity=quiet" --logger "GitHubActions;summary-include-passed=false;summary-include-skipped=false"