name: Tests
# Tests runs different tests (test_abci_apps, test_abci_cli, test_apps)
# This workflow runs on every push to master or release branch and  every pull requests
# All jobs will pass without running if no *{.go, .mod, .sum} files have been modified
on:
  pull_request:
  push:
    branches:
      - master
      - release/**

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/setup-go@v2
        with:
          go-version: "1.16"
      - uses: actions/checkout@v2.3.4
      - uses: technote-space/get-diff-action@v4
        with:
          PATTERNS: |
            **/**.go
            go.mod
            go.sum
      - name: install
        run: make install install_abci
        if: "env.GIT_DIFF != ''"
      - uses: actions/cache@v2.1.5
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
        if: env.GIT_DIFF
      # Cache binaries for use by other jobs
      - uses: actions/cache@v2.1.5
        with:
          path: ~/go/bin
          key: ${{ runner.os }}-${{ github.sha }}-tm-binary
        if: env.GIT_DIFF

  test_abci_apps:
    runs-on: ubuntu-latest
    needs: build
    timeout-minutes: 5
    steps:
      - uses: actions/setup-go@v2
        with:
          go-version: "1.16"
      - uses: actions/checkout@v2.3.4
      - uses: technote-space/get-diff-action@v4
        with:
          PATTERNS: |
            **/**.go
            go.mod
            go.sum
      - uses: actions/cache@v2.1.5
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
        if: env.GIT_DIFF
      - uses: actions/cache@v2.1.5
        with:
          path: ~/go/bin
          key: ${{ runner.os }}-${{ github.sha }}-tm-binary
        if: env.GIT_DIFF
      - name: test_abci_apps
        run: abci/tests/test_app/test.sh
        shell: bash
        if: env.GIT_DIFF

  test_abci_cli:
    runs-on: ubuntu-latest
    needs: build
    timeout-minutes: 5
    steps:
      - uses: actions/setup-go@v2
        with:
          go-version: "1.16"
      - uses: actions/checkout@v2.3.4
      - uses: technote-space/get-diff-action@v4
        with:
          PATTERNS: |
            **/**.go
            go.mod
            go.sum
      - uses: actions/cache@v2.1.5
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
        if: env.GIT_DIFF
      - uses: actions/cache@v2.1.5
        with:
          path: ~/go/bin
          key: ${{ runner.os }}-${{ github.sha }}-tm-binary
        if: env.GIT_DIFF
      - run: abci/tests/test_cli/test.sh
        shell: bash
        if: env.GIT_DIFF

  test_apps:
    runs-on: ubuntu-latest
    needs: build
    timeout-minutes: 5
    steps:
      - uses: actions/setup-go@v2
        with:
          go-version: "1.16"
      - uses: actions/checkout@v2.3.4
      - uses: technote-space/get-diff-action@v4
        with:
          PATTERNS: |
            **/**.go
            go.mod
            go.sum
      - uses: actions/cache@v2.1.5
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
        if: env.GIT_DIFF
      - uses: actions/cache@v2.1.5
        with:
          path: ~/go/bin
          key: ${{ runner.os }}-${{ github.sha }}-tm-binary
        if: env.GIT_DIFF
      - name: test_apps
        run: test/app/test.sh
        shell: bash
        if: env.GIT_DIFF
