name: Test
on: [push, pull_request]
jobs:
  native:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]
        rust: [stable, beta]
    steps:
    - uses: hecrj/setup-rust-action@v1
      with:
        rust-version: ${{ matrix.rust }}
    - uses: actions/checkout@master
    - name: Install dependencies
      if: matrix.os == 'ubuntu-latest'
      run: |
        export DEBIAN_FRONTED=noninteractive
        sudo apt-get -qq update
        sudo apt-get install -y libxkbcommon-dev
    - name: Run tests
      run: |
        cargo test --verbose --workspace
        cargo test --verbose --workspace --all-features

  web:
    runs-on: ubuntu-latest
    steps:
    - uses: hecrj/setup-rust-action@v1
      with:
        rust-version: stable
        targets: wasm32-unknown-unknown
    - uses: actions/checkout@master
    - name: Run checks
      run: cargo check --package iced --target wasm32-unknown-unknown
    - name: Check compilation of `tour` example
      run: cargo build --package tour --target wasm32-unknown-unknown
    - name: Check compilation of `todos` example
      run: cargo build --package todos --target wasm32-unknown-unknown
    - name: Check compilation of `integration_wgpu` example
      run: cargo build --package integration_wgpu --target wasm32-unknown-unknown
