ci: Run tests with different backends
authorMatthias Clasen <mclasen@redhat.com>
Fri, 15 May 2020 13:44:24 +0000 (09:44 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 15 May 2020 18:11:53 +0000 (14:11 -0400)
Run the testsuite under x11, wayland and broadway
in the fedora-x86_64 job. This requires us to use
the v17 image which includes weston.

.gitlab-ci.yml
.gitlab-ci/run-tests.sh

index b228e9c6570f185382edb56e3f9d0d312e391609..84a9e0ddca99a2c7656cb84d3054fd65ba59b195 100644 (file)
@@ -34,7 +34,7 @@ style-check-diff:
     - .gitlab-ci/run-style-check-diff.sh
 
 fedora-x86_64:
-  image: registry.gitlab.gnome.org/gnome/gtk/fedora:v16
+  image: registry.gitlab.gnome.org/gnome/gtk/fedora:v17
   stage: build
   variables:
     EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both"
@@ -47,20 +47,24 @@ fedora-x86_64:
             -Dprofiler=true
             _build
     - ninja -C _build
-    - .gitlab-ci/run-tests.sh _build
+    - .gitlab-ci/run-tests.sh _build x11
+    - .gitlab-ci/run-tests.sh _build wayland
+    - .gitlab-ci/run-tests.sh _build broadway
   artifacts:
     when: always
     reports:
       junit:
-        - "${CI_PROJECT_DIR}/_build/report.xml"
+        - "${CI_PROJECT_DIR}/_build/report-x11.xml"
+        - "${CI_PROJECT_DIR}/_build/report-wayland.xml"
+        - "${CI_PROJECT_DIR}/_build/report-broadway.xml"
     name: "gtk-${CI_COMMIT_REF_NAME}"
     paths:
       - "${CI_PROJECT_DIR}/_build/meson-logs"
-      - "${CI_PROJECT_DIR}/_build/report.xml"
-      - "${CI_PROJECT_DIR}/_build/report.html"
-      - "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*.png"
-      - "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*.png"
-      - "${CI_PROJECT_DIR}/_build/testsuite/css/output/*.syscap"
+      - "${CI_PROJECT_DIR}/_build/report*.xml"
+      - "${CI_PROJECT_DIR}/_build/report*.html"
+      - "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.png"
+      - "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*/*.png"
+      - "${CI_PROJECT_DIR}/_build/testsuite/css/output/*/*.syscap"
   cache:
     key: "$CI_JOB_NAME"
     <<: *cache-paths
@@ -78,20 +82,20 @@ release-build:
             -Dvulkan=yes
             _build
     - ninja -C _build
-    - .gitlab-ci/run-tests.sh _build
+    - .gitlab-ci/run-tests.sh _build x11
   artifacts:
     when: always
     reports:
       junit:
-        - "${CI_PROJECT_DIR}/_build/report.xml"
+        - "${CI_PROJECT_DIR}/_build/report-x11.xml"
     name: "gtk-${CI_COMMIT_REF_NAME}"
     paths:
       - "${CI_PROJECT_DIR}/_build/meson-logs"
-      - "${CI_PROJECT_DIR}/_build/report.xml"
-      - "${CI_PROJECT_DIR}/_build/report.html"
-      - "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*.png"
-      - "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*.png"
-      - "${CI_PROJECT_DIR}/_build/testsuite/css/output/*.syscap"
+      - "${CI_PROJECT_DIR}/_build/report*.xml"
+      - "${CI_PROJECT_DIR}/_build/report*.html"
+      - "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.png"
+      - "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*/*.png"
+      - "${CI_PROJECT_DIR}/_build/testsuite/css/output/*/*.syscap"
   cache:
     key: "$CI_JOB_NAME"
     <<: *cache-paths
index 5638fa659381f996dcf14193b05a4bdacec632ae..5f402f306e37da4865fc8e901c4377c47f19ae80 100755 (executable)
@@ -5,30 +5,69 @@ set +e
 
 srcdir=$( pwd )
 builddir=$1
+backend=$2
 
-export GDK_BACKEND=x11
-xvfb-run -a -s "-screen 0 1024x768x24" \
-        meson test -C ${builddir} \
+case "${backend}" in
+  x11)
+    xvfb-run -a -s "-screen 0 1024x768x24" \
+          meson test -C ${builddir} \
                 --print-errorlogs \
+                --setup=${backend} \
                 --suite=gtk \
                 --no-suite=gtk:a11y
 
-# Store the exit code for the CI run, but always
-# generate the reports
-exit_code=$?
+    # Store the exit code for the CI run, but always
+    # generate the reports
+    exit_code=$?
+    ;;
+
+  wayland)
+    export XDG_RUNTIME_DIR="$(mktemp -p $(pwd) -d xdg-runtime-XXXXXX)"
+
+    weston --backend=headless-backend.so --socket=wayland-5 &
+    compositor=$!
+    export WAYLAND_DISPLAY=wayland-5
+
+    meson test -C ${builddir} \
+                --print-errorlogs \
+                --setup=${backend} \
+                --suite=gtk \
+                --no-suite=gtk:a11y
+
+    exit_code=$?
+    kill ${compositor}
+    ;;
+
+  broadway)
+    export XDG_RUNTIME_DIR="$(mktemp -p $(pwd) -d xdg-runtime-XXXXXX)"
+
+    ${builddir}/gdk/broadway/gtk4-broadwayd :5 &
+    server=$!
+    export BROADWAY_DISPLAY=:5
+
+    meson test -C ${builddir} \
+                --print-errorlogs \
+                --setup=${backend} \
+                --suite=gtk \
+                --no-suite=gtk:a11y
+
+    exit_code=$?
+    kill ${server}
+    ;;
+esac
 
 cd ${builddir}
 
 $srcdir/.gitlab-ci/meson-junit-report.py \
         --project-name=gtk \
         --job-id="${CI_JOB_NAME}" \
-        --output=report.xml \
-        meson-logs/testlog.json
+        --output=report-${backend}.xml \
+        meson-logs/testlog-${backend}.json
 $srcdir/.gitlab-ci/meson-html-report.py \
         --project-name=gtk \
         --job-id="${CI_JOB_NAME}" \
-        --reftest-output-dir="testsuite/reftests/output" \
-        --output=report.html \
-        meson-logs/testlog.json
+        --reftest-output-dir="testsuite/reftests/output/${backend}" \
+        --output=report-${backend}.html \
+        meson-logs/testlog-${backend}.json
 
 exit $exit_code