Function 'warn' is vararg

Instead of a 'tocont' flag, the function 'warn' in Lua now receives all
message pieces as multiple arguments in a single call. Besides being
simpler to use, this implementation ensures that Lua code cannot create
unfinished warnings.
This commit is contained in:
Roberto Ierusalimschy
2019-06-04 11:22:21 -03:00
parent 514d942748
commit 14edd364c3
4 changed files with 43 additions and 20 deletions

View File

@@ -5,8 +5,8 @@
local version = "Lua 5.4"
if _VERSION ~= version then
warn(string.format(
"This test suite is for %s, not for %s\nExiting tests", version, _VERSION))
warn("This test suite is for ", version,
", not for ", _VERSION, "\nExiting tests")
return
end
@@ -190,16 +190,13 @@ assert(dofile('verybig.lua', true) == 10); collectgarbage()
dofile('files.lua')
if #msgs > 0 then
warn("#tests not performed:", true)
for i=1,#msgs do
warn("\n ", true); warn(msgs[i], true)
end
warn("\n")
local m = table.concat(msgs, "\n ")
warn("#tests not performed:\n ", m, "\n")
end
print("(there should be two warnings now)")
warn("#This is ", true); warn("an expected", true); warn(" warning")
warn("#This is", true); warn(" another one")
warn("#This is ", "an expected", " warning")
warn("#This is", " another one")
-- no test module should define 'debug'
assert(debug == nil)
@@ -216,9 +213,10 @@ _G.showmem = showmem
end --)
local _G, showmem, print, format, clock, time, difftime, assert, open =
local _G, showmem, print, format, clock, time, difftime,
assert, open, warn =
_G, showmem, print, string.format, os.clock, os.time, os.difftime,
assert, io.open
assert, io.open, warn
-- file with time of last performed test
local fname = T and "time-debug.txt" or "time.txt"
@@ -262,7 +260,7 @@ if not usertests then
local diff = (clocktime - lasttime) / lasttime
local tolerance = 0.05 -- 5%
if (diff >= tolerance or diff <= -tolerance) then
print(format("WARNING: time difference from previous test: %+.1f%%",
warn(format("#time difference from previous test: %+.1f%%",
diff * 100))
end
assert(open(fname, "w")):write(clocktime):close()

View File

@@ -347,10 +347,26 @@ NoRun("syntax error", "lua -e a")
NoRun("'-l' needs argument", "lua -l")
if T then -- auxiliary library?
if T then -- test library?
print("testing 'not enough memory' to create a state")
NoRun("not enough memory", "env MEMLIMIT=100 lua")
-- testing 'warn'
warn("@123", "456", "789")
assert(_WARN == "@123456789")
end
do
-- 'warn' must get at least one argument
local st, msg = pcall(warn)
assert(string.find(msg, "string expected"))
-- 'warn' does not leave unfinished warning in case of errors
-- (message would appear in next warning)
st, msg = pcall(warn, "SHOULD NOT APPEAR", {})
assert(string.find(msg, "string expected"))
end
print('+')
print('testing Ctrl C')