mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
18ee6e457d
This version now natively supports read-only caches (`cache/restore@v3`) so we no longer need to pin the version to a commit in actions/cache#489 which is an unmerged PR. The update is mostly mechanical: - Steps with `CACHE_SKIP_SAVE` not set can use the plain `cache@v3` action. - Steps with `CACHE_SKIP_SAVE` set to a constant `true` are changed to `cache/restore@v3`. - Steps with saving disabled when running on a pull request are changed to a pair of `cache/restore@v3` and `cache/save@v3`. This setup is used for the large (100s of MB) ccache and Toolchain caches. As caches saved in pull requests can only be utilized from within the same PR, uploading these would only waste time and our storage quote. Therefore, we skip the `save` steps if running on a PR. Co-authored-by: Cameron Youell <cameronyouell@gmail.com>
180 lines
7.1 KiB
YAML
180 lines
7.1 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@v3
|
|
|
|
- name: Checkout linusg/libjs-test262
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: linusg/libjs-test262
|
|
path: libjs-test262
|
|
|
|
- name: Checkout linusg/libjs-website
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: linusg/libjs-website
|
|
path: libjs-website
|
|
|
|
- name: Checkout tc39/test262
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: tc39/test262
|
|
path: test262
|
|
|
|
- name: Checkout tc39/test262-parser-tests
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: tc39/test262-parser-tests
|
|
path: test262-parser-tests
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ninja-build unzip gcc-12 g++-12 jq wget
|
|
test -e /opt/wabt-1.0.27 || (
|
|
cd /tmp
|
|
wget https://github.com/WebAssembly/wabt/releases/download/1.0.27/wabt-1.0.27-ubuntu.tar.gz
|
|
sudo tar xf wabt-1.0.27-ubuntu.tar.gz -C /opt
|
|
rm wabt-1.0.27-ubuntu.tar.gz
|
|
)
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.x'
|
|
|
|
- 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++-12 --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
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ github.workspace }}/libjs-test262/Build/TZDB
|
|
key: TimeZoneData-${{ hashFiles('Meta/CMake/time_zone_data.cmake') }}
|
|
|
|
- name: UnicodeData cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ github.workspace }}/libjs-test262/Build/UCD
|
|
key: UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}
|
|
|
|
- name: UnicodeLocale cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ github.workspace }}/libjs-test262/Build/CLDR
|
|
key: UnicodeLocale-${{ hashFiles('Meta/CMake/locale_data.cmake') }}
|
|
|
|
- name: Build test262-runner, test-js and test-wasm
|
|
working-directory: libjs-test262
|
|
run: |
|
|
cd Build
|
|
env PATH="/opt/wabt-1.0.27/bin:$PATH" \
|
|
cmake -GNinja -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12 -DWASM_SPEC_TEST_SKIP_FORMATTING=ON -DINCLUDE_WASM_SPEC_TESTS=ON -DSERENITY_SOURCE_DIR=${{ env.SERENITY_SOURCE_DIR }} ..
|
|
ninja test262-runner test-js test-wasm
|
|
|
|
- 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 .
|
|
cp -f ../libjs-website/test262/data/per-file-bytecode-optimized-master.json .
|
|
cp -f ../libjs-website/wasm/data/per-file-master.json wasm-per-file-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 \
|
|
--per-file-bytecode-optimized-output ../libjs-website/test262/data/per-file-bytecode-optimized-master.json
|
|
|
|
- name: Run test-wasm
|
|
working-directory: libjs-test262/Build
|
|
run: |
|
|
_deps/lagom-build/test-wasm --per-file _deps/lagom-build/Userland/Libraries/LibWasm/Tests > ../../libjs-website/wasm/data/per-file-master.json || true
|
|
jq -nc -f /dev/stdin <<-EOF --slurpfile previous ../../libjs-website/wasm/data/results.json --slurpfile details ../../libjs-website/wasm/data/per-file-master.json > wasm-new-results.json
|
|
\$details[0] as \$details | \$previous[0] + [{
|
|
"commit_timestamp": $(git -C ../.. log -1 --format=%ct),
|
|
"run_timestamp": $(date +%s),
|
|
"versions": {
|
|
"serenity": "$(git -C ../.. rev-parse HEAD)"
|
|
},
|
|
"tests": {
|
|
"spectest": {
|
|
"duration": (\$details.duration),
|
|
"results": {
|
|
"total": (\$details.results | keys | length),
|
|
"passed": ([\$details.results | values[] | select(. == "PASSED")] | length),
|
|
"failed": ([\$details.results | values[] | select(. == "FAILED")] | length),
|
|
"skipped": ([\$details.results | values[] | select(. == "SKIPPED")] | length),
|
|
"process_error": ([\$details.results | values[] | select(. == "PROCESS_ERROR")] | length)
|
|
}
|
|
}
|
|
}
|
|
}]
|
|
EOF
|
|
mv wasm-new-results.json ../../libjs-website/wasm/data/results.json
|
|
|
|
- name: Deploy to GitHub pages
|
|
uses: JamesIves/github-pages-deploy-action@v4.4.1
|
|
with:
|
|
git-config-name: BuggieBot
|
|
git-config-email: buggiebot@serenityos.org
|
|
branch: main
|
|
repository-name: linusg/libjs-website
|
|
token: ${{ secrets.BUGGIEBOT_TOKEN }}
|
|
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: Compare optimized bytecode
|
|
continue-on-error: true
|
|
working-directory: libjs-test262
|
|
run: ./per_file_result_diff.py -o per-file-bytecode-optimized-master.json -n ../libjs-website/test262/data/per-file-bytecode-optimized-master.json
|
|
|
|
- name: Compare wasm
|
|
continue-on-error: true
|
|
working-directory: libjs-test262
|
|
run: ./per_file_result_diff.py -o wasm-per-file-master.json -n ../libjs-website/wasm/data/per-file-master.json
|