name: test-suite

on: [push]

jobs:
  cargo-fmt:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Get latest version of stable Rust
      run: rustup update stable
    - name: Check formatting with cargo fmt
      run: make cargo-fmt
  release-tests-ubuntu:
    runs-on: ubuntu-latest
    needs: cargo-fmt
    steps:
    - uses: actions/checkout@v1
    - name: Get latest version of stable Rust
      run: rustup update stable
    - name: Install ganache-cli
      run: sudo npm install -g ganache-cli
    - name: Run tests in release
      run: make test-release
  debug-tests-ubuntu:
    runs-on: ubuntu-latest
    needs: cargo-fmt
    steps:
    - uses: actions/checkout@v1
    - name: Get latest version of stable Rust
      run: rustup update stable
    - name: Install ganache-cli
      run: sudo npm install -g ganache-cli
    - name: Run tests in debug
      run: make test-debug
  ef-tests-ubuntu:
    runs-on: ubuntu-latest
    needs: cargo-fmt
    steps:
    - uses: actions/checkout@v1
    - name: Get latest version of stable Rust
      run: rustup update stable
    - name: Run eth2.0-spec-tests with and without fake_crypto
      run: make test-ef
  dockerfile-ubuntu:
    runs-on: ubuntu-latest
    needs: cargo-fmt
    steps:
    - uses: actions/checkout@v1
    - name: Build the root Dockerfile
      run: docker build .
  simulator-ubuntu:
    runs-on: ubuntu-latest
    needs: cargo-fmt
    steps:
    - uses: actions/checkout@v1
    - name: Install ganache-cli
      run: sudo npm install -g ganache-cli
    - name: Run the beacon chain sim
      run: cargo run --release --bin beacon_chain_sim
