aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-04-17 14:57:29 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-04-17 14:57:29 -0300
commited2872cd3bf6d352f36bbd34529738a60b0b51eb (patch)
treea4476cca4a43deeb8eaa0d52f0f02b15acc0db09 /testes
parent2d3f09544895b422eeecf89e0d108da8b8fcdfca (diff)
downloadlua-ed2872cd3bf6d352f36bbd34529738a60b0b51eb.tar.gz
lua-ed2872cd3bf6d352f36bbd34529738a60b0b51eb.tar.bz2
lua-ed2872cd3bf6d352f36bbd34529738a60b0b51eb.zip
'require' returns where module was found
The function 'require' returns the *loader data* as a second result. For file searchers, this data is the path where they found the module.
Diffstat (limited to 'testes')
-rw-r--r--testes/attrib.lua35
1 files changed, 20 insertions, 15 deletions
diff --git a/testes/attrib.lua b/testes/attrib.lua
index dcafd634..4adb42e0 100644
--- a/testes/attrib.lua
+++ b/testes/attrib.lua
@@ -122,12 +122,13 @@ local oldpath = package.path
122 122
123package.path = string.gsub("D/?.lua;D/?.lc;D/?;D/??x?;D/L", "D/", DIR) 123package.path = string.gsub("D/?.lua;D/?.lc;D/?;D/??x?;D/L", "D/", DIR)
124 124
125local try = function (p, n, r) 125local try = function (p, n, r, ext)
126 NAME = nil 126 NAME = nil
127 local rr = require(p) 127 local rr, x = require(p)
128 assert(NAME == n) 128 assert(NAME == n)
129 assert(REQUIRED == p) 129 assert(REQUIRED == p)
130 assert(rr == r) 130 assert(rr == r)
131 assert(ext == x)
131end 132end
132 133
133a = require"names" 134a = require"names"
@@ -143,27 +144,27 @@ assert(package.searchpath("C", package.path) == D"C.lua")
143assert(require"C" == 25) 144assert(require"C" == 25)
144assert(require"C" == 25) 145assert(require"C" == 25)
145AA = nil 146AA = nil
146try('B', 'B.lua', true) 147try('B', 'B.lua', true, "libs/B.lua")
147assert(package.loaded.B) 148assert(package.loaded.B)
148assert(require"B" == true) 149assert(require"B" == true)
149assert(package.loaded.A) 150assert(package.loaded.A)
150assert(require"C" == 25) 151assert(require"C" == 25)
151package.loaded.A = nil 152package.loaded.A = nil
152try('B', nil, true) -- should not reload package 153try('B', nil, true, nil) -- should not reload package
153try('A', 'A.lua', true) 154try('A', 'A.lua', true, "libs/A.lua")
154package.loaded.A = nil 155package.loaded.A = nil
155os.remove(D'A.lua') 156os.remove(D'A.lua')
156AA = {} 157AA = {}
157try('A', 'A.lc', AA) -- now must find second option 158try('A', 'A.lc', AA, "libs/A.lc") -- now must find second option
158assert(package.searchpath("A", package.path) == D"A.lc") 159assert(package.searchpath("A", package.path) == D"A.lc")
159assert(require("A") == AA) 160assert(require("A") == AA)
160AA = false 161AA = false
161try('K', 'L', false) -- default option 162try('K', 'L', false, "libs/L") -- default option
162try('K', 'L', false) -- default option (should reload it) 163try('K', 'L', false, "libs/L") -- default option (should reload it)
163assert(rawget(_G, "_REQUIREDNAME") == nil) 164assert(rawget(_G, "_REQUIREDNAME") == nil)
164 165
165AA = "x" 166AA = "x"
166try("X", "XXxX", AA) 167try("X", "XXxX", AA, "libs/XXxX")
167 168
168 169
169removefiles(files) 170removefiles(files)
@@ -183,14 +184,16 @@ files = {
183createfiles(files, "_ENV = {}\n", "\nreturn _ENV\n") 184createfiles(files, "_ENV = {}\n", "\nreturn _ENV\n")
184AA = 0 185AA = 0
185 186
186local m = assert(require"P1") 187local m, ext = assert(require"P1")
188assert(ext == "libs/P1/init.lua")
187assert(AA == 0 and m.AA == 10) 189assert(AA == 0 and m.AA == 10)
188assert(require"P1" == m) 190assert(require"P1" == m)
189assert(require"P1" == m) 191assert(require"P1" == m)
190 192
191assert(package.searchpath("P1.xuxu", package.path) == D"P1/xuxu.lua") 193assert(package.searchpath("P1.xuxu", package.path) == D"P1/xuxu.lua")
192m.xuxu = assert(require"P1.xuxu") 194m.xuxu, ext = assert(require"P1.xuxu")
193assert(AA == 0 and m.xuxu.AA == 20) 195assert(AA == 0 and m.xuxu.AA == 20)
196assert(ext == "libs/P1/xuxu.lua")
194assert(require"P1.xuxu" == m.xuxu) 197assert(require"P1.xuxu" == m.xuxu)
195assert(require"P1.xuxu" == m.xuxu) 198assert(require"P1.xuxu" == m.xuxu)
196assert(require"P1" == m and m.AA == 10) 199assert(require"P1" == m and m.AA == 10)
@@ -267,15 +270,17 @@ else
267 270
268 -- test C modules with prefixes in names 271 -- test C modules with prefixes in names
269 package.cpath = DC"?" 272 package.cpath = DC"?"
270 local lib2 = require"lib2-v2" 273 local lib2, ext = require"lib2-v2"
274 assert(string.find(ext, "libs/lib2-v2", 1, true))
271 -- check correct access to global environment and correct 275 -- check correct access to global environment and correct
272 -- parameters 276 -- parameters
273 assert(_ENV.x == "lib2-v2" and _ENV.y == DC"lib2-v2") 277 assert(_ENV.x == "lib2-v2" and _ENV.y == DC"lib2-v2")
274 assert(lib2.id("x") == "x") 278 assert(lib2.id("x") == "x")
275 279
276 -- test C submodules 280 -- test C submodules
277 local fs = require"lib1.sub" 281 local fs, ext = require"lib1.sub"
278 assert(_ENV.x == "lib1.sub" and _ENV.y == DC"lib1") 282 assert(_ENV.x == "lib1.sub" and _ENV.y == DC"lib1")
283 assert(string.find(ext, "libs/lib1", 1, true))
279 assert(fs.id(45) == 45) 284 assert(fs.id(45) == 45)
280end 285end
281 286
@@ -293,10 +298,10 @@ do
293 return _ENV 298 return _ENV
294 end 299 end
295 300
296 local pl = require"pl" 301 local pl, ext = require"pl"
297 assert(require"pl" == pl) 302 assert(require"pl" == pl)
298 assert(pl.xuxu(10) == 30) 303 assert(pl.xuxu(10) == 30)
299 assert(pl[1] == "pl" and pl[2] == nil) 304 assert(pl[1] == "pl" and pl[2] == ":preload:" and ext == ":preload:")
300 305
301 package = p 306 package = p
302 assert(type(package.path) == "string") 307 assert(type(package.path) == "string")