Files
luaj/src/test/res/module.lua
2007-12-13 22:12:21 +00:00

75 lines
1.8 KiB
Lua

-- unit tests for module() function
local ids = {}
local function id(obj)
if not obj or type(obj) == 'number' or type(obj) == 'string' then
return obj
end
local v = ids[obj]
if v then
return v
end
table.insert(ids,obj)
ids[obj] = type(obj)..'.'..tostring(#ids)
return ids[obj]
end
-- module tests
local pr = print
local pkg = package
local g = _G
local md = module
local rq = require
local sa = package.seeall
local gfe = getfenv
local gmt = getmetatable
local function envs()
return id(gfe(0)), id(gfe(1)), id(gfe(2)),
id(gmt(gfe(0))), id(gmt(gfe(1))), id(gmt(gfe(2)))
end
local function trymodule(name)
pr( '_G['..name..']', id(g[name]) )
pr( 'pkg.loaded['..name..']', id(pkg.loaded[name]) )
pr( 'envs', envs() )
md(name)
pr( 'envs', envs() )
pr( 'status,result', status, result )
pr( '_G['..name..']', id(g[name]) )
local t = pkg.loaded[name]
pr( 't=pkg.loaded['..name..']', id(t) )
pr( 't._M, t._NAME, t._PACKAGE', id(t._M), id(t._NAME), id(t._PACKAGE) )
pr( 'rq('..name..')', id( rq(name) ) )
pr( 'print', id(print) )
pr( 'seeall(t)', sa(t) )
pr( 'print, _G['..name..']', id(print), id(g[name]) )
end
trymodule('abc.def.ghi')
trymodule('abc.def.ghi')
trymodule('abc.def')
trymodule('abc.def.lmn')
trymodule('abc.def')
trymodule('abc')
package.loaded['opq.rst'] = {}
trymodule('opq.rst')
trymodule('opq.rst')
uvw = { xyz="x1y1z1" }
--print( "uvw", id(uvw) )
--print( "uvw.xyz", id(uvw.xyz) )
--print( "uvw.abc", id(uvw.abc) )
print( pcall( trymodule, 'uvw.xyz' ) )
print( pcall( trymodule, 'uvw' ) )
print( pcall( trymodule, 'uvw.abc' ) )
print( "uvw", id(uvw) )
print( "uvw.xyz", id(uvw.xyz) )
print( "uvw.abc", id(uvw.abc) )
function f()
module( 'fff', package.seeall )
a = 'aaa'
print( a )
end
f()
f()
print( a )
print( getfenv(f)['a'] )
print( a )