mirror of
https://github.com/labwc/labwc.git
synced 2025-10-28 05:40:22 -04:00
76 lines
1.6 KiB
Bash
Executable file
76 lines
1.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
: ${LABWC_RUNS:=1}
|
|
: ${LABWC_LEAK_TEST:=0}
|
|
: ${LABWC_EXPECT_RETURNCODE:=0}
|
|
: ${LABWC_VERBOSE:=0}
|
|
|
|
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() {
|
|
# 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 \
|
|
-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=$?
|
|
if test $ret -ne $LABWC_EXPECT_RETURNCODE; then
|
|
echo "Crash encountered:"
|
|
echo "------------------"
|
|
echo "$output"
|
|
break
|
|
elif test $LABWC_VERBOSE -eq 1; then
|
|
echo "------------------"
|
|
echo "$output"
|
|
fi
|
|
done
|
|
|
|
echo "labwc terminated with return code $ret"
|
|
if test $ret -eq $LABWC_EXPECT_RETURNCODE; then
|
|
exit 0;
|
|
else
|
|
exit 1;
|
|
fi
|