language: rust
sudo: false
dist: trusty

cache:
  cargo: true
  apt: true

matrix:
  include:
    - rust: 1.24.0
    - rust: stable
    - rust: beta
    - rust: nightly
  allow_failures:
    - rust: nightly

env:
  global:
    # - RUSTFLAGS="-C link-dead-code"
    - OPENSSL_VERSION=openssl-1.0.2

before_install:
  - sudo add-apt-repository -y ppa:0k53d-karl-f830m/openssl
  - sudo apt-get update -qq
  - sudo apt-get install -qq libssl-dev libelf-dev libdw-dev cmake gcc binutils-dev libiberty-dev

# Add clippy
before_script:
  - export PATH=$PATH:~/.cargo/bin

script:
  - |
    cargo clean
    cargo test --features="alpn,tls" -- --nocapture

# Upload docs
after_success:
  - |
    if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" = "false" && "$TRAVIS_BRANCH" == "master" && "$TRAVIS_RUST_VERSION" == "beta" ]]; then
      cargo doc --features "alpn, tls, session" --no-deps &&
      echo "<meta http-equiv=refresh content=0;url=os_balloon/index.html>" > target/doc/index.html &&
      git clone https://github.com/davisp/ghp-import.git &&
      ./ghp-import/ghp_import.py -n -p -f -m "Documentation upload" -r https://"$GH_TOKEN"@github.com/"$TRAVIS_REPO_SLUG.git" target/doc &&
      echo "Uploaded documentation"
    fi

  - |
    if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_RUST_VERSION" == "nightly" ]]; then
      bash <(curl https://raw.githubusercontent.com/xd009642/tarpaulin/master/travis-install.sh)
      USE_SKEPTIC=1 cargo tarpaulin --out Xml
      bash <(curl -s https://codecov.io/bash)
      echo "Uploaded code coverage"
    fi