mirror of
https://github.com/kikito/inspect.lua.git
synced 2024-12-15 14:34:21 +00:00
simplified spec running. Added new instructions for it. Managed case where __toString throws an error. Made local a function that was global by mistake
This commit is contained in:
parent
ca9e012357
commit
4c92bad614
@ -128,11 +128,10 @@ Also, make sure to read the license file; the text of that license file must app
|
|||||||
|
|
||||||
h1. Specs
|
h1. Specs
|
||||||
|
|
||||||
This project uses "telescope":https://github.com/norman/telescope for its specs. If you want to run the specs, you will have to install telescope first. Then just enter the spec folder and execute run.lua:
|
This project uses "telescope":https://github.com/norman/telescope for its specs. If you want to run the specs, you will have to install telescope first. Then just execute the following from the root inspect folder:
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
cd path/to/inspect.lua/specs
|
tsc -f spec/*
|
||||||
lua run.lua
|
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
15
inspect.lua
15
inspect.lua
@ -43,7 +43,7 @@ local sortOrdersByType = {
|
|||||||
['function'] = 5, ['userdata'] = 6, ['thread'] = 7
|
['function'] = 5, ['userdata'] = 6, ['thread'] = 7
|
||||||
}
|
}
|
||||||
|
|
||||||
function sortKeys(a,b)
|
local function sortKeys(a,b)
|
||||||
local ta, tb = type(a), type(b)
|
local ta, tb = type(a), type(b)
|
||||||
if ta ~= tb then return sortOrdersByType[ta] < sortOrdersByType[tb] end
|
if ta ~= tb then return sortOrdersByType[ta] < sortOrdersByType[tb] end
|
||||||
if ta == 'string' or ta == 'number' then return a < b end
|
if ta == 'string' or ta == 'number' then return a < b end
|
||||||
@ -60,6 +60,16 @@ local function getDictionaryKeys(t)
|
|||||||
return keys
|
return keys
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function getToStringResultSafely(t, mt)
|
||||||
|
local __tostring = type(mt) == 'table' and mt.__tostring
|
||||||
|
local string, status
|
||||||
|
if type(__tostring) == 'function' then
|
||||||
|
status, string = pcall(__tostring, t)
|
||||||
|
string = status and string or 'error: ' .. tostring(string)
|
||||||
|
end
|
||||||
|
return string
|
||||||
|
end
|
||||||
|
|
||||||
local Inspector = {}
|
local Inspector = {}
|
||||||
|
|
||||||
function Inspector:new(v, depth)
|
function Inspector:new(v, depth)
|
||||||
@ -125,9 +135,8 @@ function Inspector:putTable(t)
|
|||||||
|
|
||||||
local length = #t
|
local length = #t
|
||||||
local mt = getmetatable(t)
|
local mt = getmetatable(t)
|
||||||
local __tostring = type(mt) == 'table' and mt.__tostring
|
|
||||||
local string = type(__tostring) == 'function' and __tostring(t)
|
|
||||||
|
|
||||||
|
local string = getToStringResultSafely(t, mt)
|
||||||
if type(string) == 'string' and #string > 0 then
|
if type(string) == 'string' and #string > 0 then
|
||||||
self:puts(' -- ', unescape(string))
|
self:puts(' -- ', unescape(string))
|
||||||
if length >= 1 then self:tabify() end -- tabify the array values
|
if length >= 1 then self:tabify() end -- tabify the array values
|
||||||
|
@ -1 +0,0 @@
|
|||||||
../inspect.lua
|
|
@ -186,6 +186,18 @@ context( 'inspect', function()
|
|||||||
}]])
|
}]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
test('Should not include an error string if __tostring metamethod throws an error', function()
|
||||||
|
local foo = { foo = 1, __tostring = function() error('hello', 0) end }
|
||||||
|
local bar = setmetatable({a = 1}, foo)
|
||||||
|
assert_equal(inspect(bar), [[<1>{ -- error: hello
|
||||||
|
a = 1,
|
||||||
|
<metatable> = <2>{
|
||||||
|
__tostring = <function 1>,
|
||||||
|
foo = 1
|
||||||
|
}
|
||||||
|
}]])
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env lua
|
|
||||||
|
|
||||||
os.execute("tsc -f inspect_spec.lua")
|
|
Loading…
Reference in New Issue
Block a user