integration_test.lua 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. minetest.log("warning", "[TEST] integration-test enabled!")
  2. local function execute_move(callback)
  3. local source_pos1 = { x=0, y=0, z=0 }
  4. local source_pos2 = { x=5, y=5, z=5 }
  5. local target_pos1 = { x=10, y=10, z=10 }
  6. local target_pos2 = { x=15, y=15, z=15 }
  7. minetest.get_voxel_manip(source_pos1, source_pos1)
  8. local src_node = minetest.get_node(source_pos1)
  9. areas:add("dummy", "landscape", source_pos1, source_pos2)
  10. areas:save()
  11. assert(not minetest.is_protected(source_pos1, "dummy"))
  12. assert(minetest.is_protected(source_pos1, "dummy2"))
  13. jumpdrive.move(source_pos1, source_pos2, target_pos1, target_pos2)
  14. assert(not minetest.is_protected(source_pos1, "dummy"))
  15. assert(not minetest.is_protected(source_pos1, "dummy2"))
  16. assert(not minetest.is_protected(target_pos1, "dummy"))
  17. assert(minetest.is_protected(target_pos1, "dummy2"))
  18. minetest.get_voxel_manip(target_pos1, target_pos1)
  19. local target_node = minetest.get_node(target_pos1)
  20. if target_node.name ~= src_node.name then
  21. error("moved node name does not match")
  22. end
  23. if target_node.param2 ~= src_node.param2 then
  24. error("moved param2 does not match")
  25. end
  26. callback()
  27. end
  28. local function execute_mapgen(callback)
  29. local pos1 = { x=-50, y=-10, z=-50 }
  30. local pos2 = { x=50, y=50, z=50 }
  31. minetest.emerge_area(pos1, pos2, callback)
  32. end
  33. local function execute_test(callback)
  34. execute_mapgen(function(blockpos, action, calls_remaining)
  35. minetest.log("action", "Emerged: " .. minetest.pos_to_string(blockpos))
  36. if calls_remaining > 0 then
  37. return
  38. end
  39. jumpdrive.mapgen.reset()
  40. execute_move(function()
  41. callback()
  42. end)
  43. end)
  44. end
  45. minetest.register_on_mods_loaded(function()
  46. minetest.after(1, function()
  47. execute_test(function()
  48. local data = minetest.write_json({ success = true }, true);
  49. local file = io.open(minetest.get_worldpath().."/integration_test.json", "w" );
  50. if file then
  51. file:write(data)
  52. file:close()
  53. end
  54. file = io.open(minetest.get_worldpath().."/registered_nodes.txt", "w" );
  55. if file then
  56. for name in pairs(minetest.registered_nodes) do
  57. file:write(name .. '\n')
  58. end
  59. file:close()
  60. end
  61. minetest.log("warning", "[TEST] integration tests done!")
  62. minetest.request_shutdown("success")
  63. end)
  64. end)
  65. end)