ladybird/.github/workflows/libjs-test262.yml
Timothy Flynn 3c88749800 CI: Bundle and upload a js(1) release package
To include Serenity's LibJS on test262.report, we will need to integrate
with esvu. Create a .tar.gz with js(1) binary and the Lagom libraries it
it needs to run, and upload that package as a build artifact.
2022-02-09 12:19:56 +03:30

149 lines
5.4 KiB
YAML

name: Run test262 with LibJS and push results to the website repo
on: [push]
env:
SERENITY_SOURCE_DIR: ${{ github.workspace }}
jobs:
run_and_update_results:
runs-on: self-hosted
if: always() && github.repository == 'SerenityOS/serenity' && github.ref == 'refs/heads/master'
concurrency: libjs-test262
steps:
- name: Cleanup
run: |
echo "Cleaning up previous run"
rm -rf "${{ github.workspace }}/*"
- name: Checkout SerenityOS/serenity
uses: actions/checkout@v2
- name: Checkout linusg/libjs-test262
uses: actions/checkout@v2
with:
repository: linusg/libjs-test262
path: libjs-test262
- name: Checkout linusg/libjs-website
uses: actions/checkout@v2
with:
repository: linusg/libjs-website
path: libjs-website
- name: Checkout tc39/test262
uses: actions/checkout@v2
with:
repository: tc39/test262
path: test262
- name: Checkout tc39/test262-parser-tests
uses: actions/checkout@v2
with:
repository: tc39/test262-parser-tests
path: test262-parser-tests
- name: Install dependencies
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y ninja-build unzip gcc-11 g++-11
- name: Setup Python
uses: actions/setup-python@v2
- name: Install Python dependencies
# The setup-python action set default python to python3.x. Note that we are not using system python here.
run: |
python -m pip install --upgrade pip
pip install -r libjs-test262/requirements.txt
- name: Check versions
run: set +e; g++ --version; g++-10 --version; python --version; python3 --version; ninja --version
- name: Create build directory
run: |
mkdir -p libjs-test262/Build/TZDB
mkdir -p libjs-test262/Build/UCD
mkdir -p libjs-test262/Build/CLDR
- name: TimeZoneData cache
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
with:
path: ${{ github.workspace }}/libjs-test262/Build/TZDB
key: TimeZoneData-${{ hashFiles('Meta/CMake/time_zone_data.cmake') }}
- name: UnicodeData cache
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
with:
path: ${{ github.workspace }}/libjs-test262/Build/UCD
key: UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}
- name: UnicodeLocale cache
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
with:
path: ${{ github.workspace }}/libjs-test262/Build/CLDR
key: UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}
- name: Build libjs-test262-runner and test-js
working-directory: libjs-test262
run: |
cd Build
cmake -GNinja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DSERENITY_SOURCE_DIR=${{ env.SERENITY_SOURCE_DIR }} ..
ninja libjs-test262-runner test-js
- name: Get previous results
working-directory: libjs-test262
run: |
cp -f ../libjs-website/test262/data/per-file-master.json .
cp -f ../libjs-website/test262/data/per-file-bytecode-master.json .
- name: Run test262 and test262-parser-tests
working-directory: libjs-test262
run: |
python3 run_all_and_update_results.py \
--serenity .. \
--test262 ../test262 \
--test262-parser-tests ../test262-parser-tests \
--results-json ../libjs-website/test262/data/results.json \
--per-file-output ../libjs-website/test262/data/per-file-master.json \
--per-file-bytecode-output ../libjs-website/test262/data/per-file-bytecode-master.json
- name: Deploy to GitHub pages
uses: JamesIves/github-pages-deploy-action@4.1.1
with:
git-config-name: BuggieBot
git-config-email: buggiebot@serenityos.org
branch: main
repository-name: linusg/libjs-website
token: ${{ secrets.BUGGIEBOT }}
folder: libjs-website
- name: Compare non-bytecode
continue-on-error: true
working-directory: libjs-test262
run: ./per_file_result_diff.py -o per-file-master.json -n ../libjs-website/test262/data/per-file-master.json
- name: Compare bytecode
continue-on-error: true
working-directory: libjs-test262
run: ./per_file_result_diff.py -o per-file-bytecode-master.json -n ../libjs-website/test262/data/per-file-bytecode-master.json
- name: Build and package js
working-directory: libjs-test262/Build
run: |
ninja js
cpack -D CPACK_INSTALL_CMAKE_PROJECTS="$(pwd)/_deps/lagom-build;js;js;/"
- name: Upload js package
uses: actions/upload-artifact@v2
with:
name: serenity-js
path: libjs-test262/Build/serenity-js.tar.gz
retention-days: 7