Created
June 26, 2024 15:22
-
-
Save matthiesenj/f97a7022c0740dc41c1776de23a80957 to your computer and use it in GitHub Desktop.
Adapt luassert failure messages to luanit to avoid luaunit interpreting them as errors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- execute dofile("luassert_luaunit_adapter.lua") | |
-- then execute dofile("file_with_your_tests.lua" | |
local luaunit = require("luaunit") | |
local astate = require("luassert.state") | |
local util = require("luassert.util") | |
---prepends LuaUnit FAILURE_PREFIX to luassert custom failure message | |
---in order to make LuaUnit pick up test failures as failures instead of errors. | |
local function prepender(state, arguments, level) | |
local failure_message = rawget(state, "failure_message") | |
if util.hastostring(failure_message) then | |
failure_message = luaunit.FAILURE_PREFIX .. tostring(failure_message) | |
elseif failure_message ~= nil then | |
failure_message = luaunit.FAILURE_PREFIX .. astate.format_argument(failure_message) | |
else | |
failure_message = luaunit.FAILURE_PREFIX | |
end | |
state.failure_message = failure_message | |
end | |
---patch assert.register function to register modifier | |
---for assertions which get registered later. | |
local assert = require("luassert.assert") | |
local org_register = rawget(assert, "register") | |
assert.register = function(self, nspace, name, callback, positive_message, negative_message) | |
if nspace == "assertion" then | |
org_register(self, "modifier", name, prepender) | |
end | |
org_register(self, nspace, name, callback, positive_message, negative_message) | |
end | |
---register modifier for already registered assertions | |
---(e.g. in case luassert.assertions was already loaded) | |
local namespace = require("luassert.namespaces") | |
for k, _ in pairs(namespace.assertion or {}) do | |
assert:register("modifier", k, prepender) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment