[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Comprehending string.gsub
- From: David Manura <dm.lua@...>
- Date: Fri, 13 Apr 2012 23:49:27 -0400
On Fri, Apr 13, 2012 at 2:33 PM, Roberto Ierusalimschy
<roberto@inf.puc-rio.br> wrote:
>>[...] if the behaviour is undefined, why is it in the tests? :)
> Another non-written rule in Lua is that, even for undefined behavior,
> the interpreter should not crash. So, the tests must cover undefined
> cases too.
>
> Moreover, Lua uses whitebox testing. Many tests in Lua assume specific
> behaviors that we know it is true for that specific implementation. (For
> instance, several tests assume specific wordings for error messages.)
> This test style allows much more strict tests, which are not possible
> testing only the specification.
Those re-implementing Lua may want to take the initiative to rewrite
the test suite in a form like this:
function unspecified(f)
if WARN_UNSPECIFIED == 'fail' then
f()
else
local ok, err = pcall(f) -- check that it doesn't crash
if WARN_UNSPECIFIED then
io.stderr:write('WARN:failure in unspecified:', err, '\n')
end
end
end
. . .
unspecified(function() assert(string.gsub("abc", "%w", "%1%0") ==
"aabbcc") end)
(But I'm not sure if the test suite has a license, so I suggest
checking if it's ok to release a modified test suite.)
This also reminds me of the idea [1] of writing a wrapper around the
"_G" library so that it warns or fails upon hitting unspecified
behavior. Incidentally, that would be one way to test the test suite
concerning unspecified behavior.
[1] http://lua-users.org/lists/lua-l/2012-03/msg00936.html
On Fri, Apr 13, 2012 at 12:16 PM, Alexander Gladysh <agladysh@gmail.com> wrote:
> Unspecified? Implementation-specific? Undefined sounds scary to me. :-)
Background: http://stackoverflow.com/questions/2397984/undefined-unspecified-and-implementation-defined-behavior
The Lua Reference Manual briefly uses basically all three terms, but I
don't think it makes a distinction between unspecified and undefined.
As Roberto says, the Lua interpreter should not crash (though there
may be an issue of out-of-memory [2] without a special allocator and
in 5.1 at least certain functions could crash [3]).
Is it a true statement that Lua 5.1 allows hitting undefined behavior
in standard C but 5.2 does not?
[2] http://lua-users.org/lists/lua-l/2008-10/msg00415.html
[3] http://lua-users.org/lists/lua-l/2008-09/msg00157.html