lunarmodules / luassert

Assertion library for Lua
MIT License
202 stars 76 forks source link

Control characters make output hard to read #152

Closed bungle closed 5 years ago

bungle commented 6 years ago

Example:

return  require"luassert".are.equal("a\rb", "\r")
Expected objects to be equal.
Passed in:
'string) '
Expected:
b'tring) 'a
stack traceback:
    [C]: in function 'error'
    ...luarocks/2.4.2_5.1/share/lua/5.1/luassert/assert.lua:51: in function <...luarocks/2.4.2_5.1/share/lua/5.1/luassert/assert.lua:25>
    (tail call): ?
    [C]: ?

Expected results (or similar, just something else than writing on top of the output):

return  require"luassert".are.equal("a\rb", "\r")
Expected objects to be equal.
Passed in:
(string) '
'
Expected:
(string) 'a
b'
stack traceback:
    [C]: in function 'error'
    ...luarocks/2.4.2_5.1/share/lua/5.1/luassert/assert.lua:51: in function <...luarocks/2.4.2_5.1/share/lua/5.1/luassert/assert.lua:25>
    (tail call): ?
    [C]: ?

This seems to come from Lua interpreter:

> = "a\rb"
b

Actually from terminal.

bungle commented 6 years ago

One option, use Unicode symbols:

U+240A ␊ Symbol for Line Feed
U+240D ␍ Symbol for Carriage Return
Tieske commented 6 years ago

maybe try the binary string formatter? See example here: https://github.com/Olivine-Labs/luassert#customized-formatters