language: rust

rust:
  - 1.20.0
  - stable
  - beta
  - nightly

sudo: required
dist: trusty

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:
  - |
    if [[ "$TRAVIS_RUST_VERSION" == "nightly" ]]; then
        ( ( cargo install clippy && export CLIPPY=true ) || export CLIPPY=false );
    fi
  - export PATH=$PATH:~/.cargo/bin

script:
  - USE_SKEPTIC=1 cargo test --features=alpn
  - |
    if [[ "$TRAVIS_RUST_VERSION" == "nightly" && $CLIPPY ]]; then
        cargo clippy
    fi

# Upload docs
after_success:
  - |
    if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" = "false" && "$TRAVIS_BRANCH" == "master" && "$TRAVIS_RUST_VERSION" == "nightly" ]]; then
      cargo doc --features alpn --no-deps &&
      echo "<meta http-equiv=refresh content=0;url=os_balloon/index.html>" > target/doc/index.html &&
      cargo install mdbook &&
      cd guide && mdbook build -d ../target/doc/guide && cd .. &&
      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" == "stable" ]]; then
      wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz &&
      tar xzf master.tar.gz &&
      cd kcov-master &&
      mkdir build &&
      cd build &&
      cmake .. &&
      make &&
      make install DESTDIR=../../kcov-build &&
      cd ../.. &&
      rm -rf kcov-master &&
      for file in target/debug/actix_web-*[^\.d]; do mkdir -p "target/cov/$(basename $file)"; ./kcov-build/usr/local/bin/kcov --exclude-pattern=/.cargo,/usr/lib --verify "target/cov/$(basename $file)" "$file"; done &&
      for file in target/debug/test_*[^\.d]; do mkdir -p "target/cov/$(basename $file)"; ./kcov-build/usr/local/bin/kcov --exclude-pattern=/.cargo,/usr/lib --verify "target/cov/$(basename $file)" "$file"; done &&
      bash <(curl -s https://codecov.io/bash) &&
      echo "Uploaded code coverage"
    fi