120 lines
3.6 KiB
YAML
120 lines
3.6 KiB
YAML
name: EcmaScript official test suite (test262)
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
tags:
|
|
- v*
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
run_test262:
|
|
name: Run the test262 test suite
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout the repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
path: boa
|
|
- name: Install the Rust toolchain
|
|
uses: actions-rs/toolchain@v1.0.7
|
|
with:
|
|
toolchain: stable
|
|
override: true
|
|
profile: minimal
|
|
- name: Cache cargo
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
target
|
|
~/.cargo/git
|
|
~/.cargo/registry
|
|
key: ${{ runner.os }}-cargo-test262-${{ hashFiles('**/Cargo.lock') }}
|
|
|
|
# Run the test suite and upload the results
|
|
- name: Checkout GitHub pages
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: gh-pages
|
|
path: gh-pages
|
|
|
|
- name: Run the test262 test suite
|
|
run: |
|
|
cd boa
|
|
mkdir ../results
|
|
cargo run --release --bin boa_tester -- run -v -o ../results/test262
|
|
cd ..
|
|
|
|
# Run the results comparison
|
|
- name: Compare results
|
|
if: github.event_name == 'pull_request'
|
|
id: compare-non-vm
|
|
shell: bash
|
|
run: |
|
|
cd boa
|
|
comment="$(./target/release/boa_tester compare ../gh-pages/test262/refs/heads/main/latest.json ../results/test262/pull/latest.json -m)"
|
|
comment="${comment//'%'/'%25'}"
|
|
comment="${comment//$'\n'/'%0A'}"
|
|
comment="${comment//$'\r'/'%0D'}"
|
|
echo "::set-output name=comment::$comment"
|
|
|
|
- name: Get the PR number
|
|
if: github.event_name == 'pull_request'
|
|
id: pr-number
|
|
uses: kkak10/pr-number-action@v1.3
|
|
|
|
- name: Find Previous Comment
|
|
if: github.event_name == 'pull_request'
|
|
uses: peter-evans/find-comment@v2
|
|
id: previous-comment
|
|
with:
|
|
issue-number: ${{ steps.pr-number.outputs.pr }}
|
|
body-includes: Test262 conformance changes
|
|
|
|
- name: Update comment
|
|
if: github.event_name == 'pull_request' && steps.previous-comment.outputs.comment-id
|
|
uses: peter-evans/create-or-update-comment@v2
|
|
continue-on-error: true
|
|
with:
|
|
comment-id: ${{ steps.previous-comment.outputs.comment-id }}
|
|
body: |
|
|
### Test262 conformance changes
|
|
|
|
${{ steps.compare-non-vm.outputs.comment }}
|
|
${{ steps.compare-vm.outputs.comment }}
|
|
edit-mode: replace
|
|
|
|
- name: Write a new comment
|
|
if: github.event_name == 'pull_request' && !steps.previous-comment.outputs.comment-id
|
|
uses: peter-evans/create-or-update-comment@v2
|
|
continue-on-error: true
|
|
with:
|
|
issue-number: ${{ steps.pr-number.outputs.pr }}
|
|
body: |
|
|
### Test262 conformance changes
|
|
|
|
${{ steps.compare-non-vm.outputs.comment }}
|
|
${{ steps.compare-vm.outputs.comment }}
|
|
|
|
# Commit changes to GitHub pages.
|
|
- name: Commit files
|
|
if: github.event_name == 'push'
|
|
run: |
|
|
cp -r ./results/test262/* ./gh-pages/test262/
|
|
cd gh-pages
|
|
git config --local user.email "action@github.com"
|
|
git config --local user.name "GitHub Action"
|
|
git add test262
|
|
git commit -m "Add new test262 results" -a
|
|
cd ..
|
|
- name: Upload results
|
|
if: github.event_name == 'push'
|
|
uses: ad-m/github-push-action@v0.6.0
|
|
with:
|
|
directory: gh-pages
|
|
branch: gh-pages
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|