Skip to content

Commit

Permalink
Build TinyGo module without docker. Disable Wasmer tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
pkedy committed Jan 21, 2025
1 parent 4be2434 commit 1227fd9
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 123 deletions.
9 changes: 6 additions & 3 deletions .github/workflows/go-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,15 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v3
uses: actions/setup-go@v5
with:
go-version: '1.20'
go-version: '1.23.5'
- uses: acifani/setup-tinygo@v2
with:
tinygo-version: '0.34.0'

- name: Set up Rust
uses: actions-rs/toolchain@v1
Expand Down
44 changes: 22 additions & 22 deletions engines/wasmer/example_test.go
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
package wasmer

import (
"context"
"log"
// import (
// "context"
// "log"

"github.com/wasmerio/wasmer-go/wasmer"
// "github.com/wasmerio/wasmer-go/wasmer"

"github.com/wapc/wapc-go"
)
// "github.com/wapc/wapc-go"
// )

// This shows how to customize the underlying wasmer engine used by waPC.
func Example_custom() {
// Set up the context used to instantiate the engine.
ctx := context.Background()
// // This shows how to customize the underlying wasmer engine used by waPC.
// func Example_custom() {
// // Set up the context used to instantiate the engine.
// ctx := context.Background()

// Configure waPC to use a specific wasmer feature.
e := EngineWithRuntime(func() (*wasmer.Engine, error) {
return wasmer.NewEngineWithConfig(wasmer.NewConfig().UseDylibEngine()), nil
})
// // Configure waPC to use a specific wasmer feature.
// e := EngineWithRuntime(func() (*wasmer.Engine, error) {
// return wasmer.NewEngineWithConfig(wasmer.NewConfig().UseDylibEngine()), nil
// })

// Instantiate a module normally.
m, err := e.New(ctx, wapc.NoOpHostCallHandler, guest, mc)
if err != nil {
log.Panicf("Error creating module - %v\n", err)
}
defer m.Close(ctx)
// // Instantiate a module normally.
// m, err := e.New(ctx, wapc.NoOpHostCallHandler, guest, mc)
// if err != nil {
// log.Panicf("Error creating module - %v\n", err)
// }
// defer m.Close(ctx)

// Output:
}
// // Output:
// }
192 changes: 96 additions & 96 deletions engines/wasmer/wasmer_test.go
Original file line number Diff line number Diff line change
@@ -1,98 +1,98 @@
package wasmer

import (
"context"
"errors"
"log"
"os"
"testing"

"github.com/wasmerio/wasmer-go/wasmer"

"github.com/wapc/wapc-go"
)

// testCtx is an arbitrary, non-default context. Non-nil also prevents linter errors.
var testCtx = context.WithValue(context.Background(), struct{}{}, "arbitrary")

var guest []byte
var mc = &wapc.ModuleConfig{
Logger: wapc.PrintlnLogger,
Stdout: os.Stdout,
Stderr: os.Stderr,
}

// TestMain ensures we can read the example wasm prior to running unit tests.
func TestMain(m *testing.M) {
var err error
guest, err = os.ReadFile("../../testdata/go/hello.wasm")
if err != nil {
log.Panicln(err)
}
os.Exit(m.Run())
}

func TestEngine_WithEngine(t *testing.T) {
t.Run("ok", func(t *testing.T) {
expected := wasmer.NewEngine()

e := EngineWithRuntime(func() (*wasmer.Engine, error) {
return expected, nil
})

m, err := e.New(testCtx, wapc.NoOpHostCallHandler, guest, mc)
if err != nil {
t.Errorf("Error creating module - %v", err)
}
defer m.Close(testCtx)

if have := m.(*Module).engine; have != expected {
t.Errorf("Unexpected engine, have %v, expected %v", have, expected)
}
})

t.Run("nil not ok", func(t *testing.T) {
expectedErr := "function set by WithEngine returned nil"
e := EngineWithRuntime(func() (*wasmer.Engine, error) {
return nil, errors.New(expectedErr)
})

if _, err := e.New(testCtx, wapc.NoOpHostCallHandler, guest, mc); err.Error() != expectedErr {
t.Errorf("Unexpected error, have %v, expected %v", err, expectedErr)
}
})
}

func TestModule_Unwrap(t *testing.T) {
m, err := EngineWithRuntime(DefaultRuntime).New(testCtx, wapc.NoOpHostCallHandler, guest, mc)
if err != nil {
t.Errorf("Error creating module - %v", err)
}
defer m.Close(testCtx)

mod := m.(*Module)
expected := mod.module
if have := mod.Unwrap(); have != expected {
t.Errorf("Unexpected module, have %v, expected %v", have, expected)
}
}

