From 7124cf79c173c6854dc1ca22e92206569e8137b6 Mon Sep 17 00:00:00 2001 From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Sat, 16 Mar 2024 09:10:02 +0100 Subject: [PATCH] [dirty] let it smoke --- scripts/ci/smoke-test.sh | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/scripts/ci/smoke-test.sh b/scripts/ci/smoke-test.sh index 89981af6..d0d6c6f1 100755 --- a/scripts/ci/smoke-test.sh +++ b/scripts/ci/smoke-test.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +LET_IT_SMOKE=y + if ! test -x "$1/labwc"; then echo "$1/labwc not found" exit 1 @@ -14,11 +16,7 @@ args=( export XDG_RUNTIME_DIR=$(mktemp -d) export WLR_BACKENDS=headless -echo "Starting ${args[@]}" -output=$("${args[@]}" 2>&1) -ret=$? - -if test $ret -ge 128; then +gdb_run() { # Not using -Db_sanitize=address,undefined # because it slows down the usual execution # way too much and spams pages over pages @@ -30,10 +28,8 @@ if test $ret -ge 128; then # just running labwc again is a lot faster # anyway. - echo - echo "labwc crashed, restarting under gdb" - echo gdb --batch \ + --return-child-result \ -ex run \ -ex 'bt full' \ -ex 'echo \n' \ @@ -43,6 +39,34 @@ if test $ret -ge 128; then -ex 'set listsize 50' \ -ex list \ --args "${args[@]}" + return $? +} + +if test "$LET_IT_SMOKE" = "y"; then + ret=0 + for x in {1..10}; do + printf "Starting run %2s\n" $x + output=$(gdb_run 2>&1) + ret=$? + if test $ret -ne 0; then + echo "Crash enountered:" + echo "-----------------" + echo "$output" + break + fi + done + exit $ret +fi + +echo "Starting ${args[@]}" +output=$("${args[@]}" 2>&1) +ret=$? + +if test $ret -ge 128; then + echo + echo "labwc crashed, restarting under gdb" + echo + gdb_run else echo "$output" fi