github.com/wasilibs/wazerox@v0.0.0-20240124024944-4923be63ab5f/.github/workflows/spectest.yaml (about) 1 name: WebAssembly Core Specification Test 2 on: 3 pull_request: 4 branches: [main] 5 paths-ignore: # ignore docs as they are built with Netlify. 6 - '**/*.md' 7 - 'site/**' 8 - 'netlify.toml' 9 push: 10 branches: [main] 11 paths-ignore: # ignore docs as they are built with Netlify. 12 - '**/*.md' 13 - 'site/**' 14 - 'netlify.toml' 15 16 defaults: 17 run: # use bash for all operating systems unless overridden 18 shell: bash 19 20 concurrency: 21 # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run 22 group: ${{ github.ref }}-${{ github.workflow }}-${{ github.actor }} 23 cancel-in-progress: true 24 25 jobs: 26 test_amd64: 27 name: ${{ matrix.spec-version }} - linux/amd64, Go-${{ matrix.go-version }} 28 runs-on: ubuntu-22.04 29 strategy: 30 fail-fast: false # don't fail fast as sometimes failures are arch/OS specific 31 matrix: # Use versions consistent with wazero's Go support policy. 32 go-version: 33 - "1.21" # Current Go version 34 - "1.19" # Floor Go version of wazero (current - 2) 35 spec-version: 36 - "v1" 37 - "v2" 38 - "threads" 39 40 steps: 41 - uses: actions/checkout@v3 42 43 - uses: actions/setup-go@v4 44 with: 45 go-version: ${{ matrix.go-version }} 46 47 - run: make spectest.${{ matrix.spec-version }} 48 49 test_scratch: 50 name: ${{ matrix.spec-version }} / ${{ matrix.arch }}, Go-${{ matrix.go-version }} 51 runs-on: ubuntu-22.04 52 strategy: 53 fail-fast: false # don't fail fast as sometimes failures are arch/OS specific 54 matrix: # Use versions consistent with wazero's Go support policy. 55 go-version: 56 - "1.21" # Current Go version 57 - "1.19" # Floor Go version of wazero (current - 2) 58 arch: 59 - "arm64" 60 - "riscv64" 61 spec-version: 62 - "v1" 63 - "v2" 64 - "threads" 65 66 steps: 67 - uses: actions/checkout@v3 68 69 - uses: actions/setup-go@v4 70 with: 71 go-version: ${{ matrix.go-version }} 72 73 - name: Build test binaries 74 run: go list -f '{{.Dir}}' ./... | grep 'spectest/${{ matrix.spec-version }}' | xargs -Ipkg go test pkg -c -o spectest.test 75 env: 76 GOARCH: ${{ matrix.arch }} 77 CGO_ENABLED: 0 78 79 - name: Set up QEMU 80 if: ${{ matrix.arch != 'amd64' }} 81 uses: docker/setup-qemu-action@v2 82 with: # Avoid docker.io rate-limits; built with internal-images.yml 83 image: ghcr.io/tetratelabs/wazero/internal-binfmt 84 platforms: ${{ matrix.arch }} 85 86 - name: Build scratch container 87 run: | 88 echo 'FROM scratch' >> Dockerfile 89 echo 'CMD ["/test"]' >> Dockerfile 90 docker buildx build -t wazero:test --platform linux/${{ matrix.arch }} . 91 92 - name: Run built test binaries 93 # Note: This mounts /tmp to allow t.TempDir() in tests. 94 run: docker run --platform linux/${{ matrix.arch }} -v $(pwd)/spectest.test:/test --tmpfs /tmp --rm -t wazero:test