mirror of
https://github.com/kikito/inspect.lua.git
synced 2024-12-15 14:34:21 +00:00
Adds a test for __len and uses _G.rawlen instead of rawlen to avoid warnings
This commit is contained in:
commit
e9dc27ab6e
@ -31,9 +31,8 @@ local inspect ={
|
|||||||
inspect.KEY = setmetatable({}, {__tostring = function() return 'inspect.KEY' end})
|
inspect.KEY = setmetatable({}, {__tostring = function() return 'inspect.KEY' end})
|
||||||
inspect.METATABLE = setmetatable({}, {__tostring = function() return 'inspect.METATABLE' end})
|
inspect.METATABLE = setmetatable({}, {__tostring = function() return 'inspect.METATABLE' end})
|
||||||
|
|
||||||
local rawlen = rawlen or function(t)
|
-- returns the length of a table, ignoring __len (if it exists)
|
||||||
return #t
|
local rawlen = _G.rawlen or function(t) return #t end
|
||||||
end
|
|
||||||
|
|
||||||
-- Apostrophizes the string if it has quotes, but not aphostrophes
|
-- Apostrophizes the string if it has quotes, but not aphostrophes
|
||||||
-- Otherwise, it returns a regular quoted string
|
-- Otherwise, it returns a regular quoted string
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
local inspect = require 'inspect'
|
local inspect = require 'inspect'
|
||||||
local unindent = require 'spec.unindent'
|
local unindent = require 'spec.unindent'
|
||||||
local is_luajit, ffi = pcall(require, 'ffi')
|
local is_luajit, ffi = pcall(require, 'ffi')
|
||||||
|
local has_rawlen = type(_G.rawlen) == 'function'
|
||||||
|
|
||||||
describe( 'inspect', function()
|
describe( 'inspect', function()
|
||||||
|
|
||||||
@ -74,6 +75,13 @@ describe( 'inspect', function()
|
|||||||
assert.equals('{ "a", "b", "c", { "d", "e" }, "f" }', inspect({'a','b','c', {'d','e'}, 'f'}))
|
assert.equals('{ "a", "b", "c", { "d", "e" }, "f" }', inspect({'a','b','c', {'d','e'}, 'f'}))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
if has_rawlen then
|
||||||
|
it('handles arrays with a __len metatable correctly (ignoring the __len metatable and using rawlen)', function()
|
||||||
|
local arr = setmetatable({1,2,3}, {__len = function() return nil end})
|
||||||
|
assert.equals("{ 1, 2, 3,\n <metatable> = {\n __len = <function 1>\n }\n}", inspect(arr))
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
it('works with simple dictionary tables', function()
|
it('works with simple dictionary tables', function()
|
||||||
assert.equals("{\n a = 1,\n b = 2\n}", inspect({a = 1, b = 2}))
|
assert.equals("{\n a = 1,\n b = 2\n}", inspect({a = 1, b = 2}))
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user