language: rust
rust: stable
addons:
  apt:
    packages:
      - libssl-dev

jobs:
  allow_failures:
    - os: osx
      name: macOS 10.15

  include:
    - stage: Format
      os: linux
      before_script:
        - rustup component add rustfmt
      script:
        - cargo fmt --all -- --check

    - stage: Clippy
      os: linux
      before_script:
        - rustup component add clippy
      script:
        - cargo clippy --all-targets --all-features -- -D warnings

    - stage: Test
      os: linux

    - os: windows
      script:
          - cd matrix_sdk
          - cargo test --no-default-features --features "messages"
          - cd ../matrix_sdk_base
          - cargo test --no-default-features --features "messages"

    - os: osx

    - os: linux
      name: Minimal build
      script:
          - cd matrix_sdk
          - cargo build --no-default-features

    - os: osx
      name: macOS 10.15
      osx_image: xcode12

    - os: linux
      name: Coverage
      before_script:
          - cargo install cargo-tarpaulin
      script:
          - cargo tarpaulin --ignore-config --exclude-files "matrix_sdk/examples/*,matrix_sdk_common,matrix_sdk_test" --out Xml
      after_success:
          - bash <(curl -s https://codecov.io/bash)

    - os: linux
      name: wasm32-unknown-unknown
      before_script:
          - |
            set -e
            cargo install wasm-bindgen-cli
            rustup target add wasm32-unknown-unknown
            wget https://github.com/emscripten-core/emsdk/archive/master.zip
            unzip master.zip
            ./emsdk-master/emsdk install latest
            ./emsdk-master/emsdk activate latest
      script:
          - |
            set -e
            source emsdk-master/emsdk_env.sh
            cd matrix_sdk/examples/wasm_command_bot
            cargo build --target wasm32-unknown-unknown
            cd -

            cd matrix_sdk_base
            cargo test --target wasm32-unknown-unknown --no-default-features

script:
  - cargo build
  - cargo test