language: go

os:
  - linux
  - osx
  - windows

arch:
  - amd64
  - arm64

go:
  - 1.13.x
  - 1.14.x
  - 1.15.x
  - 1.16.x
  - master

script:
  - go vet ./...
  - go test -test.v -test.run ^TestCPUID$
  - go test -race ./...
  - go test -tags=noasm ./...

matrix:
  allow_failures:
    - go: 'master'
  fast_finish: true
  include:
    - stage: gofmt
      go: 1.15.x
      os: linux
      arch: amd64
      script:
        - diff <(gofmt -d .) <(printf "")
        - diff <(gofmt -d ./private) <(printf "")
        - go install github.com/klauspost/asmfmt/cmd/asmfmt
        - diff <(asmfmt -d .) <(printf "")
    - stage: i386
      go: 1.15.x
      os: linux
      arch: amd64
      script:
        - GOOS=linux GOARCH=386 go test .
    - stage: buildotherprev
      go: 1.15.x
      os: linux
      arch: amd64
      script:
        - ./test-architectures.sh
    - stage: buildother
      go: 1.16.x
      os: linux
      arch: amd64
      script:
        - ./test-architectures.sh