+# Medium Tests: Run on all commits/PRs to dev branch
+
language: c
sudo: required
dist: trusty
matrix:
- fast_finish: true
include:
# Ubuntu 14.04
- - env: Cmd="make libc6install && make -C tests test32"
- - env: Cmd='make valgrindinstall arminstall ppcinstall arm-ppc-compilation && make clean lib && CFLAGS="-O1 -g" make -C zlibWrapper valgrindTest && make -C tests valgrindTest'
+ - env: Cmd='make gcc6install && CC=gcc-6 make clean uasan-test-zstd'
+ - env: Cmd='make gcc6install libc6install && CC=gcc-6 make clean uasan-test-zstd32'
+ - env: Cmd='make clang38install && CC=clang-3.8 make clean msan-test-zstd'
+
+ - env: Cmd='make gcc6install && CC=gcc-6 make clean uasan-fuzztest'
+ - env: Cmd='make gcc6install libc6install && CC=gcc-6 CFLAGS=-m32 make clean uasan-fuzztest'
+ - env: Cmd='make clang38install && CC=clang-3.8 make clean msan-fuzztest'
+ - env: Cmd='make clang38install && CC=clang-3.8 make clean tsan-test-zstream'
+
+ - env: Cmd='make valgrindinstall && make -C tests clean valgrindTest'
+
+ - env: Cmd='make arminstall && make armfuzz'
+ - env: Cmd='make arminstall && make aarch64fuzz'
+ - env: Cmd='make ppcinstall && make ppcfuzz'
+ - env: Cmd='make ppcinstall && make ppc64fuzz'
- - env: Cmd='CC=gcc-6 make gcc6install uasan-test'
- - env: Cmd='CC=gcc-6 make gcc6install uasan-test32'
- - env: Cmd="make arminstall armtest && make clean && make aarch64test"
- - env: Cmd='make ppcinstall ppctest && make clean && make ppc64test'
- - env: Cmd='make gpp6install zlibwrapper && make -C tests clean test-zstd-nolegacy && make -C tests versionsTest && make clean && cd contrib/pzstd && make test-pzstd && make test-pzstd32 && make test-pzstd-tsan && make test-pzstd-asan'
- install:
- - export CXX="g++-6" CC="gcc-6"
+git:
+ depth: 1
- # OS X Mavericks
- - env: Cmd="make gnu90build && make clean && make test && make clean && make travis-install"
- os: osx
+branches:
+ only:
+ - dev
+ - master
script:
- JOB_NUMBER=$(echo $TRAVIS_JOB_NUMBER | sed -e 's:[0-9][0-9]*\.\(.*\):\1:')
- # cron & master => full tests, as this is the final step towards a Release
- # pull requests => normal tests (job numbers 1-3)
- # other feature branches => short tests (job numbers 1-2)
- echo JOB_NUMBER=$JOB_NUMBER TRAVIS_BRANCH=$TRAVIS_BRANCH TRAVIS_EVENT_TYPE=$TRAVIS_EVENT_TYPE TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST
- - if [ "$TRAVIS_EVENT_TYPE" = "cron" ] || [ "$TRAVIS_BRANCH" = "master" ]; then
- FUZZERTEST=-T7mn sh -c "$Cmd" || travis_terminate 1;
- else
- if [ "$TRAVIS_EVENT_TYPE" = "pull_request" ] && [ $JOB_NUMBER -lt 4 ]; then
- sh -c "$Cmd" || travis_terminate 1;
- else
- if [ $JOB_NUMBER -lt 3 ]; then
- sh -c "$Cmd" || travis_terminate 1;
- fi
- fi
- fi
+ - export FUZZERTEST=-T2mn;
+ export ZSTREAM_TESTTIME=-T2mn;
+ export DECODECORPUS_TESTTIME=-T1mn;
+ sh -c "$Cmd" || travis_terminate 1;
ppc64build: clean
CC=powerpc-linux-gnu-gcc CFLAGS="-m64 -Werror" $(MAKE) allarch
+armfuzz: clean
+ CC=arm-linux-gnueabi-gcc QEMU_SYS=qemu-arm-static MOREFLAGS="-static" $(MAKE) -C $(TESTDIR) fuzztest
+
+aarch64fuzz: clean
+ CC=aarch64-linux-gnu-gcc QEMU_SYS=qemu-aarch64-static MOREFLAGS="-static" $(MAKE) -C $(TESTDIR) fuzztest
+
+ppcfuzz: clean
+ CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc-static MOREFLAGS="-static" $(MAKE) -C $(TESTDIR) fuzztest
+
+ppc64fuzz: clean
+ CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static MOREFLAGS="-m64 -static" $(MAKE) -C $(TESTDIR) fuzztest
+
gpptest: clean
CC=g++ $(MAKE) -C $(PRGDIR) all CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror"
$(MAKE) -C $(PRGDIR) clean zstd CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static ZSTDRTTEST= MOREFLAGS="-m64 -static"
usan: clean
- $(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=undefined"
+ $(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=undefined"
asan: clean
$(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=address"
msan: clean
$(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=memory -fno-omit-frame-pointer" # datagen.c fails this test for no obvious reason
+msan-%: clean
+ LDFLAGS=-fuse-ld=gold MOREFLAGS="-fno-sanitize-recover=all -fsanitize=memory -fno-omit-frame-pointer" $(MAKE) -C $(TESTDIR) $*
+
asan32: clean
$(MAKE) -C $(TESTDIR) test32 CC=clang MOREFLAGS="-g -fsanitize=address"
uasan: clean
- $(MAKE) test CC=clang MOREFLAGS="-g -fsanitize=address -fsanitize=undefined"
+ $(MAKE) test CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=address,undefined"
uasan-%: clean
- LDFLAGS=-fuse-ld=gold CFLAGS="-Og -fsanitize=address -fsanitize=undefined" $(MAKE) -C $(TESTDIR) $*
+ LDFLAGS=-fuse-ld=gold MOREFLAGS="-Og -fno-sanitize-recover=all -fsanitize=address,undefined" $(MAKE) -C $(TESTDIR) $*
+tsan-%: clean
+ LDFLAGS=-fuse-ld=gold MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize=thread" $(MAKE) -C $(TESTDIR) $*
apt-install:
sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install $(APT_PACKAGES)
APT_PACKAGES="qemu-system-ppc qemu-user-static gcc-powerpc-linux-gnu" $(MAKE) apt-install
arminstall:
- APT_PACKAGES="qemu-system-arm qemu-user-static gcc-powerpc-linux-gnu gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross" $(MAKE) apt-install
+ APT_PACKAGES="qemu-system-arm qemu-user-static gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross" $(MAKE) apt-install
valgrindinstall:
APT_PACKAGES="valgrind" $(MAKE) apt-install
gpp6install: apt-add-repo
APT_PACKAGES="libc6-dev-i386 g++-multilib gcc-6 g++-6 g++-6-multilib" $(MAKE) apt-install
+clang38install:
+ APT_PACKAGES="clang-3.8" $(MAKE) apt-install
+
endif