---
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));