wasmerio / wasmer-go

🐹🕸️ WebAssembly runtime for Go
https://pkg.go.dev/github.com/wasmerio/wasmer-go
MIT License
2.82k stars 161 forks source link

Rename error message error? #389

Open orangeC23 opened 1 year ago

orangeC23 commented 1 year ago

Summary

The wasm file is : tmp-wasm.txt

The go file is :

package main

import (
    "fmt"
    wasmer "github.com/wasmerio/wasmer-go/wasmer"
    "io/ioutil"
)

func main() {

    // os.Chdir(filepath.Dir(os.Args[0]))

    wasmBytes, _ := ioutil.ReadFile("./tmp.wasm")

    store := wasmer.NewStore(wasmer.NewEngine())

    module, _ := wasmer.NewModule(store, wasmBytes)

    wasiEnv, _ := wasmer.NewWasiStateBuilder("test").
        Argument("--dir=.").
        // Environment("ABC", "DEF").
        //MapDirectory("./dir", "./dir").
        Finalize()
    if store == nil {
        fmt.Println("store is null")
    }
    if module == nil {
        fmt.Println("module is null")
    }
    importObject, err := wasiEnv.GenerateImportObject(store, module)
    check(err)

    instance, err := wasmer.NewInstance(module, importObject)
    check(err)

    start, err := instance.Exports.GetWasiStartFunction()
    check(err)
    start()

}

func check(e error) {
    if e != nil {
        panic(e)
    }
}

Additional details

The wasm file is to test whether renaming a nonexistent file could print correct error message.

Expected behavior

Print:

ENOENT: 44
EINVAL: 28
r: -1
errno: 44
rename() error: No such file or directory

Using wasmer with the command wasmer run --dir=. tmp.wasm it print the showed message.

Actual behavior

Print:

ENOENT: 44
EINVAL: 28
r: -1
errno: 76
rename() error: Capabilities insufficient

Am I using the wasmer-go api with mistake?