name: Build and Test Spartan

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install
      run: rustup default stable
    - name: Install rustfmt Components
      run: rustup component add rustfmt
    - name: Install clippy
      run: rustup component add clippy
    - name: Build
      run: cargo build --verbose
    - name: Run tests
      run: cargo test --verbose
    - name: Build examples
      run: cargo build --examples --verbose
    - name: Check Rustfmt Code Style
      run: cargo fmt --all -- --check
    - name: Check clippy warnings
      run: cargo clippy --all-targets --all-features -- -D warnings

  build_wasm:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install
      run: rustup default stable
    - name: Build without std
      run: cargo build --no-default-features --verbose
    - name: Run tests without std
      run: cargo test --no-default-features --verbose
    - name: Build examples without std
      run: cargo build --examples --no-default-features --verbose
    - name: Install wasm32-wasi target
      run: rustup target add wasm32-wasi
    - name: Install wasm32-unknown-unknown target
      run: rustup target add wasm32-unknown-unknown
    - name: Build for target wasm-wasi
      run: RUSTFLAGS="" cargo build --target=wasm32-wasi --no-default-features --verbose