name: CI

on:
  push:
    branches:
    - master
  pull_request: {}

jobs:
  check:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        rust: [beta]

    env:
      RUSTFLAGS: "-D warnings"

    steps:
    - uses: hecrj/setup-rust-action@master
      with:
        rust-version: ${{ matrix.rust }}
    - uses: actions/checkout@master
    - name: Install rustfmt
      run: rustup component add rustfmt
    - name: Check fmt
      run: cargo fmt -- --check
    - name: Check all
      run: cargo check --all
    - name: Check with no default features
      run: cargo check -p tonic --no-default-features
    - name: Check with transport no tls
      run: cargo check -p tonic
    - name: Check with transport w/ openssl
      run: cargo check -p tonic --features openssl
    - name: Check with transport w/ rustls
      run: cargo check -p tonic --features rustls

  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        rust: [beta]

    env:
      RUSTFLAGS: "-D warnings"

    steps:
    - uses: hecrj/setup-rust-action@master
      with:
        rust-version: ${{ matrix.rust }}
    - name: Install rustfmt
      run: rustup component add rustfmt
    - uses: actions/checkout@master
    - name: Run tests
      run: cargo test --all --all-features

  interop:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macOS-latest]
        rust: [beta]

    env:
      RUSTFLAGS: "-D warnings"

    steps:
    - uses: hecrj/setup-rust-action@master
      with:
        rust-version: ${{ matrix.rust }}
    - uses: actions/checkout@master
    - name: Install rustfmt
      run: rustup component add rustfmt
    - name: Run interop tests
      run: ./tonic-interop/test.sh
    - name: Run interop tests with tls
      run: ./tonic-interop/test.sh --use_tls

