summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Fonseca <jonas.fonseca@gmail.com>2018-05-18 18:16:22 -0400
committerJonas Fonseca <jonas.fonseca@gmail.com>2018-05-18 18:43:29 -0400
commitbfd1927955b12c9908ad108aa1748c1480d339f5 (patch)
tree259c33be02e47d3a1e16371d16a53b8bf4006027
parent72a01d83f51274e2de85f14c682bf440cb4c160c (diff)
Test address sanitizer in a separate build
-rw-r--r--.travis.yml18
-rwxr-xr-xtools/travis.sh39
2 files changed, 37 insertions, 20 deletions
diff --git a/.travis.yml b/.travis.yml
index 687d6f2d..ed5cd021 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,8 +1,5 @@
language: c
-
-# LeakSanitizer requires ptrace capabilities
-# https://github.com/travis-ci/travis-ci/issues/9033
-sudo: required
+sudo: false
addons:
apt:
@@ -12,10 +9,8 @@ addons:
- valgrind
env:
- global:
- matrix:
- - TRAVIS_TIG=autoconf
- - TRAVIS_TIG=config
+ - TIG_BUILD=autoconf
+ - TIG_BUILD=config.make
compiler:
- gcc
@@ -25,6 +20,13 @@ script: tools/travis.sh
matrix:
include:
+ - env: TIG_BUILD=address-sanitizer
+ compiler: clang
+ os: linux
+ # LeakSanitizer requires ptrace capabilities
+ # https://github.com/travis-ci/travis-ci/issues/9033
+ sudo: required
+ script: tools/travis.sh
- if: branch = master
os: osx
env:
diff --git a/tools/travis.sh b/tools/travis.sh
index 7c9df1c1..02dc306e 100755
--- a/tools/travis.sh
+++ b/tools/travis.sh
@@ -3,35 +3,50 @@
set -euo pipefail
IFS=$'\n\t'
-build_config () {
+build_config_make() {
cp contrib/config.make .
make all-debug
make update-docs && git diff --exit-code
make test
make test TEST_OPTS=valgrind
- if [ $CC = clang ]; then make test-address-sanitizer; fi
- make DESTDIR=/tmp/bare-destdir install install-doc
- make DESTDIR=/tmp/bare-destdir uninstall
- test ! -d /tmp/bare-destdir
+
make prefix=/tmp/bare-prefix install install-doc
/tmp/bare-prefix/bin/tig --version
make prefix=/tmp/bare-prefix uninstall
test ! -d /tmp/bare-prefix
+
make distclean
}
-build_autoconf () {
+build_autoconf() {
make dist
./configure --prefix=/tmp/conf-prefix
- make V=1 TEST_SHELL=bash all test install install-doc
+ make V=1 TEST_SHELL=bash all test
+
+ make install install-doc
/tmp/conf-prefix/bin/tig --version
make uninstall
test ! -d /tmp/conf-prefix
+
+ make DESTDIR=/tmp/bare-destdir install install-doc
+ /tmp/bare-destdir/tmp/conf-prefix/bin/tig --version
+ make DESTDIR=/tmp/bare-destdir uninstall
+ test ! -d /tmp/bare-destdir
+
make clean
}
-if [[ $TRAVIS_TIG = config ]]; then
- build_config
-elif [[ $TRAVIS_TIG = autoconf ]]; then
- build_autoconf
-fi
+build_address_sanitizer() {
+ cp contrib/config.make .
+ make test-address-sanitizer
+}
+
+case "$TIG_BUILD" in
+ config.make) build_config_make ;;
+ autoconf) build_autoconf ;;
+ address-sanitizer) build_address_sanitizer ;;
+
+ *)
+ echo "Unknown config: $TIG_BUILD"
+ exit 1
+esac