--- source: src/main.rs expression: compiled input_file: test-data/lua5.1-tests/all.lua --- math.randomseed(0); collectgarbage("setstepmul", 180); collectgarbage("setpause", 190); print("current path:\n " .. string.gsub(package.path, ";", "\n ")); local msgs = {} global fn Message(m) { print(m); msgs[(#msgs + 1)] = string.sub(m, 3, -3) } local c = os.clock() assert(os.setlocale("C")); local T, print, gcinfo, format, write, assert, type = T, print, gcinfo, string.format, io.write, assert, type local fn formatmem(m) { if m < 1024 { return m } else { m = m / 1024 - m / 1024 % 1 if m < 1024 { return m .. "K" } else { m = m / 1024 - m / 1024 % 1 return m .. "M" } } } local showmem = fn () { if !T { print(format(" ---- total memory: %s ----\n", formatmem(gcinfo()))); } else { T.checkmemory(); local a, b, c = T.totalmem() local d, e = gcinfo() print(format("\n ---- total memory: %s (%dK), max use: %s, blocks: %d\n", formatmem(a), d, formatmem(c), b)); } } dofile = fn (n) { showmem(); local f = assert(loadfile(n)) local b = string.dump(f) f = assert(loadstring(b)) return f() } dofile('main.lua'); { local u = newproxy(true) local newproxy, stderr = newproxy, io.stderr getmetatable(u).__gc = fn (o) { stderr::write('.'); newproxy(o); } } local f = assert(loadfile('gc.lua')) f(); dofile('db.lua'); assert(dofile('calls.lua') == deep && deep); dofile('strings.lua'); dofile('literals.lua'); assert(dofile('attrib.lua') == 27); assert(dofile('locals.lua') == 5); dofile('constructs.lua'); dofile('code.lua'); { local f = coroutine.wrap(assert(loadfile('big.lua'))) assert(f() == 'b'); assert(f() == 'a'); } dofile('nextvar.lua'); dofile('pm.lua'); dofile('api.lua'); assert(dofile('events.lua') == 12); dofile('vararg.lua'); dofile('closure.lua'); dofile('errors.lua'); dofile('math.lua'); dofile('sort.lua'); assert(dofile('verybig.lua') == 10); collectgarbage(); dofile('files.lua'); if #msgs > 0 { print("\ntests not performed:"); for i = 1, #msgs { print(msgs[(i)]); } print(); } print("final OK !!!"); print('cleaning all!!!!'); debug.sethook(fn (a) { assert(type(a) == 'string'); }, "cr"); local _G, collectgarbage, showmem, print, format, clock = _G, collectgarbage, showmem, print, format, os.clock local a = {} for n with pairs(_G) { a[(n)] = 1 } a.tostring = nil a.___Glob = nil for n with pairs(a) { _G[(n)] = nil } a = nil collectgarbage(); collectgarbage(); collectgarbage(); collectgarbage(); collectgarbage(); collectgarbage(); showmem(); print(format("\n\ntotal time: %.2f\n", clock() - c));