From 0bfbcaf37737c50c76310a69eaf0cf6522490c72 Mon Sep 17 00:00:00 2001 From: Johannes Marbach Date: Mon, 1 Apr 2024 17:00:36 +0200 Subject: [PATCH] Add tests for version flag --- .gitlab-ci.yml | 7 ++-- buffyboard/test/build.sh | 5 +++ buffyboard/test/helpers.sh | 25 +++++++++++++ buffyboard/test/test-all.sh | 8 ++++ ...est-version-matches-meson-and-changelog.sh | 37 +++++++++++++++++++ test/helpers.sh | 27 ++++++++++++++ unl0kr/test/helpers.sh | 24 ++++++------ ...nd-if-selected-via-config-and-available.sh | 2 +- .../test/test-uses-fb-backend-by-default.sh | 2 +- ...drm-selected-via-config-but-unavailable.sh | 2 +- ...-uses-fb-backend-if-selected-via-config.sh | 2 +- ...est-version-matches-meson-and-changelog.sh | 37 +++++++++++++++++++ unl0kr/test/test-with-drm.sh | 15 +++----- unl0kr/test/test-without-drm.sh | 15 +++----- 14 files changed, 168 insertions(+), 40 deletions(-) create mode 100755 buffyboard/test/build.sh create mode 100644 buffyboard/test/helpers.sh create mode 100755 buffyboard/test/test-all.sh create mode 100755 buffyboard/test/test-version-matches-meson-and-changelog.sh create mode 100644 test/helpers.sh create mode 100755 unl0kr/test/test-version-matches-meson-and-changelog.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bba4180..e7751e5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,14 +1,13 @@ -build-buffyboard: +build-and-test-buffyboard: image: alpine:3.19 tags: - saas-linux-small-amd64 script: - - apk -q add git build-base meson linux-headers inih-dev libinput-dev eudev-dev + - apk -q add git bash build-base meson linux-headers inih-dev libinput-dev eudev-dev - git submodule init - git submodule update - cd buffyboard - - meson _build - - meson compile -C _build + - ./test/test-all.sh build-and-test-unl0kr-with-drm: image: alpine:3.19 diff --git a/buffyboard/test/build.sh b/buffyboard/test/build.sh new file mode 100755 index 0000000..114a085 --- /dev/null +++ b/buffyboard/test/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +rm -rf _build +meson _build +meson compile -C _build diff --git a/buffyboard/test/helpers.sh b/buffyboard/test/helpers.sh new file mode 100644 index 0000000..f6f21bf --- /dev/null +++ b/buffyboard/test/helpers.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE[0]}")/../../test/helpers.sh" + +function run_buffyboard_async() { + local log=$1 + local conf=$2 + + ./_build/buffyboard -v -C "$conf" > "$log" 2>&1 & + pid=$! + sleep 3 + + kill -9 $pid + wait $pid > /dev/null 2>&1 +} + +function run_buffyboard_sync() { + local log=$1 + shift + local conf=$2 + shift + local args=$@ + + ./_build/buffyboard -v -C "$conf" $@ > "$log" 2>&1 +} diff --git a/buffyboard/test/test-all.sh b/buffyboard/test/test-all.sh new file mode 100755 index 0000000..d474e6b --- /dev/null +++ b/buffyboard/test/test-all.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +root=$(dirname "${BASH_SOURCE[0]}") + +source "$root/helpers.sh" + +run_script "$root/build.sh" +run_script "$root/test-version-matches-meson-and-changelog.sh" diff --git a/buffyboard/test/test-version-matches-meson-and-changelog.sh b/buffyboard/test/test-version-matches-meson-and-changelog.sh new file mode 100755 index 0000000..e645d69 --- /dev/null +++ b/buffyboard/test/test-version-matches-meson-and-changelog.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +log=tmp.log + +root=$(dirname "${BASH_SOURCE[0]}") + +source "$root/helpers.sh" + +function clean_up() { + rm -f "$log" +} + +trap clean_up EXIT + +info "Querying version from build.meson" +meson_version=$(read_version_from_meson) + +info "Querying version from CHANGELOG.md" +changelog_version=$(read_version_from_changelog) + +info "Verifying versions" +if [[ "$meson_version" != "$changelog_version" ]]; then + error "Version $meson_version from meson.build doesn't match version $changelog_version from CHANGELOG.md" + exit 1 +fi + +info "Running buffyboard" +run_buffyboard_sync "$log" "$conf" -V + +info "Verifying output" +if ! grep "buffyboard $meson_version" "$log"; then + error "Expected version $meson_version" + cat "$log" + exit 1 +fi + +ok diff --git a/test/helpers.sh b/test/helpers.sh new file mode 100644 index 0000000..135757c --- /dev/null +++ b/test/helpers.sh @@ -0,0 +1,27 @@ +#!/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_script() { + info "Executing $1" + "$1" + echo +} + +function read_version_from_meson() { + grep "^[[:space:]]*version:" "$root/../meson.build" | head -n1 | grep -o "[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+" +} + +function read_version_from_changelog() { + grep "^## [[:digit:]]" "$root/../../CHANGELOG.md" | head -n1 | grep -o "[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+" +} diff --git a/unl0kr/test/helpers.sh b/unl0kr/test/helpers.sh index ff36c88..c1f8636 100644 --- a/unl0kr/test/helpers.sh +++ b/unl0kr/test/helpers.sh @@ -1,18 +1,8 @@ #!/bin/bash -function info() { - echo -e "[Info] $1" -} +source "$(dirname "${BASH_SOURCE[0]}")/../../test/helpers.sh" -function error() { - echo -e "\e[31m[Error]\e[0m $1" -} - -function ok() { - echo -e "\e[32m[Ok]\e[0m $1" -} - -function run_unl0kr() { +function run_unl0kr_async() { local log=$1 local conf=$2 @@ -23,3 +13,13 @@ function run_unl0kr() { kill -9 $pid wait $pid > /dev/null 2>&1 } + +function run_unl0kr_sync() { + local log=$1 + shift + local conf=$2 + shift + local args=$@ + + ./_build/unl0kr -v -C "$conf" $@ > "$log" 2>&1 +} \ No newline at end of file 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 index b4ed20a..2257a80 100755 --- 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 @@ -18,7 +18,7 @@ backend=drm EOF info "Running unl0kr" -run_unl0kr "$log" "$conf" +run_unl0kr_async "$log" "$conf" info "Verifying output" if ! grep "Using DRM backend" "$log"; then diff --git a/unl0kr/test/test-uses-fb-backend-by-default.sh b/unl0kr/test/test-uses-fb-backend-by-default.sh index 7e19b1b..3775bf5 100755 --- a/unl0kr/test/test-uses-fb-backend-by-default.sh +++ b/unl0kr/test/test-uses-fb-backend-by-default.sh @@ -11,7 +11,7 @@ function clean_up() { trap clean_up EXIT info "Running unl0kr" -run_unl0kr "$log" +run_unl0kr_async "$log" info "Verifying output" if ! grep "Using framebuffer backend" "$log"; then 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 index 8f32427..717a09b 100755 --- 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 @@ -18,7 +18,7 @@ backend=drm EOF info "Running unl0kr" -run_unl0kr "$log" "$conf" +run_unl0kr_async "$log" "$conf" info "Verifying output" if ! grep "Using framebuffer backend" "$log"; then 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 index fb585e8..31d4431 100755 --- a/unl0kr/test/test-uses-fb-backend-if-selected-via-config.sh +++ b/unl0kr/test/test-uses-fb-backend-if-selected-via-config.sh @@ -18,7 +18,7 @@ backend=fb EOF info "Running unl0kr" -run_unl0kr "$log" "$conf" +run_unl0kr_async "$log" "$conf" info "Verifying output" if ! grep "Using framebuffer backend" "$log"; then diff --git a/unl0kr/test/test-version-matches-meson-and-changelog.sh b/unl0kr/test/test-version-matches-meson-and-changelog.sh new file mode 100755 index 0000000..887ee83 --- /dev/null +++ b/unl0kr/test/test-version-matches-meson-and-changelog.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +log=tmp.log + +root=$(dirname "${BASH_SOURCE[0]}") + +source "$root/helpers.sh" + +function clean_up() { + rm -f "$log" +} + +trap clean_up EXIT + +info "Querying version from build.meson" +meson_version=$(read_version_from_meson) + +info "Querying version from CHANGELOG.md" +changelog_version=$(read_version_from_changelog) + +info "Verifying versions" +if [[ "$meson_version" != "$changelog_version" ]]; then + error "Version $meson_version from meson.build doesn't match version $changelog_version from CHANGELOG.md" + exit 1 +fi + +info "Running unl0kr" +run_unl0kr_sync "$log" "$conf" -V + +info "Verifying output" +if ! grep "unl0kr $meson_version" "$log"; then + error "Expected version $meson_version" + cat "$log" + exit 1 +fi + +ok diff --git a/unl0kr/test/test-with-drm.sh b/unl0kr/test/test-with-drm.sh index 445dc33..8225510 100755 --- a/unl0kr/test/test-with-drm.sh +++ b/unl0kr/test/test-with-drm.sh @@ -4,13 +4,8 @@ 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" +run_script "$root/build-with-drm.sh" +run_script "$root/test-version-matches-meson-and-changelog.sh" +run_script "$root/test-uses-fb-backend-by-default.sh" +run_script "$root/test-uses-fb-backend-if-selected-via-config.sh" +run_script "$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 index 11e01fc..a8e86c9 100755 --- a/unl0kr/test/test-without-drm.sh +++ b/unl0kr/test/test-without-drm.sh @@ -4,13 +4,8 @@ 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" +run_script "$root/build-without-drm.sh" +run_script "$root/test-version-matches-meson-and-changelog.sh" +run_script "$root/test-uses-fb-backend-by-default.sh" +run_script "$root/test-uses-fb-backend-if-selected-via-config.sh" +run_script "$root/test-uses-fb-backend-if-drm-selected-via-config-but-unavailable.sh"