sudo: true
language: rust
cache: cargo
rust:
  - nightly
  - nightly-2018-06-19
  - beta
  - stable
  - 1.21.0
matrix:
    allow_failures:
        - rust: nightly
before_script:
  - |
    pip install git+git://github.com/kbknapp/travis-cargo.git --user &&
    export PATH=$HOME/.local/bin:$PATH
  - |
    if [[ "$TRAVIS_RUST_VERSION" == "1.13.0" ]]; then
        echo "Old Rust detected, removing version-sync dependency"
        sed -i "/^version-sync =/d" Cargo.toml
        rm "tests/version-numbers.rs"
    fi
script:
  - |
    travis-cargo --only stable test -- --verbose --no-default-features &&
    travis-cargo --skip nightly test -- --verbose --features "yaml unstable" &&
    travis-cargo --only nightly test -- --verbose --features "yaml unstable nightly" &&
    travis-cargo --only nightly bench -- --no-run 
addons:
  apt:
    packages:
    - binutils-dev 
    - libcurl4-openssl-dev
    - libelf-dev
    - libdw-dev
    - libiberty-dev
    - cmake
    - gcc
    - zlib1g-dev 
after_success:
  - |
    wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz &&
    tar xzf master.tar.gz &&
    cd kcov-master &&
    mkdir build &&
    cd build &&
    cmake .. &&
    make &&
    sudo make install &&
    cd ../.. &&
    rm -rf kcov-master &&
    cargo clean &&
    cargo test --no-run --features "yaml unstable" &&
    for file in target/debug/*-*; do mkdir -p "target/cov/$(basename $file)"; kcov --exclude-pattern=/.cargo --verify "target/cov/$(basename $file)" "$file"; done &&
    kcov --coveralls-id=$TRAVIS_JOB_ID --merge target/cov target/cov/* &&
    echo "Uploaded code coverage"
env:
  global:
    - TRAVIS_CARGO_NIGHTLY_FEATURE=lints
    - secure: JLBlgHY6OEmhJ8woewNJHmuBokTNUv7/WvLkJGV8xk0t6bXBwSU0jNloXwlH7FiQTc4TccX0PumPDD4MrMgxIAVFPmmmlQOCmdpYP4tqZJ8xo189E5zk8lKF5OyaVYCs5SMmFC3cxCsKjfwGIexNu3ck5Uhwe9jI0tqgkgM3URA=
