From 7d8da309c23398f23e866ab63b33cc55b7db837d Mon Sep 17 00:00:00 2001 From: Johannes Marbach Date: Sun, 31 Mar 2024 10:39:34 +0200 Subject: [PATCH] Verify backend on CI --- .gitlab-ci.yml | 22 ++++++++++---- unl0kr/main.c | 2 ++ unl0kr/test/build-with-drm.sh | 5 ++++ unl0kr/test/build-without-drm.sh | 5 ++++ unl0kr/test/helpers.sh | 25 ++++++++++++++++ unl0kr/test/test-all.sh | 6 ++++ ...nd-if-selected-via-config-and-available.sh | 30 +++++++++++++++++++ .../test/test-uses-fb-backend-by-default.sh | 23 ++++++++++++++ ...drm-selected-via-config-but-unavailable.sh | 30 +++++++++++++++++++ ...-uses-fb-backend-if-selected-via-config.sh | 30 +++++++++++++++++++ unl0kr/test/test-with-drm.sh | 16 ++++++++++ unl0kr/test/test-without-drm.sh | 16 ++++++++++ 12 files changed, 204 insertions(+), 6 deletions(-) create mode 100755 unl0kr/test/build-with-drm.sh create mode 100755 unl0kr/test/build-without-drm.sh create mode 100644 unl0kr/test/helpers.sh create mode 100755 unl0kr/test/test-all.sh create mode 100755 unl0kr/test/test-uses-drm-backend-if-selected-via-config-and-available.sh create mode 100755 unl0kr/test/test-uses-fb-backend-by-default.sh create mode 100755 unl0kr/test/test-uses-fb-backend-if-drm-selected-via-config-but-unavailable.sh create mode 100755 unl0kr/test/test-uses-fb-backend-if-selected-via-config.sh create mode 100755 unl0kr/test/test-with-drm.sh create mode 100755 unl0kr/test/test-without-drm.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 74cf37a..bba4180 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,20 +4,30 @@ build-buffyboard: - saas-linux-small-amd64 script: - apk -q add git build-base meson linux-headers inih-dev libinput-dev eudev-dev - - cd buffyboard - git submodule init - git submodule update + - cd buffyboard - meson _build - meson compile -C _build -build-unl0kr: +build-and-test-unl0kr-with-drm: image: alpine:3.19 tags: - saas-linux-small-amd64 script: - - apk -q add git build-base meson linux-headers inih-dev libinput-dev libxkbcommon-dev libdrm-dev scdoc - - cd unl0kr + - apk -q add git bash build-base meson linux-headers inih-dev libinput-dev libxkbcommon-dev libdrm-dev scdoc - git submodule init - git submodule update - - meson _build - - meson compile -C _build + - cd unl0kr + - ./test/test-with-drm.sh + +build-and-test-unl0kr-without-drm: + image: alpine:3.19 + tags: + - saas-linux-small-amd64 + script: + - apk -q add git bash build-base meson linux-headers inih-dev libinput-dev libxkbcommon-dev scdoc + - git submodule init + - git submodule update + - cd unl0kr + - ./test/test-without-drm.sh diff --git a/unl0kr/main.c b/unl0kr/main.c index f016540..3c9f1ce 100644 --- a/unl0kr/main.c +++ b/unl0kr/main.c @@ -406,6 +406,7 @@ int main(int argc, char *argv[]) { switch (conf_opts.general.backend) { #if LV_USE_LINUX_FBDEV case UL_BACKENDS_BACKEND_FBDEV: + bbx_log(BBX_LOG_LEVEL_VERBOSE, "Using framebuffer backend"); disp = lv_linux_fbdev_create(); lv_linux_fbdev_set_file(disp, "/dev/fb0"); if (conf_opts.quirks.fbdev_force_refresh) { @@ -415,6 +416,7 @@ int main(int argc, char *argv[]) { #endif /* LV_USE_LINUX_FBDEV */ #if LV_USE_LINUX_DRM case UL_BACKENDS_BACKEND_DRM: + bbx_log(BBX_LOG_LEVEL_VERBOSE, "Using DRM backend"); disp = lv_linux_drm_create(); lv_linux_drm_set_file(disp, "/dev/dri/card0", -1); break; diff --git a/unl0kr/test/build-with-drm.sh b/unl0kr/test/build-with-drm.sh new file mode 100755 index 0000000..114a085 --- /dev/null +++ b/unl0kr/test/build-with-drm.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +rm -rf _build +meson _build +meson compile -C _build diff --git a/unl0kr/test/build-without-drm.sh b/unl0kr/test/build-without-drm.sh new file mode 100755 index 0000000..7e4a17c --- /dev/null +++ b/unl0kr/test/build-without-drm.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +rm -rf _build +meson _build -Dwith-drm=disabled +meson compile -C _build diff --git a/unl0kr/test/helpers.sh b/unl0kr/test/helpers.sh new file mode 100644 index 0000000..ff36c88 --- /dev/null +++ b/unl0kr/test/helpers.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +function info() { + echo -e "[Info] $1" +} + +function error() { + echo -e "\e[31m[Error]\e[0m $1" +} + +function ok() { + echo -e "\e[32m[Ok]\e[0m $1" +} + +function run_unl0kr() { + local log=$1 + local conf=$2 + + ./_build/unl0kr -v -C "$conf" > "$log" 2>&1 & + pid=$! + sleep 3 + + kill -9 $pid + wait $pid > /dev/null 2>&1 +} diff --git a/unl0kr/test/test-all.sh b/unl0kr/test/test-all.sh new file mode 100755 index 0000000..7d76e83 --- /dev/null +++ b/unl0kr/test/test-all.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +root=$(dirname "${BASH_SOURCE[0]}") + +"$root/test-with-drm.sh" +"$root/test-without-drm.sh" diff --git a/unl0kr/test/test-uses-drm-backend-if-selected-via-config-and-available.sh b/unl0kr/test/test-uses-drm-backend-if-selected-via-config-and-available.sh new file mode 100755 index 0000000..b4ed20a --- /dev/null +++ b/unl0kr/test/test-uses-drm-backend-if-selected-via-config-and-available.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +log=tmp.log +conf=tmp.conf + +source "$(dirname "${BASH_SOURCE[0]}")/helpers.sh" + +function clean_up() { + rm -f "$log" "$conf" +} + +trap clean_up EXIT + +info "Writing config" +cat << EOF > "$conf" +[general] +backend=drm +EOF + +info "Running unl0kr" +run_unl0kr "$log" "$conf" + +info "Verifying output" +if ! grep "Using DRM backend" "$log"; then + error "Expected DRM backend to be selected" + cat "$log" + exit 1 +fi + +ok diff --git a/unl0kr/test/test-uses-fb-backend-by-default.sh b/unl0kr/test/test-uses-fb-backend-by-default.sh new file mode 100755 index 0000000..7e19b1b --- /dev/null +++ b/unl0kr/test/test-uses-fb-backend-by-default.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +log=tmp.log + +source "$(dirname "${BASH_SOURCE[0]}")/helpers.sh" + +function clean_up() { + rm -f "$log" +} + +trap clean_up EXIT + +info "Running unl0kr" +run_unl0kr "$log" + +info "Verifying output" +if ! grep "Using framebuffer backend" "$log"; then + error "Expected framebuffer backend to be selected" + cat "$log" + exit 1 +fi + +ok diff --git a/unl0kr/test/test-uses-fb-backend-if-drm-selected-via-config-but-unavailable.sh b/unl0kr/test/test-uses-fb-backend-if-drm-selected-via-config-but-unavailable.sh new file mode 100755 index 0000000..8f32427 --- /dev/null +++ b/unl0kr/test/test-uses-fb-backend-if-drm-selected-via-config-but-unavailable.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +log=tmp.log +conf=tmp.conf + +source "$(dirname "${BASH_SOURCE[0]}")/helpers.sh" + +function clean_up() { + rm -f "$log" "$conf" +} + +trap clean_up EXIT + +info "Writing config" +cat << EOF > "$conf" +[general] +backend=drm +EOF + +info "Running unl0kr" +run_unl0kr "$log" "$conf" + +info "Verifying output" +if ! grep "Using framebuffer backend" "$log"; then + error "Expected framebuffer backend to be selected" + cat "$log" + exit 1 +fi + +ok diff --git a/unl0kr/test/test-uses-fb-backend-if-selected-via-config.sh b/unl0kr/test/test-uses-fb-backend-if-selected-via-config.sh new file mode 100755 index 0000000..fb585e8 --- /dev/null +++ b/unl0kr/test/test-uses-fb-backend-if-selected-via-config.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +log=tmp.log +conf=tmp.conf + +source "$(dirname "${BASH_SOURCE[0]}")/helpers.sh" + +function clean_up() { + rm -f "$log" "$conf" +} + +trap clean_up EXIT + +info "Writing config" +cat << EOF > "$conf" +[general] +backend=fb +EOF + +info "Running unl0kr" +run_unl0kr "$log" "$conf" + +info "Verifying output" +if ! grep "Using framebuffer backend" "$log"; then + error "Expected framebuffer backend to be selected" + cat "$log" + exit 1 +fi + +ok diff --git a/unl0kr/test/test-with-drm.sh b/unl0kr/test/test-with-drm.sh new file mode 100755 index 0000000..445dc33 --- /dev/null +++ b/unl0kr/test/test-with-drm.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +root=$(dirname "${BASH_SOURCE[0]}") + +source "$root/helpers.sh" + +function run() { + info "Executing $1" + "$1" + echo +} + +run "$root/build-with-drm.sh" +run "$root/test-uses-fb-backend-by-default.sh" +run "$root/test-uses-fb-backend-if-selected-via-config.sh" +run "$root/test-uses-drm-backend-if-selected-via-config-and-available.sh" diff --git a/unl0kr/test/test-without-drm.sh b/unl0kr/test/test-without-drm.sh new file mode 100755 index 0000000..11e01fc --- /dev/null +++ b/unl0kr/test/test-without-drm.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +root=$(dirname "${BASH_SOURCE[0]}") + +source "$root/helpers.sh" + +function run() { + info "Executing $1" + "$1" + echo +} + +run "$root/build-without-drm.sh" +run "$root/test-uses-fb-backend-by-default.sh" +run "$root/test-uses-fb-backend-if-selected-via-config.sh" +run "$root/test-uses-fb-backend-if-drm-selected-via-config-but-unavailable.sh"