wine/tools/gitlab/test.yml
2024-04-22 17:46:01 +02:00

161 lines
4.9 KiB
YAML

# 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.1.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 &
- 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 - -t gitlab -u $CI_JOB_URL $INCLUDE_TESTS
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 - -t gitlab -u $CI_JOB_URL -n $EXCLUDE_TESTS
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 - -t gitlab -u $CI_JOB_URL @WINETEST_ARGS >winetest.log } else { echo $null >winetest.log }
after_script:
- Get-Content ./winetest.log
artifacts:
when: always
paths:
- winetest.log
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 - -t gitlab -u $CI_JOB_URL @WINETEST_ARGS >winetest.log } else { echo $null >winetest.log }
after_script:
- Get-Content ./winetest.log
artifacts:
when: always
paths:
- winetest.log
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 -t gitlab-$CI_JOB_NAME -u $CI_JOB_URL
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 -t gitlab-$CI_JOB_NAME -u $CI_JOB_URL
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 -t gitlab-$CI_JOB_NAME -u $CI_JOB_URL
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 -t gitlab-$CI_JOB_NAME -u $CI_JOB_URL