labwc/scripts/ci/smoke-test.sh

77 lines
1.6 KiB
Bash
Raw Normal View History

2024-03-13 15:26:16 +01:00
#!/usr/bin/env bash
: ${LABWC_RUNS:=1}
: ${LABWC_LEAK_TEST:=0}
2025-05-09 15:51:31 +02:00
: ${LABWC_EXPECT_RETURNCODE:=0}
: ${LABWC_VERBOSE:=0}
2024-03-13 15:26:16 +01:00
if ! test -x "$1/labwc"; then
echo "$1/labwc not found"
exit 1
fi
args=(
"$1/labwc"
-C scripts/ci
-d
)
export XDG_RUNTIME_DIR=$(mktemp -d)
export WLR_BACKENDS=headless
gdb_run() {
2024-03-13 15:26:16 +01:00
# Not using -Db_sanitize=address,undefined
# because it slows down the usual execution
# way too much and spams pages over pages
# of irrelevant memory-still-in-use logs
# for external libraries.
#
# Not using coredumps either because they
# are a pain to setup on GH actions and
# just running labwc again is a lot faster
# anyway.
gdb --batch \
--return-child-result \
2024-03-13 15:26:16 +01:00
-ex run \
-ex 'bt full' \
-ex 'echo \n' \
-ex 'echo "Local vars:\n' \
-ex 'info locals' \
-ex 'echo \n' \
-ex 'set listsize 50' \
-ex list \
--args "${args[@]}"
return $?
}
echo "Running with LABWC_RUNS=$LABWC_RUNS"
if test "$LABWC_LEAK_TEST" != "0"; then
LSAN_OPTIONS=suppressions=scripts/asan_leak_suppressions "${args[@]}"
exit $?
fi
ret=0
for((i=1; i<=LABWC_RUNS; i++)); do
printf "Starting run %2s\n" $i
output=$(gdb_run 2>&1)
ret=$?
2025-05-09 15:51:31 +02:00
if test $ret -ne $LABWC_EXPECT_RETURNCODE; then
echo "Crash encountered:"
echo "------------------"
echo "$output"
break
2025-05-09 15:51:31 +02:00
elif test $LABWC_VERBOSE -eq 1; then
echo "------------------"
echo "$output"
fi
done
2024-03-13 15:26:16 +01:00
echo "labwc terminated with return code $ret"
2025-05-09 15:51:31 +02:00
if test $ret -eq $LABWC_EXPECT_RETURNCODE; then
exit 0;
else
exit 1;
fi