name: Test on: push: branches: - main paths: - "**/*.go" - "go.mod" - "go.sum" - ".github/workflows/*.yml" pull_request: types: [opened, synchronize, reopened] paths: - "**/*.go" - "go.mod" - "go.sum" - ".github/workflows/*.yml" jobs: test: permissions: contents: read runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [windows-latest, ubuntu-latest, macos-latest] steps: - name: Checkout codebase uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.23' check-latest: true - name: Restore Cache uses: actions/cache/restore@v4 with: path: resources key: xray-geodat- enableCrossOsArchive: true - name: Format if: matrix.os == 'ubuntu-latest' run: if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then echo "::error ::Please run 'gofmt -w .' on the project root" && exit 1; fi - name: Test run: go test -timeout 1h -v ./...