github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/vm/cvm/script_test.go (about) 1 package cvm 2 3 import ( 4 "fmt" 5 "github.com/sixexorg/magnetic-ring/vm/cvm/parse" 6 "os" 7 "testing" 8 ) 9 10 const maxMemory = 40 11 12 var gluaTests []string = []string{ 13 "base.lua", 14 "coroutine.lua", 15 "db.lua", 16 "issues.lua", 17 "os.lua", 18 "table.lua", 19 "vm.lua", 20 "math.lua", 21 "strings.lua", 22 } 23 24 var luaTests []string = []string{ 25 "attrib.lua", 26 "calls.lua", 27 "closure.lua", 28 "constructs.lua", 29 "events.lua", 30 "literals.lua", 31 "locals.lua", 32 "math.lua", 33 "sort.lua", 34 "strings.lua", 35 "vararg.lua", 36 "pm.lua", 37 "files.lua", 38 } 39 40 func testScriptCompile(t *testing.T, script string) { 41 file, err := os.Open(script) 42 if err != nil { 43 t.Fatal(err) 44 return 45 } 46 chunk, err2 := parse.Parse(file, script) 47 if err2 != nil { 48 t.Fatal(err2) 49 return 50 } 51 parse.Dump(chunk) 52 proto, err3 := Compile(chunk, script) 53 if err3 != nil { 54 t.Fatal(err3) 55 return 56 } 57 nop := func(s string) {} 58 nop(proto.String()) 59 } 60 61 func testScriptDir(t *testing.T, tests []string, directory string) { 62 if err := os.Chdir(directory); err != nil { 63 t.Error(err) 64 } 65 defer os.Chdir("..") 66 for _, script := range tests { 67 fmt.Printf("testing %s/%s\n", directory, script) 68 testScriptCompile(t, script) 69 L := NewState(Options{ 70 RegistrySize: 1024 * 20, 71 CallStackSize: 1024, 72 IncludeGoStackTrace: true, 73 }) 74 L.SetMx(maxMemory) 75 if err := L.DoFile(script); err != nil { 76 t.Error(err) 77 } 78 L.Close() 79 } 80 } 81 82 func TestGlua(t *testing.T) { 83 testScriptDir(t, gluaTests, "_glua-tests") 84 } 85 86 func TestLua(t *testing.T) { 87 testScriptDir(t, luaTests, "_lua5.1-tests") 88 }