Since we don't have the bridge anymore, and as I understand it's not coming back (?), it's becoming very easy to miss windows tests regressions. This should at least make sure we get some direct visibility of tests running on Win10.
-- v2: gitlab: Only run the modifieds tests on Windows for an MR. gitlab: Add windows tests to MR pipeline.
From: Rémi Bernon rbernon@codeweavers.com
--- tools/gitlab/build.yml | 22 +++++++++++++++++-- tools/gitlab/test.yml | 50 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 66 insertions(+), 6 deletions(-)
diff --git a/tools/gitlab/build.yml b/tools/gitlab/build.yml index 8a5d5b40ac1..47b677254cc 100644 --- a/tools/gitlab/build.yml +++ b/tools/gitlab/build.yml @@ -37,7 +37,7 @@ build-linux: script: - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./tools/gitlab/build-linux
-build-mac: +.build-mac: extends: .wine-build rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' @@ -52,6 +52,24 @@ build-mac: - export PATH="/usr/local/opt/ccache/libexec:$PATH" - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./tools/gitlab/build-mac
+build-winetest: + stage: build + image: $CI_REGISTRY/wine/wine:debian-bookworm + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + needs: + - job: build-linux + variables: + GIT_STRATEGY: none + artifacts: + name: winetest + paths: + - winetest.exe + - winetest64.exe + script: + - mv usr/local/lib/wine/i386-windows/winetest.exe winetest.exe + - mv usr/local/lib/wine/x86_64-windows/winetest.exe winetest64.exe + build-daily-linux: extends: .wine-build rules: @@ -63,7 +81,7 @@ build-daily-linux: script: - ./tools/gitlab/build-linux
-build-winetest: +build-daily-winetest: stage: build image: $CI_REGISTRY/wine/wine:debian-bookworm rules: diff --git a/tools/gitlab/test.yml b/tools/gitlab/test.yml index 590eacb2438..365135f2bc7 100644 --- a/tools/gitlab/test.yml +++ b/tools/gitlab/test.yml @@ -43,7 +43,7 @@ - wine wineboot.exe -u - wineserver -w
-test-linux-64: +.test-linux-64: extends: .wine-test variables: INCLUDE_TESTS: "dinput" @@ -55,7 +55,7 @@ test-linux-64: - 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: +.test-linux-32: extends: .wine-test variables: EXCLUDE_TESTS: "d3d11:d3d11 d3d9:d3d9ex d3d9:visual" @@ -67,6 +67,48 @@ test-linux-32: - 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 + EXCLUDE_TESTS: "d3d11:d3d11 d3d9:d3d9ex d3d9:visual" + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + needs: + - job: build-winetest + tags: + - win10-21h2 + script: + - ./winetest.exe -q -q -o - -t gitlab -u $CI_JOB_URL -n $EXCLUDE_TESTS >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 + INCLUDE_TESTS: "dinput" + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + needs: + - job: build-winetest + tags: + - win10-21h2 + script: + - ./winetest64.exe -q -q -o - -t gitlab -u $CI_JOB_URL $INCLUDE_TESTS >winetest.log + after_script: + - Get-Content ./winetest.log + artifacts: + when: always + paths: + - winetest.log + debian-32: extends: .wine-test rules: @@ -93,7 +135,7 @@ win10-21h2-32: rules: - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH needs: - - job: build-winetest + - job: build-daily-winetest tags: - win10-21h2 script: @@ -107,7 +149,7 @@ win10-21h2-64: rules: - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH needs: - - job: build-winetest + - job: build-daily-winetest tags: - win10-21h2 script:
From: Rémi Bernon rbernon@codeweavers.com
--- tools/gitlab/build.yml | 4 ++++ tools/gitlab/test.yml | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/tools/gitlab/build.yml b/tools/gitlab/build.yml index 47b677254cc..d0e6ef5bc8f 100644 --- a/tools/gitlab/build.yml +++ b/tools/gitlab/build.yml @@ -36,6 +36,8 @@ build-linux: - usr/local/ script: - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./tools/gitlab/build-linux + - git diff --name-only $CI_MERGE_REQUEST_DIFF_BASE_SHA | sed -re '//tests//!d; s@/tests/.*@/tests/Makefile.in@' | + (xargs -r ls 2>/dev/null || true) | xargs -r sed '/TESTDLL/!d; s@.dll@@; s@.*= *@@' >usr/local/share/wine/winetest.args
.build-mac: extends: .wine-build @@ -64,9 +66,11 @@ build-winetest: artifacts: name: winetest paths: + - winetest.args - winetest.exe - winetest64.exe script: + - mv usr/local/share/wine/winetest.args winetest.args - mv usr/local/lib/wine/i386-windows/winetest.exe winetest.exe - mv usr/local/lib/wine/x86_64-windows/winetest.exe winetest64.exe
diff --git a/tools/gitlab/test.yml b/tools/gitlab/test.yml index 365135f2bc7..6b5f79a8776 100644 --- a/tools/gitlab/test.yml +++ b/tools/gitlab/test.yml @@ -72,7 +72,6 @@ test-win10-21h2-32: interruptible: true variables: GIT_STRATEGY: none - EXCLUDE_TESTS: "d3d11:d3d11 d3d9:d3d9ex d3d9:visual" rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' needs: @@ -80,7 +79,8 @@ test-win10-21h2-32: tags: - win10-21h2 script: - - ./winetest.exe -q -q -o - -t gitlab -u $CI_JOB_URL -n $EXCLUDE_TESTS >winetest.log + - $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: @@ -93,7 +93,6 @@ test-win10-21h2-64: interruptible: true variables: GIT_STRATEGY: none - INCLUDE_TESTS: "dinput" rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' needs: @@ -101,7 +100,8 @@ test-win10-21h2-64: tags: - win10-21h2 script: - - ./winetest64.exe -q -q -o - -t gitlab -u $CI_JOB_URL $INCLUDE_TESTS >winetest.log + - $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:
The encoding issue is still there but after trying a lot of things I end up thinking that it is an issue with qemu-agent script. I tried as hard as I could to make powershell output utf-8, but it still doesn't seem to work and I suspect the output gets re-encoded to cp1152 somewhere in the Gitlab runner / qemu / virsh stack.
The issue comes from a kernel32:process test, which outputs CI_COMMIT_AUTHOR env var, which for me contains a é, later also output as a comma, which is encoded as a 0x82 comma (in Windows-1152) for some reason.
So I'm now simply making winetest output to a file, which is both read again to the console output in `after_script` step, and attached as an artifact to workaround cases where this error happens.
I also included a change to make the Windows tests only run the tests that a MR has modified, making it much faster to run.