name: Tests

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

jobs:

  build:
    name: Build and Test
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Run golangci-lint
      uses: actions-contrib/golangci-lint@v1

    - name: Set up Go 1.x
      uses: actions/setup-go@v2
      with:
        go-version: ^1.13
      id: go

    - name: Check generated files
      run: |
        PROTOC_ZIP=protoc-3.6.1-linux-x86_64.zip
        curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/$PROTOC_ZIP
        sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
        sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
        sudo chmod -R o+r /usr/local/include/google/
        rm -f $PROTOC_ZIP
        make gen
        git update-index --refresh || (git diff; exit 1)

    - name: Build and Test
      run: make test

    - name: Upload test coverage result
      uses: actions/upload-artifact@v1
      with:
        name: Coverage
        path: /tmp/coverage.html