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
|
# CI script for testing Wine
.wine-test:
stage: test
image: $CI_REGISTRY/wine/wine:debian-bookworm
interruptible: true
variables:
GIT_STRATEGY: none
GECKO_VER: 2.47.4
MONO_VER: 9.4.0
cache:
- key: wine-gecko-$GECKO_VER
paths:
- wine-gecko-$GECKO_VER-x86.msi
- wine-gecko-$GECKO_VER-x86_64.msi
- key: wine-mono-$MONO_VER
paths:
- wine-mono-$MONO_VER-x86.msi
before_script:
- |
printf '\e[0Ksection_start:%s:wine_test_prepare_env[collapsed=true]\r\e[0K' "$(date +%s)"
printf '\e[36;1mPreparing environment for Wine\e[0m\n'
- export BASEDIR=$PWD
- export PATH=$BASEDIR/usr/local/bin:$PATH
- export DISPLAY=:0
- export LC_ALL=C.UTF-8
- export LP_NUM_THREADS=4
- export WINEDEBUG=err-all,fixme-all
- |
cat >$HOME/xorg.conf << EOF
Section "Device"
Identifier "dummy"
Driver "dummy"
VideoRam 32768
EndSection
EOF
- echo 'exec /usr/bin/fvwm -f config -c "Style * MwmDecor" -c "Style * UsePPosition" 2>/dev/null' >$HOME/.xinitrc
- startx -- -config $HOME/xorg.conf $DISPLAY & while ! pgrep fvwm >/dev/null 2>&1; do sleep 1; done
- test -f wine-gecko-$GECKO_VER-x86.msi || curl -o wine-gecko-$GECKO_VER-x86.msi https://dl.winehq.org/wine/wine-gecko/$GECKO_VER/wine-gecko-$GECKO_VER-x86.msi
- test -f wine-gecko-$GECKO_VER-x86_64.msi || curl -o wine-gecko-$GECKO_VER-x86_64.msi https://dl.winehq.org/wine/wine-gecko/$GECKO_VER/wine-gecko-$GECKO_VER-x86_64.msi
- test -f wine-mono-$MONO_VER-x86.msi || curl -o wine-mono-$MONO_VER-x86.msi https://dl.winehq.org/wine/wine-mono/$MONO_VER/wine-mono-$MONO_VER-x86.msi
- mkdir -p $HOME/Documents $HOME/Desktop usr/local/share/wine/gecko usr/local/share/wine/mono
- ln -sf $BASEDIR/wine-gecko-$GECKO_VER-x86.msi $BASEDIR/wine-gecko-$GECKO_VER-x86_64.msi usr/local/share/wine/gecko
- ln -sf $BASEDIR/wine-mono-$MONO_VER-x86.msi usr/local/share/wine/mono
- pulseaudio --start --exit-idle-time=-1
- wine wineboot.exe -u
- wineserver -w
- printf '\e[0Ksection_end:%s:wine_test_prepare_env\r\e[0K' "$(date +%s)"
test-linux-64:
extends: .wine-test
variables:
INCLUDE_TESTS: "dinput"
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
needs:
- job: build-linux
script:
- export WINETEST_COLOR=1
- wine usr/local/lib/wine/x86_64-windows/winetest.exe -q -q -o - -J winetest.xml $INCLUDE_TESTS
artifacts:
when: always
paths:
- winetest.xml
reports:
junit: winetest.xml
test-linux-32:
extends: .wine-test
variables:
EXCLUDE_TESTS: "d3d11:d3d11 d3d9:d3d9ex d3d9:visual"
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
needs:
- job: build-linux
script:
- export WINETEST_COLOR=1
- wine usr/local/lib/wine/i386-windows/winetest.exe -q -q -o - -J winetest.xml -n $EXCLUDE_TESTS
artifacts:
when: always
paths:
- winetest.xml
reports:
junit: winetest.xml
test-win10-21h2-32:
stage: test
interruptible: true
variables:
GIT_STRATEGY: none
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
needs:
- job: build-winetest
tags:
- win10-21h2
script:
- $WINETEST_ARGS = @(Get-Content ./winetest.args)
- |
if ($WINETEST_ARGS.count -gt 0) {
./winetest.exe -q -q -o - -J winetest.tmp @WINETEST_ARGS >winetest.log
} else {
echo '<?xml version="1.0" encoding="UTF-8"?><testsuites/>' >winetest.tmp
echo $null >winetest.log
}
after_script:
- Get-Content ./winetest.tmp | Set-Content -Encoding utf8 winetest.xml
- Get-Content ./winetest.log
artifacts:
when: always
paths:
- winetest.xml
- winetest.log
reports:
junit: winetest.xml
test-win10-21h2-64:
stage: test
interruptible: true
variables:
GIT_STRATEGY: none
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
needs:
- job: build-winetest
tags:
- win10-21h2
script:
- $WINETEST_ARGS = @(Get-Content ./winetest.args)
- |
if ($WINETEST_ARGS.count -gt 0) {
./winetest64.exe -q -q -o - -J winetest.tmp @WINETEST_ARGS >winetest.log
} else {
echo '<?xml version="1.0" encoding="UTF-8"?><testsuites/>' >winetest.tmp
echo $null >winetest.log
}
after_script:
- Get-Content ./winetest.tmp | Set-Content -Encoding utf8 winetest.xml
- Get-Content ./winetest.log
artifacts:
when: always
paths:
- winetest.xml
- winetest.log
reports:
junit: winetest.xml
debian-32:
extends: .wine-test
rules:
- if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
needs:
- job: build-daily-linux
script:
- wine usr/local/lib/wine/i386-windows/winetest.exe -q
debian-64:
extends: .wine-test
rules:
- if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
needs:
- job: build-daily-linux
script:
- wine usr/local/lib/wine/x86_64-windows/winetest.exe -q
win10-21h2-32:
stage: test
interruptible: true
variables:
GIT_STRATEGY: none
rules:
- if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
needs:
- job: build-daily-winetest
tags:
- win10-21h2
script:
- ./winetest.exe -q
win10-21h2-64:
stage: test
interruptible: true
variables:
GIT_STRATEGY: none
rules:
- if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
needs:
- job: build-daily-winetest
tags:
- win10-21h2
script:
- ./winetest64.exe -q
|