forked from LadybirdBrowser/ladybird
-
Notifications
You must be signed in to change notification settings - Fork 0
156 lines (134 loc) · 5.91 KB
/
libjs-test262.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: Run test262 and test-wasm
on: [push]
env:
LADYBIRD_SOURCE_DIR: ${{ github.workspace }}
VCPKG_ROOT: ${{ github.workspace }}/Toolchain/Tarballs/vcpkg
jobs:
run_and_update_results:
runs-on: self-hosted
if: always() && github.repository == 'LadybirdBrowser/ladybird' && github.ref == 'refs/heads/master'
concurrency: libjs-test262
steps:
- name: Cleanup
run: |
echo "Cleaning up previous run"
rm -rf "${{ github.workspace }}/*"
- name: Checkout LadybirdBrowser/ladybird
uses: actions/checkout@v4
- name: Checkout LadybirdBrowser/libjs-test262
uses: actions/checkout@v4
with:
repository: LadybirdBrowser/libjs-test262
path: libjs-test262
- name: Checkout LadybirdBrowser/libjs-data
uses: actions/checkout@v4
with:
repository: LadybirdBrowser/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 curl zip tar autoconf autoconf-archive automake nasm pkg-config libgl1-mesa-dev rsync
test -e /opt/wabt-1.0.35 || (
cd /tmp
wget https://github.com/WebAssembly/wabt/releases/download/1.0.35/wabt-1.0.35-ubuntu-20.04.tar.gz
sudo tar xf wabt-1.0.35-ubuntu-20.04.tar.gz -C /opt
rm wabt-1.0.35-ubuntu-20.04.tar.gz
)
# FIXME: Just use the setup action
./Toolchain/BuildVcpkg.sh --ci
- 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
run: |
# FIXME: Why does vcpkg need this?
# Running as a normal user would make this a non-issue though
export HOME=${{ github.workspace }}/home
mkdir -p $HOME
env PATH="/opt/wabt-1.0.35/bin:$PATH" \
CC=gcc-13 \
CXX=g++-13 \
cmake --preset CI -B libjs-test262/Build \
-DCMAKE_C_COMPILER=gcc-13 \
-DCMAKE_CXX_COMPILER=g++-13 \
-DWASM_SPEC_TEST_SKIP_FORMATTING=ON \
-DINCLUDE_WASM_SPEC_TESTS=ON \
-DENABLE_GUI_TARGETS=OFF
ninja -C libjs-test262/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/Lagom/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: LadybirdBot
git-config-email: [email protected]
branch: master
repository-name: LadybirdBrowser/libjs-data
token: ${{ secrets.LADYBIRD_BOT_TOKEN }}
folder: libjs-data