This switches to gofumpt and applies changes, as I've noticed working in dapr (who uses this) that it finds some things that are annoying, such as inconsistent block formatting in test tables. Signed-off-by: Adrian Cole <adrian@tetrate.io>
60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
package cli
|
|
|
|
import (
|
|
"bytes"
|
|
_ "embed"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/tetratelabs/wazero/internal/testing/require"
|
|
)
|
|
|
|
//go:embed testdata/cli.wasm
|
|
var cliWasm []byte
|
|
|
|
func TestRun(t *testing.T) {
|
|
tests := []struct {
|
|
args []string
|
|
stdOut string
|
|
}{
|
|
{
|
|
args: []string{"3", "1"},
|
|
stdOut: "result: 4",
|
|
},
|
|
{
|
|
args: []string{"-sub=true", "3", "1"},
|
|
stdOut: "result: 2",
|
|
},
|
|
}
|
|
|
|
wasmPath := filepath.Join(t.TempDir(), "cli.wasm")
|
|
require.NoError(t, os.WriteFile(wasmPath, cliWasm, 0o755))
|
|
|
|
// We can't invoke go run in our docker based cross-architecture tests. We do want to use
|
|
// otherwise so running unit tests normally does not require special build steps.
|
|
var cmdExe string
|
|
var cmdArgs []string
|
|
if cmdPath := os.Getenv("WAZEROCLI"); cmdPath != "" {
|
|
cmdExe = cmdPath
|
|
} else {
|
|
cmdExe = filepath.Join(runtime.GOROOT(), "bin", "go")
|
|
cmdArgs = []string{"run", "../../cmd/wazero"}
|
|
}
|
|
cmdArgs = append(cmdArgs, "run", wasmPath)
|
|
|
|
for _, tc := range tests {
|
|
tt := tc
|
|
t.Run(strings.Join(tt.args, " "), func(t *testing.T) {
|
|
stdOut := &bytes.Buffer{}
|
|
cmd := exec.Command(cmdExe, append(cmdArgs, tt.args...)...)
|
|
cmd.Stdout = stdOut
|
|
require.NoError(t, cmd.Run())
|
|
require.Equal(t, tt.stdOut, strings.TrimSpace(stdOut.String()))
|
|
})
|
|
}
|
|
}
|