diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2017-04-04 18:42:57 -0400 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2017-04-05 16:51:56 -0400 |
commit | efc6a9be8cb34c899f0454c32e8a1e62b38df474 (patch) | |
tree | 138d5999aa9d78c14806316fe984de2e799efd25 /scripts | |
parent | 4e605885c9dcaeb3ee443ec902c9c9189b19043f (diff) | |
download | libnice-efc6a9be8cb34c899f0454c32e8a1e62b38df474.tar.gz |
tests: Use automake test-driver for valgrind
This fixes the valgrind integration with the new test drivers.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/valgrind-test-driver | 162 | ||||
-rwxr-xr-x | scripts/valgrind.sh | 28 |
2 files changed, 162 insertions, 28 deletions
diff --git a/scripts/valgrind-test-driver b/scripts/valgrind-test-driver new file mode 100755 index 0000000..5b660ee --- /dev/null +++ b/scripts/valgrind-test-driver @@ -0,0 +1,162 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2017-04-04.22; # UTC + +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <<END +Usage: + test-driver --test-name=NAME --log-file=PATH --trs-file=PATH + [--expect-failure={yes|no}] [--color-tests={yes|no}] + [--enable-hard-errors={yes|no}] [--] + TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS] +The '--test-name', '--log-file' and '--trs-file' options are mandatory. +END +} + +test_name= # Used for reporting. +log_file= # Where to save the output of the test script. +trs_file= # Where to save the metadata of the test run. +expect_failure=no +color_tests=no +enable_hard_errors=yes +while test $# -gt 0; do + case $1 in + --help) print_usage; exit $?;; + --version) echo "test-driver $scriptversion"; exit $?;; + --test-name) test_name=$2; shift;; + --log-file) log_file=$2; shift;; + --trs-file) trs_file=$2; shift;; + --color-tests) color_tests=$2; shift;; + --expect-failure) expect_failure=$2; shift;; + --enable-hard-errors) enable_hard_errors=$2; shift;; + --) shift; break;; + -*) usage_error "invalid option: '$1'";; + *) break;; + esac + shift +done + +missing_opts= +test x"$test_name" = x && missing_opts="$missing_opts --test-name" +test x"$log_file" = x && missing_opts="$missing_opts --log-file" +test x"$trs_file" = x && missing_opts="$missing_opts --trs-file" +if test x"$missing_opts" != x; then + usage_error "the following mandatory options are missing:$missing_opts" +fi + +if test $# -eq 0; then + usage_error "missing argument" +fi + +if test $color_tests = yes; then + # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. + red='[0;31m' # Red. + grn='[0;32m' # Green. + lgn='[1;32m' # Light green. + blu='[1;34m' # Blue. + mgn='[0;35m' # Magenta. + std='[m' # No color. +else + red= grn= lgn= blu= mgn= std= +fi + +do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' +trap "st=129; $do_exit" 1 +trap "st=130; $do_exit" 2 +trap "st=141; $do_exit" 13 +trap "st=143; $do_exit" 15 + +# Test script is run here. +top_srcdir="`dirname $0`/.." +tests_dir="${top_srcdir}/tests" + +USE_VALGRIND="`printenv USE_VALGRIND`" + +if test "x${USE_VALGRIND}" = "x1"; then + ${top_srcdir}/libtool --mode=execute valgrind \ + --leak-check=full \ + --show-reachable=no \ + --error-exitcode=1 \ + --suppressions=$tests_dir/libnice.supp \ + --num-callers=30 "$@" >$log_file 2>&1 +else + "$@" >$log_file 2>&1 +fi +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>$log_file + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/scripts/valgrind.sh b/scripts/valgrind.sh deleted file mode 100755 index 2864b6f..0000000 --- a/scripts/valgrind.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -export G_SLICE=always-malloc -export G_DEBUG=gc-friendly - -tests_dir="`dirname $0`/../tests" - -report=`libtool --mode=execute valgrind \ - --leak-check=full \ - --show-reachable=no \ - --error-exitcode=1 \ - --suppressions=$tests_dir/libnice.supp \ - --num-callers=30 \ - $1 2>&1` - -#if echo "$report" | grep -q ==; then -if test $? != 0; then - echo "$report" - exit 1 -fi - -if echo "$report" | grep -q "definitely lost"; then - if ! echo "$report" | grep -q "definitely lost: 0 bytes"; then - echo "$report" - exit 1 - fi -fi - |