sandbox/plugin_test.go
Star f9dcf07ba4 first version
supported macOS、linux
2026-03-23 00:35:27 +08:00

68 lines
1.3 KiB
Go

// mac_sandbox_test.go v1.0
package sandbox
import (
"fmt"
"strings"
"sync"
"testing"
"time"
"apigo.cc/gojs"
_ "apigo.cc/gojs/console"
_ "apigo.cc/gojs/file"
_ "apigo.cc/gojs/runtime"
_ "apigo.cc/gojs/util"
"github.com/ssgo/u"
)
func init() {
gojs.Register("testTool", gojs.Module{
Object: map[string]interface{}{
"runAll": func(tasks [][]any) []any {
res := make([]any, len(tasks))
var wg sync.WaitGroup
for i, taskArgs := range tasks {
wg.Add(1)
go func(index int, args []any) {
defer wg.Done()
script := u.String(args[0])
if !strings.ContainsRune(script, '\n') && u.FileExists(script) {
r, err := gojs.RunFile(script, args[1:]...)
res[index] = []any{r, err}
} else {
r, err := gojs.Run(script, "anonymous.js", args[1:]...)
res[index] = []any{r, err}
}
}(i, taskArgs)
}
wg.Wait()
return res
},
},
})
}
func TestPlugin(t *testing.T) {
tests := []string{
"base_test.js",
// "nodejs_test.js",
}
gojs.ExportForDev()
for _, f := range tests {
r, err := gojs.RunFile(f)
if err != nil {
t.Fatal(u.Red(f), u.BRed(err.Error()))
} else if r != true {
t.Fatal(u.Red(f), u.BRed(u.JsonP(r)))
} else {
fmt.Println(u.Green(f), u.BGreen("test succeess"))
}
}
time.Sleep(500 * time.Millisecond)
}