From f3c35c8e65e706eeb29b473d2acec495556a3414 Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Sun, 14 Jun 2015 21:23:43 -0400 Subject: [PATCH] Add option to run tests with Valgrind memcheck This also refactors the Travis config to only use two VMs (for clang and GCC) and run the test suite and build multiple times. --- .travis.yml | 40 ++++++++++++++++++++++------------------ test/README.adoc | 4 ++++ test/tools/libtest.sh | 36 ++++++++++++++++++++++++++++++++++-- 3 files changed, 60 insertions(+), 20 deletions(-) rewrite .travis.yml (66%) diff --git a/.travis.yml b/.travis.yml dissimilarity index 66% index 405d06d..c4520fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,22 @@ -language: c - -compiler: - - clang - - gcc - -env: - - TEST=autoconf VERBOSE=1 TEST_SHELL=bash - - TEST=make VERBOSE=@ - -before_install: sudo apt-get update -qq - -install: sudo apt-get install -qq --no-install-recommends asciidoc xmlto docbook-utils - -script: - - if [ "$TEST" = autoconf ]; then ./autogen.sh && ./configure; fi - - if [ "$TEST" = make ]; then cp contrib/config.make .; fi - - make V=$VERBOSE DESTDIR=/tmp TEST_SHELL=$TEST_SHELL all test install install-doc +language: c + +compiler: + - clang + - gcc + +before_install: sudo apt-get update -qq + +install: sudo apt-get install -qq --no-install-recommends asciidoc xmlto docbook-utils valgrind + +script: + - # ============ Build from config =============== + - cp contrib/config.make . + - make DESTDIR=/tmp/bare-prefix all-debug install install-doc + - make test + - make test TEST_OPTS=valgrind + - make distclean + - # ============ Build using autoconf ============ + - make dist + - ./configure --prefix=/tmp/conf-prefix + - make V=1 TEST_SHELL=bash all test install install-doc + - make clean diff --git a/test/README.adoc b/test/README.adoc index 1d83fbb..b4ae35e 100644 --- a/test/README.adoc +++ b/test/README.adoc @@ -38,3 +38,7 @@ debugger[= "$valgrind" ;; + *) mv "$valgrind.orig" "$valgrind" ;; + esac + + rm -f "$valgrind.orig" +} + test_tig() { name="$TEST_NAME" @@ -339,10 +366,15 @@ test_tig() (cd "$work_dir" && $debugger tig "$@") else set +e + runner= + # FIXME: Tell Valgrind to forward status code + if [ "$expected_status_code" = 0 -a -n "$valgrind" ]; then + runner=valgrind_exec + fi if [ -s "${prefix}stdin" ]; then - (cd "$work_dir" && tig "$@") < "${prefix}stdin" > "${prefix}stdout" 2> "${prefix}stderr.orig" + (cd "$work_dir" && $runner tig "$@") < "${prefix}stdin" > "${prefix}stdout" 2> "${prefix}stderr.orig" else - (cd "$work_dir" && tig "$@") > "${prefix}stdout" 2> "${prefix}stderr.orig" + (cd "$work_dir" && $runner tig "$@") > "${prefix}stdout" 2> "${prefix}stderr.orig" fi status_code="$?" if [ "$status_code" != "$expected_status_code" ]; then -- 2.11.4.GIT