summaryrefslogtreecommitdiff
path: root/scripts/run_tests.sh
blob: c5eb4e0ec2eee628f06f7addf9e99704816520e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env bash

set -e
set -o pipefail

for TEST in build/${BUILDTYPE:-Release}/test* ; do
    # allow writing core files
    ulimit -c unlimited -S
    echo 'ulimit -c: '`ulimit -c`
    if [ -f /proc/sys/kernel/core_pattern ]; then
        echo '/proc/sys/kernel/core_pattern: '`cat /proc/sys/kernel/core_pattern`
    fi

    if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then
        sysctl kernel.core_pattern
    fi

    RESULT=0
    ${TEST} || RESULT=$?

    if [[ ${RESULT} != 0 ]]; then
        echo "The program crashed with exit code ${RESULT}. We're now trying to output the core dump."
    fi

    # output core dump if we got one
    for DUMP in $(find ./ -maxdepth 1 -name 'core*' -print); do
        gdb ${TEST} ${DUMP} -ex "thread apply all bt" -ex "set pagination 0" -batch
        rm -rf ${DUMP}
    done

    # now we should present travis with the original
    # error code so the run cleanly stops
    if [[ ${RESULT} != 0 ]]; then
        exit $RESULT
    fi
done