Support storing assertion messages into core dump
[platform/upstream/glib.git] / tests / run-assert-msg-test.sh
1 #! /bin/sh
2
3 fail ()
4 {
5   echo "Test failed: $*"
6   exit 1
7 }
8
9 echo_v ()
10 {
11   if [ "$verbose" = "1" ]; then
12     echo "$*"
13   fi
14 }
15
16 error_out=/dev/null
17 if [ "$1" = "-v" ]; then
18   verbose=1
19   error_out=/dev/stderr
20 fi  
21
22 echo_v "Running assert-msg-test"
23 OUT=$(./assert-msg-test 2>&1) && fail "assert-msg-test should abort"
24 echo "$OUT" | grep -q '^ERROR:assert-msg-test.c:.*:main: assertion failed: (42 < 0)' || \
25   fail "does not print assertion message"
26
27 if ! type gdb >/dev/null 2>&1; then
28   echo_v "Skipped (no gdb installed)"
29   exit 0
30 fi
31
32 # do we use libc's or our own variable?
33 if grep -q '^#define HAVE_LIBC_ABORT_MSG' $(dirname $0)/../config.h; then
34   VAR=__abort_msg
35 else
36   VAR=__glib_assert_msg
37 fi
38
39 echo_v "Running gdb on assert-msg-test"
40 OUT=$(gdb --batch --ex run --ex "print (char*) $VAR" .libs/lt-assert-msg-test 2> $error_out) || \
41   fail "failed to run gdb"
42
43 echo_v "Checking if assert message is in $VAR"
44 if ! echo "$OUT" | grep -q '^$1.*"ERROR:assert-msg-test.c:.*:main: assertion failed: (42 < 0)"'; then
45   fail "$VAR does not have assertion message"
46 fi
47
48 echo_v "All tests passed."