Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add BSD to CI. #2338

Merged
merged 5 commits into from
Nov 14, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/workflows/commit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:

ncruces marked this conversation as resolved.
Show resolved Hide resolved
- uses: actions/checkout@v3

- name: Build test binaries
run: |
go list -f '{{.Dir}}' ./... | egrep -v 'imports|sysfs' | 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.
ncruces marked this conversation as resolved.
Show resolved Hide resolved
run: find . -name "*.test" | xargs -Itestbin nice testbin -test.short

# 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:
Expand Down
19 changes: 0 additions & 19 deletions internal/sysfs/file_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
12 changes: 12 additions & 0 deletions internal/sysfs/futimens_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand All @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion sys/stat_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Loading