name: Go

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

       
jobs:
  build:
    strategy:
      matrix:
        go-version: [1.14.x, 1.15.x, 1.16.x]
        os: [ubuntu-latest, macos-latest, windows-latest]        
    env:
      CGO_ENABLED: 0
    runs-on: ${{ matrix.os }}
    steps:
    - name: Set up Go
      uses: actions/setup-go@v2      
      with:
        go-version: ${{ matrix.go-version }}

    - name: Checkout code
      uses: actions/checkout@v2

    - name: Vet
      run: go vet ./...

    - name: Test
      run: go test ./...

    - name: Test Noasm
      run: go test -tags=noasm ./...

    - name: Test Race
      env:
        CGO_ENABLED: 1
      run: go test -cpu="1,4" -short -race ./...
      
  build-special:
    env:
      CGO_ENABLED: 0
    runs-on: ubuntu-latest
    steps:
    - name: Set up Go
      uses: actions/setup-go@v2      
      with:
        go-version: 1.16.x

    - name: Checkout code
      uses: actions/checkout@v2

    - name: fmt
      run: diff <(gofmt -d .) <(printf "")

    - name: Test 386
      run: GOOS=linux GOARCH=386 go test -short ./...

    - name: Build s2c
      run: go build github.com/klauspost/compress/s2/cmd/s2c && go build github.com/klauspost/compress/s2/cmd/s2d&&./s2c -verify s2c &&./s2d s2c.s2&&rm ./s2c&&rm s2d&&rm s2c.s2

    - name: goreleaser deprecation
      run: curl -sfL https://git.io/goreleaser | VERSION=v0.162.0 sh -s -- check
      
    - name: goreleaser snapshot
      run: curl -sL https://git.io/goreleaser | VERSION=v0.162.0 sh -s -- --snapshot --skip-publish --rm-dist

