name: Tests on: push: branches: [ main, master ] pull_request: branches: [ main, master ] jobs: test: runs-on: ubuntu-latest strategy: matrix: go-version: ['1.25', '1.26'] steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: ${{ matrix.go-version }} - name: Cache Go modules uses: actions/cache@v4 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Download dependencies run: go mod download - name: Run unit tests run: go test -v ./parser/... ./generator/... - name: Run benchmarks (short) run: go test -bench=. -benchtime=100ms -run=^$ ./benchmarks/... lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.23' - name: golangci-lint uses: golangci/golangci-lint-action@v7 with: version: latest args: --timeout=5m build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.23' - name: Build arpack CLI run: go build -v ./cmd/arpack - name: Test code generation run: | go run ./cmd/arpack -in testdata/sample.go -out-go /tmp/gen-go -out-ts /tmp/gen-ts test -f /tmp/gen-go/sample_gen.go test -f /tmp/gen-ts/Sample.gen.ts e2e: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.23' - name: Set up .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '9.0.x' - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Run E2E tests run: go test -v ./e2e/...