AK: Enable format string checking in Clang builds #631
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run test262 and test-wasm | |
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@v4 | |
- name: Checkout SerenityOS/libjs-test262 | |
uses: actions/checkout@v4 | |
with: | |
repository: SerenityOS/libjs-test262 | |
path: libjs-test262 | |
- name: Checkout SerenityOS/libjs-data | |
uses: actions/checkout@v4 | |
with: | |
repository: SerenityOS/libjs-data | |
path: libjs-data | |
- name: Checkout tc39/test262 | |
uses: actions/checkout@v4 | |
with: | |
repository: tc39/test262 | |
path: test262 | |
- name: Checkout tc39/test262-parser-tests | |
uses: actions/checkout@v4 | |
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-13 g++-13 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@v5 | |
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++-13 --version; python --version; python3 --version; ninja --version | |
- name: Restore Caches | |
uses: ./.github/actions/cache-restore | |
with: | |
os: 'Linux' | |
arch: 'Lagom' | |
download_cache_path: ${{ github.workspace }}/libjs-test262/Build/caches | |
- name: Get previous results | |
run: | | |
mkdir -p old-libjs-data | |
cp -R libjs-data/test262 libjs-data/wasm old-libjs-data | |
- name: Build test262-runner, test-js and test-wasm | |
working-directory: libjs-test262 | |
run: | | |
env PATH="/opt/wabt-1.0.27/bin:$PATH" \ | |
cmake -GNinja -B Build \ | |
-DCMAKE_C_COMPILER=gcc-13 \ | |
-DCMAKE_CXX_COMPILER=g++-13 \ | |
-DWASM_SPEC_TEST_SKIP_FORMATTING=ON \ | |
-DINCLUDE_WASM_SPEC_TESTS=ON \ | |
-DSERENITY_SOURCE_DIR=${{ env.SERENITY_SOURCE_DIR }} \ | |
-DSERENITY_CACHE_DIR=Build/caches | |
ninja -C Build test262-runner test-js test-wasm | |
- 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-data/test262/results.json \ | |
--per-file-output ../libjs-data/test262/per-file-master.json | |
- name: Run test-wasm | |
working-directory: libjs-test262 | |
run: | | |
Build/bin/test-wasm --per-file Build/_deps/lagom-build/Userland/Libraries/LibWasm/Tests > ../libjs-data/wasm/per-file-master.json || true | |
jq -nc -f /dev/stdin <<-EOF --slurpfile previous ../libjs-data/wasm/results.json --slurpfile details ../libjs-data/wasm/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-data/wasm/results.json | |
- name: Compare test262 results | |
run: ./libjs-test262/per_file_result_diff.py -o old-libjs-data/test262/per-file-master.json -n libjs-data/test262/per-file-master.json | |
- name: Compare Wasm results | |
run: ./libjs-test262/per_file_result_diff.py -o old-libjs-data/wasm/per-file-master.json -n libjs-data/wasm/per-file-master.json | |
- name: Deploy to GitHub | |
uses: JamesIves/[email protected] | |
with: | |
git-config-name: BuggieBot | |
git-config-email: [email protected] | |
branch: master | |
repository-name: SerenityOS/libjs-data | |
token: ${{ secrets.BUGGIEBOT_TOKEN }} | |
folder: libjs-data |