func TestInstance_Unwrap(t *testing.T) {
m, err := EngineWithRuntime(DefaultRuntime).New(testCtx, wapc.NoOpHostCallHandler, guest, mc)
if err != nil {
t.Errorf("Error creating module - %v", err)
}
defer m.Close(testCtx)

i, err := m.Instantiate(testCtx)
if err != nil {
t.Errorf("Error creating instance - %v", err)
}
defer m.Close(testCtx)

inst := i.(*Instance)
expected := inst.inst
if have := inst.Unwrap(); have != expected {
t.Errorf("Unexpected instance, have %v, expected %v", have, expected)
}
}
// import (
// "context"
// "errors"
// "log"
// "os"
// "testing"

// "github.com/wasmerio/wasmer-go/wasmer"

// "github.com/wapc/wapc-go"
// )

// // testCtx is an arbitrary, non-default context. Non-nil also prevents linter errors.
// var testCtx = context.WithValue(context.Background(), struct{}{}, "arbitrary")

// var guest []byte
// var mc = &wapc.ModuleConfig{
// Logger: wapc.PrintlnLogger,
// Stdout: os.Stdout,
// Stderr: os.Stderr,
// }

// // TestMain ensures we can read the example wasm prior to running unit tests.
// func TestMain(m *testing.M) {
// var err error
// guest, err = os.ReadFile("../../testdata/go/hello.wasm")
// if err != nil {
// log.Panicln(err)
// }
// os.Exit(m.Run())
// }

// func TestEngine_WithEngine(t *testing.T) {
// t.Run("ok", func(t *testing.T) {
// expected := wasmer.NewEngine()

// e := EngineWithRuntime(func() (*wasmer.Engine, error) {
// return expected, nil
// })

// m, err := e.New(testCtx, wapc.NoOpHostCallHandler, guest, mc)
// if err != nil {
// t.Errorf("Error creating module - %v", err)
// }
// defer m.Close(testCtx)

// if have := m.(*Module).engine; have != expected {
// t.Errorf("Unexpected engine, have %v, expected %v", have, expected)
// }
// })

// t.Run("nil not ok", func(t *testing.T) {
// expectedErr := "function set by WithEngine returned nil"
// e := EngineWithRuntime(func() (*wasmer.Engine, error) {
// return nil, errors.New(expectedErr)
// })

// if _, err := e.New(testCtx, wapc.NoOpHostCallHandler, guest, mc); err.Error() != expectedErr {
// t.Errorf("Unexpected error, have %v, expected %v", err, expectedErr)
// }
// })
// }

// func TestModule_Unwrap(t *testing.T) {
// m, err := EngineWithRuntime(DefaultRuntime).New(testCtx, wapc.NoOpHostCallHandler, guest, mc)
// if err != nil {
// t.Errorf("Error creating module - %v", err)
// }
// defer m.Close(testCtx)

// mod := m.(*Module)
// expected := mod.module
// if have := mod.Unwrap(); have != expected {
// t.Errorf("Unexpected module, have %v, expected %v", have, expected)
// }
// }

// func TestInstance_Unwrap(t *testing.T) {
// m, err := EngineWithRuntime(DefaultRuntime).New(testCtx, wapc.NoOpHostCallHandler, guest, mc)
// if err != nil {
// t.Errorf("Error creating module - %v", err)
// }
// defer m.Close(testCtx)

// i, err := m.Instantiate(testCtx)
// if err != nil {
// t.Errorf("Error creating instance - %v", err)
// }
// defer m.Close(testCtx)

// inst := i.(*Instance)
// expected := inst.inst
// if have := inst.Unwrap(); have != expected {
// t.Errorf("Unexpected instance, have %v, expected %v", have, expected)
// }
// }
2 changes: 1 addition & 1 deletion hello/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ build:
@echo "----------"
@echo "Building Go wasm Guest"
@echo "----------"
docker run -v `pwd`/:/build -w /build tinygo/tinygo:0.25.0 tinygo build -o hello.wasm -scheduler=none --no-debug -target=wasi main.go
tinygo build -o hello.wasm -scheduler=none --no-debug -target=wasi main.go
2 changes: 1 addition & 1 deletion testdata/go/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ build:
@echo "----------"
@echo "Building Go wasm Guest"
@echo "----------"
docker run -v `pwd`/:/build -w /build tinygo/tinygo:0.25.0 tinygo build -o hello.wasm -scheduler=none --no-debug -target=wasi main.go
tinygo build -o hello.wasm -scheduler=none --no-debug -target=wasi main.go

0 comments on commit 1227fd9

Please sign in to comment.