cargo-kcov 0.3.1

Cargo subcommand to run kcov to get coverage report on Linux and macOS
language: rust
sudo: false

addons:
    apt:
        packages:
            - libcurl4-openssl-dev
            - libelf-dev
            - libdw-dev
            - binutils-dev
            #- libiberty-dev # <- no such thing in Ubuntu 12.04
            - g++

os:
    - linux
#   - osx

rust:
    - 1.11.0
    - 1.14.0
    - nightly

env:
    matrix:
        - ARCH=x86_64
#       - ARCH=i686
        # ignoring 32-bit targets until a proper 32-bit environment is provided.
        # see https://github.com/travis-ci/travis-ci/issues/986

install:
    # 1. Install kcov v33.
    - export KCOV_VERSION=33
    - mkdir -p ~/.cargo/bin
    - |
        wget https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz &&
        tar xzf v${KCOV_VERSION}.tar.gz &&
        cd kcov-${KCOV_VERSION} &&
        mkdir build &&
        cd build &&
        cmake .. &&
        make &&
        cp src/kcov src/libkcov_sowrapper.so ~/.cargo/bin &&
        cd ../..
    - export PATH=$HOME/.local/bin:$HOME/.cargo/bin:$HOME/Library/Python/2.7/bin:$PATH
    - export RUSTFLAGS="-C link-dead-code"
    - kcov --version

    # 2. Install rustup.
    - if [ "$TRAVIS_OS_NAME" = 'linux' ]; then OS=unknown-linux-gnu; else OS=apple-darwin; fi
    - export HOST=$ARCH-$OS
    - curl -SfLO "https://static.rust-lang.org/rustup/dist/$HOST/rustup-init"
    - chmod u+x rustup-init
    - ./rustup-init -y --default-host "$HOST" --default-toolchain "$TRAVIS_RUST_VERSION"
    - export PATH=$HOME/.cargo/bin:$HOME/.local/bin:$PATH
    - rustc -vV
    - cargo -vV

script:
    - cargo build
    - cargo test

after_success:
    # Note: we skip the `check-specimen` test in coverage because kcov cannot do recursive-ptrace.
    # Track this file: https://github.com/SimonKagstrom/kcov/blob/master/tests/recursive-ptrace/main.cc
    - cargo run -- kcov --no-clean-rebuild --lib --coveralls