name: Fuzz Testing

on:
  push:
    branches:
      - master
  pull_request:

jobs:
  echidna:
    name: Echidna
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set up node
        uses: actions/setup-node@v1
        with:
          node-version: 12

      - name: Set up Python 3.8
        uses: actions/setup-python@v2
        with:
          python-version: 3.8

      - name: Install node dependencies
        run: yarn

      - name: Install slither
        run: |
          python -m pip install --upgrade pip
          pip3 install slither-analyzer

      # workaround for https://github.com/crytic/crytic-compile/issues/113
      - name: Install solc
        run: |
          sudo wget -O /usr/bin/solc https://github.com/ethereum/solidity/releases/download/v0.6.12/solc-static-linux
          sudo chmod +x /usr/bin/solc

      - name: Install echidna
        run: |
          sudo wget -O /tmp/echidna-test.tar.gz https://github.com/crytic/echidna/releases/download/v1.5.1/echidna-test-v1.5.1-Ubuntu-18.04.tar.gz
          sudo tar -xf /tmp/echidna-test.tar.gz -C /usr/bin
          sudo chmod +x /usr/bin/echidna-test

      - name: BabylonianEchidnaTest
        run: |
          echidna-test . --contract BabylonianEchidnaTest --config echidna.config.yml

      - name: BitMathEchidnaTest
        run: |
          echidna-test . --contract BitMathEchidnaTest --config echidna.config.yml

      - name: FullMathEchidnaTest
        run: |
          echidna-test . --contract FullMathEchidnaTest --config echidna.config.yml
