Fix broken unit test

Also makes devtest unit test results a bit more prominent
This commit is contained in:
Lars Mueller 2024-05-21 16:27:38 +02:00
parent 5009259473
commit 567f85752d
3 changed files with 37 additions and 16 deletions

@ -160,7 +160,7 @@ function unittests.run_all()
-- Print stats -- Print stats
assert(#unittests.list == counters.total) assert(#unittests.list == counters.total)
print(string.rep("+", 80)) print(string.rep("+", 80))
print(string.format("Unit Test Results: %s", print(string.format("Devtest Unit Test Results: %s",
counters.total == counters.passed and "PASSED" or "FAILED")) counters.total == counters.passed and "PASSED" or "FAILED"))
print(string.format(" %d / %d failed tests.", print(string.format(" %d / %d failed tests.",
counters.total - counters.passed, counters.total)) counters.total - counters.passed, counters.total))
@ -185,22 +185,42 @@ dofile(modpath .. "/content_ids.lua")
dofile(modpath .. "/metadata.lua") dofile(modpath .. "/metadata.lua")
dofile(modpath .. "/raycast.lua") dofile(modpath .. "/raycast.lua")
dofile(modpath .. "/inventory.lua") dofile(modpath .. "/inventory.lua")
dofile(modpath .. "/load_time.lua")
-------------- --------------
local function send_results(name, ok)
core.chat_send_player(name,
minetest.colorize(ok and "green" or "red",
(ok and "All devtest unit tests passed." or
"There were devtest unit test failures.") ..
" Check the console for detailed output."))
end
if core.settings:get_bool("devtest_unittests_autostart", false) then if core.settings:get_bool("devtest_unittests_autostart", false) then
local test_results = nil
core.after(0, function() core.after(0, function()
unittests.on_finished = function(ok)
for _, player in ipairs(minetest.get_connected_players()) do
send_results(player:get_player_name(), ok)
end
test_results = ok
end
coroutine.wrap(unittests.run_all)() coroutine.wrap(unittests.run_all)()
end) end)
minetest.register_on_joinplayer(function(player)
if test_results == nil then
return -- tests haven't completed yet
end
send_results(player:get_player_name(), test_results)
end)
else else
core.register_chatcommand("unittests", { core.register_chatcommand("unittests", {
privs = {basic_privs=true}, privs = {basic_privs=true},
description = "Runs devtest unittests (may modify player or map state)", description = "Runs devtest unittests (may modify player or map state)",
func = function(name, param) func = function(name, param)
unittests.on_finished = function(ok) unittests.on_finished = function(ok)
core.chat_send_player(name, send_results(name, ok)
(ok and "All tests passed." or "There were test failures.") ..
" Check the console for detailed output.")
end end
coroutine.wrap(unittests.run_all)() coroutine.wrap(unittests.run_all)()
return true, "" return true, ""

@ -0,0 +1,13 @@
-- Test item (un)registration and overriding
do
local itemname = "unittests:test_override_item"
minetest.register_craftitem(":" .. itemname, {description = "foo"})
assert(assert(minetest.registered_items[itemname]).description == "foo")
minetest.override_item(itemname, {description = "bar"})
assert(assert(minetest.registered_items[itemname]).description == "bar")
minetest.override_item(itemname, {}, {"description"})
-- description has the empty string as a default
assert(assert(minetest.registered_items[itemname]).description == "")
minetest.unregister_item("unittests:test_override_item")
assert(minetest.registered_items["unittests:test_override_item"] == nil)
end

@ -254,15 +254,3 @@ local function test_gennotify_api()
assert(#custom == 0, "custom ids not empty") assert(#custom == 0, "custom ids not empty")
end end
unittests.register("test_gennotify_api", test_gennotify_api) unittests.register("test_gennotify_api", test_gennotify_api)
unittests.register("test_item_registration", function()
local itemname = "unittests:test_override_item"
minetest.register_item(itemname, {description = "foo"})
assert(assert(minetest.registered_items[itemname]).description == "foo")
minetest.override_item(itemname, {description = "bar"})
assert(assert(minetest.registered_items[itemname]).description == "bar")
minetest.override_item(itemname, {}, {"description"})
assert(assert(minetest.registered_items[itemname]).description == nil)
minetest.unregister_item("unittests:test_override_item")
assert(minetest.registered_items["unittests:test_override_item"] == nil)
end)