sudo: false language: rust rust: - beta - nightly - stable matrix: allow_failures: - rust: nightly before_install: - | c=$(git diff $(git merge-base master $TRAVIS_COMMIT)..$TRAVIS_COMMIT --name-only | cut -d "/" -f 1 | uniq) if [[ "$c" == "doc" ]]; then echo "Only changes in DOC, exiting 0" exit 0 else echo "Changes in other directories than ./doc" echo "continue build..." fi before_script: - | pip install 'travis-cargo<0.2' --user && export PATH=$HOME/.local/bin:$PATH script: - | changes_in() { [[ $(git diff --name-only $(git merge-base master $TRAVIS_COMMIT)..$TRAVIS_COMMIT | \ cut -d "/" -f 1 | \ grep "$n") ]] > /dev/null } travis_cargo_run_in() { echo ":: Trying to run cargo in $1" [[ -d "$1" ]] && cd "$1" && { travis-cargo build && travis-cargo test && travis-cargo bench && travis-cargo --only stable doc && cd - } || exit 1 } run_sh_test() { echo "-- Running test script: $1" bash $1 || { echo "-- Test failed. Exiting"; exit 1; } echo "-- Test script $1 executed successfully" } [[ $(changes_in "doc") ]] && echo "Changes in ./doc are not build by CI" for d in $(find -name "Cargo.toml" | grep -vE "^./Cargo.toml$"); do echo ":: Working on $d" dir=$(dirname $d) { \ changes_in $dir && \ echo -e "\nRunning in $d\n" && \ travis_cargo_run_in $dir && \ tree -I "*doc*" $dir && \ echo "-- Running test scripts..." && \ for testsh in $(find $dir -iname "*test.sh"); do run_sh_test $testsh done && \ echo "-- Done with test scripts..." } || true done addons: apt: packages: - libcurl4-openssl-dev - libelf-dev - libdw-dev - tree after_success: - travis-cargo --only stable doc-upload notifications: email: on_success: never env: global: - TRAVIS_CARGO_NIGHTLY_FEATURE=dev