From 5eb1ef1079fdffaabd7453933cb8007bed4691f0 Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Sun, 9 May 2010 23:51:46 +0000 Subject: [PATCH] Improve error tests --- src/core/org/luaj/vm2/lib/BaseLib.java | 2 +- test/junit/org/luaj/vm2/ErrorsTest.java | 3 ++- test/lua/errors/args.lua | 21 ++++++++------------- test/lua/errors/baselibargs.lua | 10 +++++----- test/lua/errors/coroutinelibargs.lua | 2 +- test/lua/errors/iolibargs.lua | 2 +- test/lua/errors/mathlibargs.lua | 2 +- test/lua/errors/modulelibargs.lua | 2 +- test/lua/errors/operators.lua | 2 +- test/lua/errors/stringlibargs.lua | 2 +- test/lua/errors/tablelibargs.lua | 2 +- 11 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/core/org/luaj/vm2/lib/BaseLib.java b/src/core/org/luaj/vm2/lib/BaseLib.java index fabc868d..0e888dad 100644 --- a/src/core/org/luaj/vm2/lib/BaseLib.java +++ b/src/core/org/luaj/vm2/lib/BaseLib.java @@ -200,7 +200,7 @@ public class BaseLib extends OneArgFunction implements ResourceFinder { switch ( opcode ) { case 0: // "assert", // ( v [,message] ) -> v, message | ERR if ( !args.arg1().toboolean() ) - error( args.narg()>1? args.checkjstring(2): "assertion failed!" ); + error( args.narg()>1? args.optjstring(2,"assertion failed!"): "assertion failed!" ); return args; case 1: // "dofile", // ( filename ) -> result1, ... { diff --git a/test/junit/org/luaj/vm2/ErrorsTest.java b/test/junit/org/luaj/vm2/ErrorsTest.java index b11faef1..df1fa5d3 100644 --- a/test/junit/org/luaj/vm2/ErrorsTest.java +++ b/test/junit/org/luaj/vm2/ErrorsTest.java @@ -21,6 +21,7 @@ ******************************************************************************/ package org.luaj.vm2; +import org.luaj.vm2.lib.PackageLib; import org.luaj.vm2.compiler.LuaC; @@ -33,7 +34,7 @@ import org.luaj.vm2.compiler.LuaC; public class ErrorsTest extends ScriptDrivenTest { private static final String dir = "test/lua/errors"; - + public ErrorsTest() { super(ScriptDrivenTest.PlatformType.JSE, dir); } diff --git a/test/lua/errors/args.lua b/test/lua/errors/args.lua index 498c02ad..b3efb2d2 100644 --- a/test/lua/errors/args.lua +++ b/test/lua/errors/args.lua @@ -75,7 +75,7 @@ local pretty = { local function values(list) local t = {} - for i=1,#list do + for i=1,(list.n or #list) do local ai = list[i] local fi = pretty[type(ai)] t[i] = fi and fi(ai) or tostring(ai) @@ -85,7 +85,7 @@ end local function types(list) local t = {} - for i=1,#list do + for i=1,(list.n or #list) do local ai = list[i] t[i] = type(ai) end @@ -98,7 +98,7 @@ end local function dup(t) local s = {} - for i=1,#t do + for i=1,(t.n or #t) do s[i] = t[i] end return s @@ -106,7 +106,7 @@ end local function split(t) local s = {} - local n = #t + local n = (t.n or #t) for i=1,n-1 do s[i] = t[i] end @@ -116,13 +116,13 @@ end local function expand(argsets, typesets, ...) local n = typesets and #typesets or 0 if n <= 0 then - table.insert(argsets,{...}) + table.insert(argsets,arg) return argsets end local s,v = split(typesets) - for i=1,#v do - expand(argsets, s, v[i], ...) + for i=1,(v.n or #v) do + expand(argsets, s, v[i], unpack(arg,1,arg.n)) end return argsets end @@ -140,12 +140,7 @@ end local function invoke( name, arglist ) local s,c = pcall(lookup, name) if not s then return s,c end - local f = function(...) - local u = unpack - local t = { c(...) } - return u(t) - end - return pcall(f, unpack(arglist)) + return pcall(c, unpack(arglist,1,arglist.n or #arglist)) end -- messages, banners diff --git a/test/lua/errors/baselibargs.lua b/test/lua/errors/baselibargs.lua index 2ac6189e..60c07b2f 100644 --- a/test/lua/errors/baselibargs.lua +++ b/test/lua/errors/baselibargs.lua @@ -1,4 +1,4 @@ -package.path = "?.lua;src/test/errors/?.lua" +package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg types for basic library functions @@ -6,8 +6,8 @@ require 'args' -- assert banner('assert') checkallpass('assert',{{true,123},anylua}) -checkallerrors('assert',{{nil,false},{nil}},'assertion failed') -checkallerrors('assert',{{nil,false},{'message'}},'message') +checkallerrors('assert',{{nil,false,n=2},{nil,n=1}},'assertion failed') +checkallerrors('assert',{{nil,false,n=2},{'message'}},'message') -- collectgarbage banner('collectgarbage') @@ -17,7 +17,7 @@ checkallerrors('collectgarbage',{notanil},'bad argument #1') -- dofile banner('dofile') checkallpass('dofile', {}) -checkallpass('dofile', {{'src/test/errors/args.lua'}}) +checkallpass('dofile', {{'test/lua/errors/args.lua'}}) checkallerrors('dofile', {{'args.lua'}}, 'cannot open args.lua') checkallerrors('dofile', {nonstring}, 'bad argument #1') @@ -51,7 +51,7 @@ checkallerrors('load', {somefunction,{afunction,atable}}, 'bad argument #2') banner('loadfile') checkallpass('loadfile', {}) checkallpass('loadfile', {{'bogus'}}) -checkallpass('loadfile', {{'src/test/errors/args.lua'}}) +checkallpass('loadfile', {{'test/lua/errors/args.lua'}}) checkallpass('loadfile', {{'args.lua'}}) checkallerrors('loadfile', {nonstring}, 'bad argument #1') diff --git a/test/lua/errors/coroutinelibargs.lua b/test/lua/errors/coroutinelibargs.lua index 6a549ca0..1ff7d861 100644 --- a/test/lua/errors/coroutinelibargs.lua +++ b/test/lua/errors/coroutinelibargs.lua @@ -1,4 +1,4 @@ -package.path = "?.lua;src/test/errors/?.lua" +package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg type tests for coroutine library functions diff --git a/test/lua/errors/iolibargs.lua b/test/lua/errors/iolibargs.lua index eda6c363..e574067c 100644 --- a/test/lua/errors/iolibargs.lua +++ b/test/lua/errors/iolibargs.lua @@ -1,4 +1,4 @@ -package.path = "?.lua;src/test/errors/?.lua" +package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg type tests for io library functions diff --git a/test/lua/errors/mathlibargs.lua b/test/lua/errors/mathlibargs.lua index 555868b0..c262c1a0 100644 --- a/test/lua/errors/mathlibargs.lua +++ b/test/lua/errors/mathlibargs.lua @@ -1,4 +1,4 @@ -package.path = "?.lua;src/test/errors/?.lua" +package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg type tests for math library functions diff --git a/test/lua/errors/modulelibargs.lua b/test/lua/errors/modulelibargs.lua index 8282bc83..63133f8c 100644 --- a/test/lua/errors/modulelibargs.lua +++ b/test/lua/errors/modulelibargs.lua @@ -1,4 +1,4 @@ -package.path = "?.lua;src/test/errors/?.lua" +package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg type tests for module library functions diff --git a/test/lua/errors/operators.lua b/test/lua/errors/operators.lua index a67dc0ca..9633ef19 100644 --- a/test/lua/errors/operators.lua +++ b/test/lua/errors/operators.lua @@ -1,4 +1,4 @@ -package.path = "?.lua;src/test/errors/?.lua" +package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg types for language operator diff --git a/test/lua/errors/stringlibargs.lua b/test/lua/errors/stringlibargs.lua index 194a2b33..4c11f20f 100644 --- a/test/lua/errors/stringlibargs.lua +++ b/test/lua/errors/stringlibargs.lua @@ -1,4 +1,4 @@ -package.path = "?.lua;src/test/errors/?.lua" +package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg type tests for string library functions diff --git a/test/lua/errors/tablelibargs.lua b/test/lua/errors/tablelibargs.lua index fb3aed59..a53e242d 100644 --- a/test/lua/errors/tablelibargs.lua +++ b/test/lua/errors/tablelibargs.lua @@ -1,4 +1,4 @@ -package.path = "?.lua;src/test/errors/?.lua" +package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg type tests for table library functions