From 84cc90e3433bfe064bf55b7c6e4fe1eb6d448337 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Thu, 14 Nov 2024 16:02:15 +0000 Subject: [PATCH] Test CI. Signed-off-by: Nuno Cruces --- .github/workflows/commit.yaml | 38 +++++++++++++++++++++++++++++++++ internal/sysfs/file_test.go | 19 ----------------- internal/sysfs/futimens_test.go | 12 +++++++++++ sys/stat_test.go | 2 +- 4 files changed, 51 insertions(+), 20 deletions(-) diff --git a/.github/workflows/commit.yaml b/.github/workflows/commit.yaml index fc3027c726..158e411834 100644 --- a/.github/workflows/commit.yaml +++ b/.github/workflows/commit.yaml @@ -152,6 +152,44 @@ jobs: # This runs all tests compiled above in sequence. Note: This mounts /tmp to allow t.TempDir() in tests. run: find . -name "*.test" | xargs -Itestbin docker run --platform linux/${{ matrix.arch }} -v $(pwd)/testbin:/test -v $(pwd)/wazerocli:/wazero -e WAZEROCLI=/wazero --tmpfs /tmp --rm -t wazero:test + test_bsd: + name: amd64, ${{ matrix.os.name }} + runs-on: ubuntu-22.04 + strategy: + fail-fast: false # don't fail fast as sometimes failures are OS specific + matrix: + os: + - name: freebsd + version: "14.1" + - name: openbsd + version: "7.5" + - name: netbsd + version: "10.0" + + steps: + + - uses: actions/checkout@v3 + + - name: Build test binaries + run: | + go list -f '{{.Dir}}' ./... | egrep -v 'imports|sysfs|integration_test/[^s]' | xargs -Ipkg go test pkg -c -o pkg.test + go build -o wazerocli ./cmd/wazero + env: + GOOS: ${{ matrix.os.name }} + + - name: Run built test binaries + uses: cross-platform-actions/action@v0.25.0 + env: + WAZEROCLI: ./wazerocli + with: + operating_system: ${{ matrix.os.name }} + version: ${{ matrix.os.version }} + shell: bash + sync_files: runner-to-vm + environment_variables: WAZEROCLI + # This runs all tests compiled above in sequence. Note: This mounts /tmp to allow t.TempDir() in tests. + run: find . -name "*.test" | xargs -t -Itestbin nice testbin + # This ensures that internal/integration_test/fuzz is runnable, and is not intended to # run full-length fuzzing while trying to find low-hanging frontend bugs. fuzz: diff --git a/internal/sysfs/file_test.go b/internal/sysfs/file_test.go index 9bcd1a2201..b2ef360e20 100644 --- a/internal/sysfs/file_test.go +++ b/internal/sysfs/file_test.go @@ -1000,25 +1000,6 @@ func TestFileTruncate(t *testing.T) { }) } -func TestFileUtimens(t *testing.T) { - switch runtime.GOOS { - case "linux", "darwin": // supported - case "freebsd": // TODO: support freebsd w/o CGO - case "windows": - default: // expect ENOSYS and callers need to fall back to Utimens - t.Skip("unsupported GOOS", runtime.GOOS) - } - - testUtimens(t, true) - - testEBADFIfFileClosed(t, func(f experimentalsys.File) experimentalsys.Errno { - return f.Utimens(experimentalsys.UTIME_OMIT, experimentalsys.UTIME_OMIT) - }) - testEBADFIfDirClosed(t, func(d experimentalsys.File) experimentalsys.Errno { - return d.Utimens(experimentalsys.UTIME_OMIT, experimentalsys.UTIME_OMIT) - }) -} - func TestNewStdioFile(t *testing.T) { // simulate regular file attached to stdin f, err := os.CreateTemp(t.TempDir(), "somefile") diff --git a/internal/sysfs/futimens_test.go b/internal/sysfs/futimens_test.go index 5e690b0dfc..abb66e44d7 100644 --- a/internal/sysfs/futimens_test.go +++ b/internal/sysfs/futimens_test.go @@ -10,6 +10,7 @@ import ( "time" "github.com/tetratelabs/wazero/experimental/sys" + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/platform" "github.com/tetratelabs/wazero/internal/testing/require" ) @@ -22,6 +23,17 @@ func TestUtimens(t *testing.T) { testUtimens(t, false) } +func TestFileUtimens(t *testing.T) { + testUtimens(t, true) + + testEBADFIfFileClosed(t, func(f experimentalsys.File) experimentalsys.Errno { + return f.Utimens(experimentalsys.UTIME_OMIT, experimentalsys.UTIME_OMIT) + }) + testEBADFIfDirClosed(t, func(d experimentalsys.File) experimentalsys.Errno { + return d.Utimens(experimentalsys.UTIME_OMIT, experimentalsys.UTIME_OMIT) + }) +} + func testUtimens(t *testing.T, futimes bool) { // Note: This sets microsecond granularity because Windows doesn't support // nanosecond. diff --git a/sys/stat_test.go b/sys/stat_test.go index 32d0ffeac7..f58b16535e 100644 --- a/sys/stat_test.go +++ b/sys/stat_test.go @@ -117,7 +117,7 @@ func Test_NewStat_t(t *testing.T) { tc := tt t.Run(tc.name, func(t *testing.T) { st := sys.NewStat_t(tc.info) - if tc.expectDevIno && runtime.GOOS != "windows" { + if tc.expectDevIno && (runtime.GOOS == "linux" || runtime.GOOS == "darwin" || runtime.GOOS == "freebsd") { require.NotEqual(t, uint64(0), st.Dev) require.NotEqual(t, uint64(0), st.Ino) } else {