1# Medium Tests: Run on all commits/PRs to dev branch 2 3language: c 4dist: trusty 5 6git: 7 depth: 1 8 9branches: 10 only: 11 - dev 12 - master 13 - travisTest 14 15addons: 16 apt: 17 update: true 18 19env: 20 global: 21 - FUZZERTEST=-T2mn 22 ZSTREAM_TESTTIME=-T2mn 23 DECODECORPUS_TESTTIME=-T1mn 24 25 26matrix: 27 fast_finish: true 28 include: 29 - name: arm64 30 os: linux 31 arch: arm64 32 script: 33 - make check 34 35 - name: Trusty (Test All) 36 script: 37 - make test 38 39 - name: gcc-6 + gcc-7 compilation 40 script: 41 - make gcc6install gcc7install 42 - CC=gcc-6 CFLAGS=-Werror make -j all 43 - make clean 44 - CC=gcc-7 CFLAGS=-Werror make -j all 45 46 - name: gcc-8 + ASan + UBSan + Test Zstd 47 script: 48 - make gcc8install 49 - CC=gcc-8 CFLAGS="-Werror" make -j all 50 - make clean 51 - CC=gcc-8 make -j uasan-test-zstd </dev/null # test when stdin is not a tty 52 53 - name: gcc-6 + ASan + UBSan + Test Zstd, 32bit mode 54 script: 55 - make gcc6install libc6install 56 - CC=gcc-6 CFLAGS="-Werror -m32" make -j all32 57 - make clean 58 - CC=gcc-6 make -j uasan-test-zstd32 # note : can complain about pointer overflow 59 60 - name: Trusty (clang-3.8 + MSan + Test Zstd) 61 script: 62 - make clang38install 63 # External libraries must be turned off when using MSAN tests, 64 # because they are not msan-instrumented, 65 # so any data coming from these libraries is always considered "uninitialized" 66 - CC=clang-3.8 make clean msan-test-zstd HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0 67 68 - name: Trusty (Minimal Decompressor Macros) 69 script: 70 - make clean 71 - CFLAGS=-Werror make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT" 72 - make clean 73 - make -j check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT" 74 - make clean 75 - CFLAGS=-Werror make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG" 76 - make clean 77 - make -j check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG" 78 - make clean 79 - CFLAGS=-Werror make -j all MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS" 80 - make clean 81 - make -j check MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS" 82 83 - name: Trusty (CMake) 84 script: 85 - make cmakebuild 86 87 - name: Trusty (Static Analyze) 88 script: 89 - make staticAnalyze 90 91 - name: Trusty (gcc-8 + ASan + UBSan + Fuzz Test) 92 script: 93 - make gcc8install 94 - CC=gcc-8 make clean uasan-fuzztest 95 96 - name: Trusty (gcc-6 + ASan + UBSan + Fuzz Test 32bit) 97 script: 98 - make gcc6install libc6install 99 - CC=gcc-6 CFLAGS="-O2 -m32" make uasan-fuzztest # can complain about pointer overflow 100 101 - name: Trusty (clang-3.8 + MSan + Fuzz Test) 102 script: 103 - make clang38install 104 - CC=clang-3.8 make clean msan-fuzztest 105 106 - name: Trusty (ASan + UBSan + MSan + Regression Test) 107 script: 108 - make -j uasanregressiontest 109 - make clean 110 - make -j msanregressiontest 111 112 - name: Trusty (Valgrind + Fuzz Test Stack Mode) 113 script: 114 - make valgrindinstall 115 - make -C tests clean valgrindTest 116 - make clean 117 - make -C tests test-fuzzer-stackmode 118 119 - name: Trusty (ARM + Fuzz Test) 120 script: 121 - make arminstall 122 - make armfuzz 123 124 - name: Xenial (AARCH64 + Fuzz Test) 125 dist: xenial 126 script: 127 - make arminstall 128 - make aarch64fuzz 129 130 - name: Trusty (PPC + Fuzz Test) 131 script: 132 - make ppcinstall 133 - make ppcfuzz 134 135 - name: Trusty (Versions Compatibility Test) 136 script: 137 - make -C tests versionsTest 138 139 # check release number 140 - name: Tag-Specific Test 141 if: tag =~ ^v[0-9]\.[0-9] 142 script: 143 - make -C tests checkTag 144 - tests/checkTag "$TRAVIS_BRANCH" 145 146 # tests for master branch and cron job only 147 - name: OS-X 148 if: branch = master 149 os: osx 150 script: 151 - make test 152 153 - name: thread sanitizer 154 if: branch = master 155 script: 156 - make clang38install 157 - CC=clang-3.8 make tsan-test-zstream 158 - CC=clang-3.8 make tsan-fuzztest 159 160 - name: C++ and gnu90 compatibility 161 if: branch = master 162 script: 163 - make cxxtest 164 - make clean 165 - make gnu90build 166 - make clean 167 - make travis-install # just ensures `make install` works 168 169 - name: c99 compatibility 170 if: branch = master 171 script: 172 - make c99build 173 - make -C tests test-zstd 174 175 - name: PPC64 176 if: branch = master 177 script: 178 - make ppcinstall 179 - make ppc64fuzz 180 181 - name: zlib wrapper test 182 if: branch = master 183 script: 184 - make gpp6install valgrindinstall 185 - make -C zlibWrapper test 186 - make -C zlibWrapper valgrindTest 187 188 - name: LZ4, thread pool, and partial libs tests 189 if: branch = master 190 script: 191 - make lz4install 192 - make -C tests test-lz4 193 - make clean 194 - make -C tests test-pool 195 - make clean 196 - bash tests/libzstd_partial_builds.sh 197 198 # meson dedicated test 199 - name: Xenial (Meson + clang) 200 # env: ALLOW_FAILURES=true 201 dist: xenial 202 language: cpp 203 compiler: clang 204 install: 205 - sudo apt-get install -qq liblz4-dev valgrind tree 206 - | 207 travis_retry curl -o ~/ninja.zip -L 'https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip' && 208 unzip ~/ninja.zip -d ~/.local/bin 209 - | 210 travis_retry curl -o ~/get-pip.py -L 'https://bootstrap.pypa.io/get-pip.py' && 211 python3 ~/get-pip.py --user && 212 pip3 install --user meson 213 script: 214 - | 215 meson setup \ 216 --buildtype=debugoptimized \ 217 -Db_lundef=false \ 218 -Dauto_features=enabled \ 219 -Dbin_programs=true \ 220 -Dbin_tests=true \ 221 -Dbin_contrib=true \ 222 -Ddefault_library=both \ 223 build/meson builddir 224 - pushd builddir 225 - ninja 226 - meson test --verbose --no-rebuild 227 - DESTDIR=./staging ninja install 228 - tree ./staging 229 after_failure: 230 - cat "$TRAVIS_BUILD_DIR"/builddir/meson-logs/testlog.txt 231 232 allow_failures: 233 - env: ALLOW_FAILURES=true 234