-
Notifications
You must be signed in to change notification settings - Fork 89
205 lines (177 loc) · 6.7 KB
/
Copy pathe2e.yml
File metadata and controls
205 lines (177 loc) · 6.7 KB
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
name: e2e
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
env:
# Make rustup/cargo locations explicit and stable across steps
CARGO_HOME: ${{ github.workspace }}/.cargo
RUSTUP_HOME: ${{ github.workspace }}/.rustup
UMU_CONTAINER_NSENTER: "1"
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Ensure Rust toolchain is installed + default
shell: bash
run: |
set -euxo pipefail
echo "${CARGO_HOME}/bin" >> "$GITHUB_PATH"
rustup --version
rustup show
cargo --version
rustc --version
- name: Install dependencies
shell: bash
run: |
set -euxo pipefail
sudo apt-get update
echo "deb http://archive.ubuntu.com/ubuntu/ noble noble-updates noble-backports main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list
sudo apt-get install meson scdoc python3-hatchling python3-build python3-installer python3-filelock shellcheck bubblewrap libzstd1 python3-xxhash python3-cbor2 apparmor apparmor-profiles apparmor-profiles-extra python3-xlib python3-hatch-vcs
sudo apparmor_parser /usr/share/apparmor/extra-profiles/bwrap-userns-restrict
python3 -m pip install --upgrade pip
pip install uv
- name: Initialize submodules
shell: bash
run: |
set -euxo pipefail
git submodule update --init --recursive
- name: Make user install
shell: bash
run: |
set -euxo pipefail
./configure.sh --user-install
make install
- name: Make system install
shell: bash
run: |
set -euxo pipefail
./configure.sh --prefix=/usr
# Preserve rustup/cargo env so the cargo build invoked during install
# uses the same toolchain instead of root's empty default.
sudo -E env \
"PATH=$PATH" \
"HOME=$HOME" \
"CARGO_HOME=$CARGO_HOME" \
"RUSTUP_HOME=$RUSTUP_HOME" \
make install
- name: Run shellcheck
shell: bash
run: |
set -euxo pipefail
shellcheck tests/*.sh
- name: Test delta update
shell: bash
run: |
set -euxo pipefail
python3 tests/test_delta.py
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d" "$HOME/.cache/umu"
- name: Test steamrt install
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_install.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d"
- name: Test steamrt install w/ tmpfs
shell: bash
run: |
set -euxo pipefail
sudo mount -o size=1G -t tmpfs none /tmp
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_install.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d"
sudo mount -o remount,size=500M /tmp
- name: Test steamrt install w/ free-threaded Python
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.14t --clear
source .venv/bin/activate
PYTHON_GIL=0 sh tests/test_install.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d"
- name: Test obsolete steamrt install
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_install_obsolete.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d"
- name: Test steamrt update
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_update.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d"
- name: Test steamrt resume
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_resume.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d" "$HOME/.cache/umu"
- name: Test Proton resume
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_proton_resume.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d" "$HOME/.cache/umu"
- name: Test Filelock
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_flock.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d" "$HOME/.cache/umu"
- name: Test winetricks
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_winetricks.sh
rm -rf "$HOME/.local/share/umu" "$HOME/.local/share/Steam/compatibilitytools.d"
- name: Test configuration file
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.11 --clear
source .venv/bin/activate
sh tests/test_config.sh
rm -rf "$HOME/.local/share/umu" "$HOME/Games/umu" "$HOME/.local/share/Steam/compatibilitytools.d" "$HOME/.cache/umu"
- name: Test offline launch
shell: bash
run: |
set -euxo pipefail
uv venv --python 3.10 --clear
source .venv/bin/activate
sh tests/test_offline.sh
- name: Preflight runtime sanity
shell: bash
run: |
set -euxo pipefail
# Host-level fallback (helps CI robustness)
sudo apt-get update
sudo apt-get install -y wine64
# Verify expected runtime dirs if previously installed
ls -la "$HOME/.local/share/umu" || true
find "$HOME/.local/share/umu" -maxdepth 3 -type d -name 'sniper_platform_*' -o -name 'soldier_platform_*' || true
# Ensure wineboot is resolvable at least on host
command -v wineboot