language: rust
rust:
  - nightly-2018-12-06
cache:
  cargo: true
  directories:
  - kcov-master
sudo: true
dist: trusty
services: postgres

addons:
  apt:
    packages:
      - libcurl4-openssl-dev
      - libelf-dev
      - libdw-dev
      - cmake
      - gcc
      - binutils-dev
      - zlib1g-dev
      - libiberty-dev
stages:
  - build
  - test and coverage
jobs:
  include:
    - stage: build
      name: "Build with postgresql"
      env:
        - MIGRATION_DIR=migrations/postgres FEATURES=postgres DATABASE_URL=postgres://postgres@localhost/plume
      script: cargo build --no-default-features --features="${FEATURES}" --release
    - stage: build
      name: "Build with sqlite"
      env:
        - MIGRATION_DIR=migrations/sqlite   FEATURES=sqlite   DATABASE_URL=plume.sqlite3
      script: cargo build --no-default-features --features="${FEATURES}" --release
    - stage: test and coverage
      name: "Test with potgresql backend"
      env:
        - MIGRATION_DIR=migrations/postgres FEATURES=postgres DATABASE_URL=postgres://postgres@localhost/plume_tests
        - RUSTFLAGS='-C link-dead-code' RUST_TEST_THREADS=1
      before_script: psql -c 'create database plume_tests;' -U postgres
      script:
        - |
            cargo test --features "${FEATURES}" --no-default-features  --all &&
            ./script/compute_coverage.sh
    - stage: test and coverage
      name: "Test with Sqlite backend"
      env:
        - MIGRATION_DIR=migrations/sqlite   FEATURES=sqlite   DATABASE_URL=plume.sqlite3
        - RUSTFLAGS='-C link-dead-code' RUST_TEST_THREADS=1
      script:
        - |
            cargo test --features "${FEATURES}" --no-default-features --all &&
            ./script/compute_coverage.sh
