#!/usr/bin/env bash # # DO NOT EDIT - this file is generated from run_unit.sh.in. # cmd_line="$0 $@" # substituted variables in one place: DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" abs_top_builddir="${DIR}/.." systemplate_path="@SYSTEMPLATE_PATH@" enable_debug="@ENABLE_DEBUG@" if test -z "@ENABLE_SETCAP@"; then capabilities=false else capabilities=true fi jails_path="@JAILS_PATH@" lo_path="@LO_PATH@" valgrind_cmd="valgrind --tool=memcheck --trace-children=no -v --read-var-info=yes" verbose='' capabilities="@ENABLE_SETCAP@" fail_fast='' if test "h$capabilities" != "htrue"; then capabilities=false fi # Note that these options are used by commands in the Makefile that # Automake generates. Don't be mislead by 'git grep' not showing any # use of --test-name for instance. print_help () { echo "Usage: run_unit.sh --test-name [OPTIONS]" echo "Runs a specified unit test" echo "" echo " --log-file Log output to this file - default /dev/stderr" echo " --trs-file Records the results of a test for automake (default /dev/stderr)" echo " --gdb Run under gdb if enabled" echo " --valgrind Run under valgrind if enabled" echo " --fail-fast If a test fails, subsequent tests will not run and no report is generated" echo " --verbose Print out more stuff - if you run out of things to read" exit 1 } tst= tst_log=/dev/stderr tst_output=/dev/stderr while test $# -gt 0; do case $1 in --test-name) tst=$2; shift;; --log-file) tst_log=$2; shift;; --trs-file) test_output=$2; shift;; --gdb) trace='gdb --args'; shift;; --valgrind) trace=$valgrind_cmd; shift;; --fail-fast) fail_fast='true'; shift;; --verbose) verbose="--verbose";; --help) print_help ;; -*) ;; # ignore esac shift done if test "z$enable_debug" != "ztrue"; then echo "" echo "It is necessary to configure with --enable-debug for unit tests to pass" echo "" echo ":test-result: FAIL $tst" > $test_output exit 1; fi # drop .la suffix tst=`echo $tst | sed "s/\.la//"`; # result logging echo > $test_output printf "\nRunning $tst | $tst_log | $test_output $cmd_line\n"; echo > $tst_log if ${trace} \ ${abs_top_builddir}/coolwsd --o:sys_template_path="$systemplate_path" \ --o:child_root_path="$jails_path" \ --o:security.capabilities="${capabilities}" \ --o:storage.filesystem[@allow]=true \ --o:logging.level=trace \ --o:ssl.key_file_path="${abs_top_builddir}/etc/key.pem" \ --o:ssl.cert_file_path="${abs_top_builddir}/etc/cert.pem" \ --o:ssl.ca_file_path="${abs_top_builddir}/etc/ca-chain.cert.pem" \ --o:admin_console.username=admin --o:admin_console.password=admin \ --o:storage.ssl.enable=false \ --o:experimental_features=true \ --unattended \ --unitlib="${abs_top_builddir}/test/.libs/$tst.so" 2> "$tst_log" 1>&2; then echo "Test $tst passed. Finished in ${SECONDS}s." echo ":test-result: PASS $tst" >> $test_output exit 0 else echo "Test $tst FAILED. Finished in ${SECONDS}s." cat $tst_log echo "=============================================================" echo "Test failed on $tst after ${SECONDS}s. Re-run with (remove --unattended to run without gdb and get prompted):" echo " $ gdb --args ${abs_top_builddir}/coolwsd --o:sys_template_path=\"$systemplate_path\" \\" echo " --o:child_root_path=\"$jails_path\" \\" echo " --o:security.capabilities=\"${capabilities}\" \\" echo " --o:storage.filesystem[@allow]=true \\" echo " --o:logging.level=error\\" # logs and gdb don't go well together echo " --o:ssl.key_file_path=\"${abs_top_builddir}/etc/key.pem\" \\" echo " --o:ssl.cert_file_path=\"${abs_top_builddir}/etc/cert.pem\" \\" echo " --o:ssl.ca_file_path=\"${abs_top_builddir}/etc/ca-chain.cert.pem\" \\" echo " --o:admin_console.username=admin --o:admin_console.password=admin \\" echo " --o:storage.ssl.enable=false \\" echo " --unattended \\" echo " --unitlib=\"${abs_top_builddir}/test/.libs/$tst.so\"" echo "" echo " $ less $tst_log # for detailed failure log files" echo "=============================================================" echo ":test-result: FAIL $tst" >> $test_output fi if test "z$fail_fast" == "ztrue"; then exit 1 fi # vim:set shiftwidth=4 expandtab: