1
0
Alternative Lua assert function, with better error messages.
Go to file
Jon Michael Aanes 5ebea27e3b
Some checks failed
Lua Library / Lua-Testing (push) Failing after 6s
Lua Library / Static-Analysis (push) Successful in 3s
Standard versioning
2024-07-06 23:42:13 +02:00
.gitea/workflows Bumped workflows to v6.19 2024-04-26 11:48:20 +02:00
test Bumped workflows to v6.19 2024-04-26 11:48:20 +02:00
.gitignore The lost additions 2023-12-12 23:28:25 +01:00
.luacheckrc Workflows 2023-12-12 23:30:19 +01:00
assert-gooder.lua The lost additions 2023-12-12 23:28:25 +01:00
init.lua Standard versioning 2024-07-06 23:42:13 +02:00
Lexer.lua Initial commit on assert-gooder. An improved version of assert 2017-10-28 12:44:53 +02:00
lua_lang.lua The lost additions 2023-12-12 23:28:25 +01:00
Parser.lua Added a bunch of constant evaluations 2018-03-23 12:26:45 +01:00
README.md Bumped workflows to v6.19 2024-04-26 11:48:20 +02:00

Assert Gooder

Lua library implementing an alternative version of Lua's assert function, giving much better error messages, when asserts fails. It does this by analysing the body of the assert, and figuring out what the failing assert call is attempting to test against.

Example

function f (a)
	assert(type(a) == 'string')
end

f(42)

Without assert-gooder, the above code would fail with the error message assertion failed!. With assert-gooder, it will fail with this error message: assertion failed! bad argument #1 'a' to 'f' (string expected, but got number: 42),

Motivation

Assertions are useful to ensure internal consistency, when you're writing code in a hurry, but in Lua (and most other languages), these assert constructs never produce useful error messages, but rather unhelpful assert failed! errors and a stack trace.

By making it a runtime library, instead of a "compile-time" rewrite, we gain flexibility. It's much easier to import a library, than restructuring then compile pipeline. It also means that we have access to runtime values, allowing even more helpful messages.

Setup

Download, and use assert = require "assert-gooder" to overwrite Lua's default assert with assert-gooder.

License

"THE BEER-WARE LICENSE" (Revision 42):
<jonjmaa@gmail.com> wrote this library.  As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you think
this stuff is worth it, you can buy me a beer in return.