From 567f85752de80d89559ca6dcedf58d684dc71710 Mon Sep 17 00:00:00 2001 From: Lars Mueller Date: Tue, 21 May 2024 16:27:38 +0200 Subject: [PATCH] Fix broken unit test Also makes devtest unit test results a bit more prominent --- games/devtest/mods/unittests/init.lua | 28 ++++++++++++++++++---- games/devtest/mods/unittests/load_time.lua | 13 ++++++++++ games/devtest/mods/unittests/misc.lua | 12 ---------- 3 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 games/devtest/mods/unittests/load_time.lua diff --git a/games/devtest/mods/unittests/init.lua b/games/devtest/mods/unittests/init.lua index 6b2cd7a79..1499ccacb 100644 --- a/games/devtest/mods/unittests/init.lua +++ b/games/devtest/mods/unittests/init.lua @@ -160,7 +160,7 @@ function unittests.run_all() -- Print stats assert(#unittests.list == counters.total) 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")) print(string.format(" %d / %d failed tests.", counters.total - counters.passed, counters.total)) @@ -185,22 +185,42 @@ dofile(modpath .. "/content_ids.lua") dofile(modpath .. "/metadata.lua") dofile(modpath .. "/raycast.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 + local test_results = nil 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)() 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 core.register_chatcommand("unittests", { privs = {basic_privs=true}, description = "Runs devtest unittests (may modify player or map state)", func = function(name, param) unittests.on_finished = function(ok) - core.chat_send_player(name, - (ok and "All tests passed." or "There were test failures.") .. - " Check the console for detailed output.") + send_results(name, ok) end coroutine.wrap(unittests.run_all)() return true, "" diff --git a/games/devtest/mods/unittests/load_time.lua b/games/devtest/mods/unittests/load_time.lua new file mode 100644 index 000000000..d437fba06 --- /dev/null +++ b/games/devtest/mods/unittests/load_time.lua @@ -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 diff --git a/games/devtest/mods/unittests/misc.lua b/games/devtest/mods/unittests/misc.lua index 4bd8002b9..6ff5c7e84 100644 --- a/games/devtest/mods/unittests/misc.lua +++ b/games/devtest/mods/unittests/misc.lua @@ -254,15 +254,3 @@ local function test_gennotify_api() assert(#custom == 0, "custom ids not empty") end 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)