...
1name: WebAssembly Core Specification Test
2on:
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
16defaults:
17 run: # use bash for all operating systems unless overridden
18 shell: bash
19
20concurrency:
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
25jobs:
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
39 steps:
40 - uses: actions/checkout@v3
41
42 - uses: actions/setup-go@v4
43 with:
44 go-version: ${{ matrix.go-version }}
45
46 - run: make spectest.${{ matrix.spec-version }}
47
48 test_scratch:
49 name: ${{ matrix.spec-version }} / ${{ matrix.arch }}, Go-${{ matrix.go-version }}
50 runs-on: ubuntu-22.04
51 strategy:
52 fail-fast: false # don't fail fast as sometimes failures are arch/OS specific
53 matrix: # Use versions consistent with wazero's Go support policy.
54 go-version:
55 - "1.21" # Current Go version
56 - "1.19" # Floor Go version of wazero (current - 2)
57 arch:
58 - "arm64"
59 - "riscv64"
60 spec-version:
61 - "v1"
62 - "v2"
63
64 steps:
65 - uses: actions/checkout@v3
66
67 - uses: actions/setup-go@v4
68 with:
69 go-version: ${{ matrix.go-version }}
70
71 - name: Build test binaries
72 run: go list -f '{{.Dir}}' ./... | grep 'spectest/${{ matrix.spec-version }}' | xargs -Ipkg go test pkg -c -o spectest.test
73 env:
74 GOARCH: ${{ matrix.arch }}
75 CGO_ENABLED: 0
76
77 - name: Set up QEMU
78 if: ${{ matrix.arch != 'amd64' }}
79 uses: docker/setup-qemu-action@v2
80 with: # Avoid docker.io rate-limits; built with internal-images.yml
81 image: ghcr.io/tetratelabs/wazero/internal-binfmt
82 platforms: ${{ matrix.arch }}
83
84 - name: Build scratch container
85 run: |
86 echo 'FROM scratch' >> Dockerfile
87 echo 'CMD ["/test"]' >> Dockerfile
88 docker buildx build -t wazero:test --platform linux/${{ matrix.arch }} .
89
90 - name: Run built test binaries
91 # Note: This mounts /tmp to allow t.TempDir() in tests.
92 run: docker run --platform linux/${{ matrix.arch }} -v $(pwd)/spectest.test:/test --tmpfs /tmp --rm -t wazero:test
View as plain text