toxcore/.travis.yml
iphydf 83f525886a
Start recording test coverage and move to ubuntu precise.
- We use coveralls.io to report on test coverage and avoid getting below a
  certain threshold. The threshold is currently 60%, but we will be increasing
  it when it stabilises.
- We use gcc/clang -ftest-coverage and gcov to measure C test coverage.
- We switched to container based Travis build infrastructure, which has the
  advantage of faster boot times[1] (1-6s vs. 20-52s). The trusty beta supports
  caching, but the longer boot times make it an unattractive target.
- We now need to build more dependencies ourselves and cache the result. We
  still fetch what we can (currently opam, libvpx, and check) from apt.

[1] https://docs.travis-ci.com/user/ci-environment/#Virtualization-environments
2016-07-07 12:45:55 +02:00

105 lines
2.9 KiB
YAML

language: c
compiler:
- gcc
- clang
addons:
apt:
sources:
- avsm
packages:
- check
- libvpx-dev
- opam
cache:
directories:
- $HOME/cache
before_script:
- pushd ..
- CACHE_DIR=$HOME/cache
- export OPAMROOT=$CACHE_DIR/.opam
- export PKG_CONFIG_PATH=$CACHE_DIR/lib/pkgconfig
# Set up opam.
- opam init -y
- eval `opam config env`
# Install required opam packages.
- opam install -y ocamlfind ppx_deriving menhir
# Build apidsl.
- git clone --depth=1 https://github.com/iphydf/apidsl
- make -C apidsl
# Install cpp-coveralls to upload test coverage results.
- pip install --user cpp-coveralls
# Install astyle (version in ubuntu-precise too old).
- ASTYLE=$CACHE_DIR/astyle/build/gcc/bin/astyle
- >
[ -f $ASTYLE ] || {
wget -O astyle.tar.gz http://sourceforge.net/projects/astyle/files/astyle/astyle%202.05.1/astyle_2.05.1_linux.tar.gz/download
tar -xf astyle.tar.gz -C $CACHE_DIR
make -C $CACHE_DIR/astyle/build/gcc
}
# Install libsodium (not in ubuntu-precise).
- >
[ -f $CACHE_DIR/lib/libsodium.a ] || {
git clone --depth=1 --branch=stable https://github.com/jedisct1/libsodium
cd libsodium
./autogen.sh
./configure --prefix=$CACHE_DIR
make install -j3
cd ..
}
# Install libconfig (version in ubuntu-precise too old).
- >
[ -f $CACHE_DIR/lib/libconfig.a ] || {
git clone --depth=1 --branch=REL1_6_STABLE https://github.com/hyperrealm/libconfig
cd libconfig
autoreconf -fi
./configure --prefix=$CACHE_DIR
touch lib/scanner.l
make install -j3
cd ..
}
# Install libopus (not in ubuntu-precise).
- >
[ -f $CACHE_DIR/lib/libopus.a ] || {
git clone --depth=1 --branch=1.1.2 https://github.com/xiph/opus
cd opus
./autogen.sh
./configure --prefix=$CACHE_DIR
make install -j3
cd ..
}
- popd
script:
# Check if toxcore.h and toxav.h match apidsl tox.in.h and toxav.in.h.
- ../apidsl/_build/apigen.native ./other/apidsl/tox.in.h | $ASTYLE --options=./other/astyle/astylerc > toxcore/tox.h
- ../apidsl/_build/apigen.native ./other/apidsl/toxav.in.h | $ASTYLE --options=./other/astyle/astylerc > toxav/toxav.h
- git diff --exit-code
# Build toxcore and run tests.
- ./autogen.sh
- >
./configure \
--with-libsodium-libs=$CACHE_DIR/lib \
--with-libsodium-headers=$CACHE_DIR/include \
--enable-daemon \
--enable-ntox \
CFLAGS="-O0 -Wall -Wextra -fprofile-arcs -ftest-coverage"
- make
- make check || true
- if [ -f build/test-suite.log ]; then cat build/test-suite.log; fi
- make dist
after_script:
- coveralls --exclude auto_tests --exclude other --exclude testing --gcov-options '\-lp'
#notifications:
# email: false
#
# irc:
# channels:
# - "chat.freenode.net#tox-dev"
# on_success: always
# on_failure: always