aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-08-15 13:44:36 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-08-15 13:44:36 -0300
commita1d8eb27431c02c4529be1efd92143ad65434f3a (patch)
tree58db9340ba2b8ea1cb91004b96f15a955f167c58 /testes
parentf64a1b175a5fa65434a073e6d071b32bb7b0ab69 (diff)
downloadlua-a1d8eb27431c02c4529be1efd92143ad65434f3a.tar.gz
lua-a1d8eb27431c02c4529be1efd92143ad65434f3a.tar.bz2
lua-a1d8eb27431c02c4529be1efd92143ad65434f3a.zip
Added control messages to warnings
Added the concept of control messages to the warning system, plus the implementation of the controls "@on"/"@off" to turn warnings on/off. Moreover, the warning system in the test library adds some other controls to ease the test of warnings.
Diffstat (limited to 'testes')
-rw-r--r--testes/all.lua4
-rw-r--r--testes/api.lua2
-rw-r--r--testes/gc.lua8
-rw-r--r--testes/main.lua29
4 files changed, 42 insertions, 1 deletions
diff --git a/testes/all.lua b/testes/all.lua
index bf27f106..5d698d4b 100644
--- a/testes/all.lua
+++ b/testes/all.lua
@@ -209,6 +209,10 @@ if #msgs > 0 then
209 warn("#tests not performed:\n ", m, "\n") 209 warn("#tests not performed:\n ", m, "\n")
210end 210end
211 211
212warn("@off")
213warn("******** THIS WARNING SHOULD NOT APPEAR **********")
214warn("******** THIS WARNING ALSO SHOULD NOT APPEAR **********")
215warn("@on")
212print("(there should be two warnings now)") 216print("(there should be two warnings now)")
213warn("#This is ", "an expected", " warning") 217warn("#This is ", "an expected", " warning")
214warn("#This is", " another one") 218warn("#This is", " another one")
diff --git a/testes/api.lua b/testes/api.lua
index f6915c3e..4f9d6717 100644
--- a/testes/api.lua
+++ b/testes/api.lua
@@ -977,6 +977,7 @@ assert(t[7] == nil)
977 977
978------------------------------------------------------------------------- 978-------------------------------------------------------------------------
979do -- testing errors during GC 979do -- testing errors during GC
980 warn("@off")
980 collectgarbage("stop") 981 collectgarbage("stop")
981 local a = {} 982 local a = {}
982 for i=1,20 do 983 for i=1,20 do
@@ -994,6 +995,7 @@ do -- testing errors during GC
994 collectgarbage() 995 collectgarbage()
995 assert(A == 10) -- number of normal collections 996 assert(A == 10) -- number of normal collections
996 collectgarbage("restart") 997 collectgarbage("restart")
998 warn("@on")
997end 999end
998------------------------------------------------------------------------- 1000-------------------------------------------------------------------------
999-- test for userdata vals 1001-- test for userdata vals
diff --git a/testes/gc.lua b/testes/gc.lua
index 9ea054c1..6bdc98ca 100644
--- a/testes/gc.lua
+++ b/testes/gc.lua
@@ -369,6 +369,7 @@ if T then
369 s[n] = i 369 s[n] = i
370 end 370 end
371 371
372 warn("@store")
372 collectgarbage() 373 collectgarbage()
373 assert(string.find(_WARN, "error in __gc metamethod")) 374 assert(string.find(_WARN, "error in __gc metamethod"))
374 assert(string.match(_WARN, "@(.-)@") == "expected") 375 assert(string.match(_WARN, "@(.-)@") == "expected")
@@ -383,6 +384,7 @@ if T then
383 for i = 1, 10 do assert(s[i]) end 384 for i = 1, 10 do assert(s[i]) end
384 385
385 getmetatable(u).__gc = nil 386 getmetatable(u).__gc = nil
387 warn("@normal")
386 388
387end 389end
388print '+' 390print '+'
@@ -475,9 +477,11 @@ end
475 477
476-- errors during collection 478-- errors during collection
477if T then 479if T then
480 warn("@store")
478 u = setmetatable({}, {__gc = function () error "@expected error" end}) 481 u = setmetatable({}, {__gc = function () error "@expected error" end})
479 u = nil 482 u = nil
480 collectgarbage() 483 collectgarbage()
484 warn("@normal")
481end 485end
482 486
483 487
@@ -645,7 +649,7 @@ end
645 649
646-- create several objects to raise errors when collected while closing state 650-- create several objects to raise errors when collected while closing state
647if T then 651if T then
648 local error, assert, find = error, assert, string.find 652 local error, assert, find, warn = error, assert, string.find, warn
649 local n = 0 653 local n = 0
650 local lastmsg 654 local lastmsg
651 local mt = {__gc = function (o) 655 local mt = {__gc = function (o)
@@ -659,7 +663,9 @@ if T then
659 else 663 else
660 assert(lastmsg == _WARN) -- subsequent error messages are equal 664 assert(lastmsg == _WARN) -- subsequent error messages are equal
661 end 665 end
666 warn("@store")
662 error"@expected warning" 667 error"@expected warning"
668 warn("@normal")
663 end} 669 end}
664 for i = 10, 1, -1 do 670 for i = 10, 1, -1 do
665 -- create object and preserve it until the end 671 -- create object and preserve it until the end
diff --git a/testes/main.lua b/testes/main.lua
index b224b54e..0ef4822d 100644
--- a/testes/main.lua
+++ b/testes/main.lua
@@ -221,6 +221,28 @@ assert(string.find(getoutput(), "error calling 'print'"))
221RUN('echo "io.stderr:write(1000)\ncont" | lua -e "require\'debug\'.debug()" 2> %s', out) 221RUN('echo "io.stderr:write(1000)\ncont" | lua -e "require\'debug\'.debug()" 2> %s', out)
222checkout("lua_debug> 1000lua_debug> ") 222checkout("lua_debug> 1000lua_debug> ")
223 223
224-- test warnings
225RUN('echo "io.stderr:write(1); warn[[XXX]]" | lua -q 2> %s', out)
226checkout("1")
227
228prepfile[[
229warn("@allow") -- unknown control, ignored
230warn("@off", "XXX", "@off") -- these are not control messages
231warn("@off") -- this one is
232warn("@on", "YYY", "@on") -- not control, but warn is off
233warn("@off") -- keep it off
234warn("@on") -- restart warnings
235warn("", "@on") -- again, no control, real warning
236warn("@on") -- keep it "started"
237warn("Z", "Z", "Z") -- common warning
238]]
239RUN('lua %s 2> %s', prog, out)
240checkout[[
241Lua warning: @offXXX@off
242Lua warning: @on
243Lua warning: ZZZ
244]]
245
224-- test many arguments 246-- test many arguments
225prepfile[[print(({...})[30])]] 247prepfile[[print(({...})[30])]]
226RUN('lua %s %s > %s', prog, string.rep(" a", 30), out) 248RUN('lua %s %s > %s', prog, string.rep(" a", 30), out)
@@ -355,8 +377,15 @@ if T then -- test library?
355 NoRun("not enough memory", "env MEMLIMIT=100 lua") 377 NoRun("not enough memory", "env MEMLIMIT=100 lua")
356 378
357 -- testing 'warn' 379 -- testing 'warn'
380 warn("@store")
358 warn("@123", "456", "789") 381 warn("@123", "456", "789")
359 assert(_WARN == "@123456789") 382 assert(_WARN == "@123456789")
383
384 warn("zip", "", " ", "zap")
385 assert(_WARN == "zip zap")
386 warn("ZIP", "", " ", "ZAP")
387 assert(_WARN == "ZIP ZAP")
388 warn("@normal")
360end 389end
361 390
362do 391do