From 14edd364c3abcb758e74c68a2bdd4ddaeefdae2a Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 4 Jun 2019 11:22:21 -0300 Subject: 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. --- testes/all.lua | 22 ++++++++++------------ testes/main.lua | 18 +++++++++++++++++- 2 files changed, 27 insertions(+), 13 deletions(-) (limited to 'testes') diff --git a/testes/all.lua b/testes/all.lua index 8d727b6b..2e6fe038 100644 --- a/testes/all.lua +++ b/testes/all.lua @@ -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() diff --git a/testes/main.lua b/testes/main.lua index 47d84d4c..4c09645a 100644 --- a/testes/main.lua +++ b/testes/main.lua @@ -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') -- cgit v1.2.3-55-g6feb