# Build and test on stable, beta, and nightly on Windows.
#
# Copied general structure from https://github.com/japaric/rust-everywhere/blob/master/appveyor.yml

environment:
  matrix:
    # Stable channel
    - TARGET: i686-pc-windows-gnu
      CHANNEL: stable
    - TARGET: i686-pc-windows-msvc
      CHANNEL: stable
    - TARGET: x86_64-pc-windows-gnu
      CHANNEL: stable
    - TARGET: x86_64-pc-windows-msvc
      CHANNEL: stable
    # Beta channel
    - TARGET: i686-pc-windows-gnu
      CHANNEL: beta
    - TARGET: i686-pc-windows-msvc
      CHANNEL: beta
    - TARGET: x86_64-pc-windows-gnu
      CHANNEL: beta
    - TARGET: x86_64-pc-windows-msvc
      CHANNEL: beta
    # Nightly channel
    - TARGET: i686-pc-windows-gnu
      CHANNEL: nightly
    - TARGET: i686-pc-windows-msvc
      CHANNEL: nightly
    - TARGET: x86_64-pc-windows-gnu
      CHANNEL: nightly
    - TARGET: x86_64-pc-windows-msvc
      CHANNEL: nightly

# Install Rust and Cargo
# (Based on from https://github.com/rust-lang/libc/blob/master/appveyor.yml)
install:
  - curl -sSf -o rustup-init.exe https://win.rustup.rs
  - rustup-init.exe --default-host %TARGET% --default-toolchain %CHANNEL% -y
  - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin
  - rustc -Vv
  - cargo -V


# 'cargo test' takes care of building for us, so disable Appveyor's build stage. This prevents
# the "directory does not contain a project or solution file" error.
# source: https://github.com/starkat99/appveyor-rust/blob/master/appveyor.yml#L113
build: false

test_script:
  # Build library standalone, with Iron, and with Rocket integrations enabled, respectively
  - cargo build --verbose
  - cargo build --verbose --features iron-handlers
  - IF "%CHANNEL%"=="nightly" (cargo build --verbose --features rocket-handlers)

  # Build example binaries; first Iron, then Rocket examples
  - cargo build --verbose --example server --features "iron-handlers expose-test-schema"
  - IF "%CHANNEL%"=="nightly" (cargo build --verbose --example rocket-server --features "rocket-handlers expose-test-schema")

  # Run all tests for the base library and available integrations
  - set TEST_FEATURES=iron-handlers expose-test-schema
  - IF "%CHANNEL%"=="nightly" (set TEST_FEATURES=%TEST_FEATURES% rocket-handlers rocket/testing)

  - cargo test --verbose --features "%TEST_FEATURES%"