feat[player]: Save and restore player inventories during test
Save complete players inventories, and added unit tests on players
This commit is contained in:
parent
bbe0722e94
commit
3bc13b5c9f
@ -13,3 +13,14 @@ services:
|
|||||||
RUN_TESTS: ${RUN_TESTS}
|
RUN_TESTS: ${RUN_TESTS}
|
||||||
STOP_SERVER: ${STOP_SERVER}
|
STOP_SERVER: ${STOP_SERVER}
|
||||||
FAILFAST: ${FAILFAST}
|
FAILFAST: ${FAILFAST}
|
||||||
|
client1:
|
||||||
|
image: ${CLIENT_IMAGE}
|
||||||
|
restart: on-failure:10
|
||||||
|
depends_on:
|
||||||
|
- "server"
|
||||||
|
environment:
|
||||||
|
SERVER: server
|
||||||
|
PORT: 30000
|
||||||
|
PLAYERNAME: player1
|
||||||
|
RANDOM_INPUT: 0
|
||||||
|
PASSWORD: test
|
12
base.lua
12
base.lua
@ -375,7 +375,7 @@ test_harness.dump = function(o)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local save_players = function(players)
|
test_harness.save_players = function(players)
|
||||||
local players_data = {}
|
local players_data = {}
|
||||||
for _, p in ipairs(players) do
|
for _, p in ipairs(players) do
|
||||||
local player_obj = nil
|
local player_obj = nil
|
||||||
@ -389,17 +389,19 @@ local save_players = function(players)
|
|||||||
end
|
end
|
||||||
players_data[player_name] = {
|
players_data[player_name] = {
|
||||||
position = player_obj:get_pos(),
|
position = player_obj:get_pos(),
|
||||||
privs = test_harness.table_copy(minetest.get_player_privs(player_name))
|
privs = test_harness.table_copy(minetest.get_player_privs(player_name)),
|
||||||
|
inventory = test_harness.table_copy(player_obj:get_inventory():get_lists())
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
return players_data
|
return players_data
|
||||||
end
|
end
|
||||||
|
|
||||||
local restore_players = function(players_data)
|
test_harness.restore_players = function(players_data)
|
||||||
for player_name, data in pairs(players_data) do
|
for player_name, data in pairs(players_data) do
|
||||||
local player = minetest.get_player_by_name(player_name)
|
local player = minetest.get_player_by_name(player_name)
|
||||||
player:set_pos(data.position)
|
player:set_pos(data.position)
|
||||||
minetest.set_player_privs(player_name, data.privs)
|
minetest.set_player_privs(player_name, data.privs)
|
||||||
|
player:get_inventory():set_lists(data.inventory)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -457,7 +459,7 @@ local run_player_tests = function(list_player_tests)
|
|||||||
end
|
end
|
||||||
area.assign(vec(0, 0, 0), wanted, function()
|
area.assign(vec(0, 0, 0), wanted, function()
|
||||||
area.clear()
|
area.clear()
|
||||||
local player_data = save_players(test.players)
|
local player_data = test_harness.save_players(test.players)
|
||||||
local ok, err = pcall(test.func)
|
local ok, err = pcall(test.func)
|
||||||
test.result = { ok = ok, err = err }
|
test.result = { ok = ok, err = err }
|
||||||
print(string.format(":%s:%-60s %s", test.mod, test.name, ok and "pass" or "FAIL"))
|
print(string.format(":%s:%-60s %s", test.mod, test.name, ok and "pass" or "FAIL"))
|
||||||
@ -472,7 +474,7 @@ local run_player_tests = function(list_player_tests)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
restore_players(player_data)
|
test_harness.restore_players(player_data)
|
||||||
test_run_callback()
|
test_run_callback()
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
@ -50,4 +50,10 @@ register_test("pattern", function()
|
|||||||
place_pattern(pos1, pos2, pattern)
|
place_pattern(pos1, pos2, pattern)
|
||||||
assert(get_node(pos1).name == testnode1)
|
assert(get_node(pos1).name == testnode1)
|
||||||
check.pattern(pos1, pos2, pattern)
|
check.pattern(pos1, pos2, pattern)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
for _, name in ipairs({
|
||||||
|
"players",
|
||||||
|
}) do
|
||||||
|
dofile(minetest.get_modpath("test_harness") .. "/test/" .. name .. ".lua")
|
||||||
|
end
|
||||||
|
57
test/players.lua
Normal file
57
test/players.lua
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
local register_test = test_harness.get_test_registrator("test_harness")
|
||||||
|
local vec = vector.new
|
||||||
|
|
||||||
|
register_test("Tests utilities for players")
|
||||||
|
|
||||||
|
register_test("save_players", function()
|
||||||
|
|
||||||
|
local player1 = minetest.get_player_by_name("player1")
|
||||||
|
local itemstack = ItemStack("default:stone 30")
|
||||||
|
player1:get_inventory():add_item("main", itemstack)
|
||||||
|
|
||||||
|
local player_data = test_harness.save_players({"player1"})
|
||||||
|
|
||||||
|
assert(player_data ~= nil)
|
||||||
|
assert(player_data["player1"] ~= nil)
|
||||||
|
assert(player_data["player1"].position ~= nil)
|
||||||
|
assert(player_data["player1"].position == vec(0,0,0))
|
||||||
|
assert(player_data["player1"].privs ~= nil)
|
||||||
|
assert(player_data["player1"].inventory ~= nil)
|
||||||
|
assert(player_data["player1"].inventory.main ~= nil)
|
||||||
|
assert(#player_data["player1"].inventory.main > 0)
|
||||||
|
assert(player_data["player1"].inventory.main[1] ~= nil)
|
||||||
|
assert(player_data["player1"].inventory.main[1]:get_name() == "default:stone")
|
||||||
|
assert(player_data["player1"].inventory.main[1]:get_count() == 30)
|
||||||
|
|
||||||
|
end, { players={ "player1" },})
|
||||||
|
|
||||||
|
|
||||||
|
register_test("restore_players", function()
|
||||||
|
|
||||||
|
|
||||||
|
local player_data = { ["player1"] = {
|
||||||
|
position= vec(1,2,3),
|
||||||
|
privs= { ["noclip"] = true,["interact"] = true,["debug"] = true,["fly"] = true,["basic_debug"] = true, ["shout"] = true },
|
||||||
|
inventory= {
|
||||||
|
["craftpreview"] = { ItemStack("") },
|
||||||
|
["craftresult"] = { ItemStack(""),} ,
|
||||||
|
["main"] = { ItemStack("default:stone 30"), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""),} ,
|
||||||
|
["craft"] = { ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""), ItemStack(""),} ,
|
||||||
|
}
|
||||||
|
} }
|
||||||
|
local player1 = minetest.get_player_by_name("player1")
|
||||||
|
|
||||||
|
assert(not (player1:get_inventory():contains_item("main", "default:stone")))
|
||||||
|
assert(player1:get_pos() == vec(0,0,0))
|
||||||
|
assert(minetest.get_player_privs("player1")["fast"])
|
||||||
|
assert(not minetest.get_player_privs("player1")["shout"])
|
||||||
|
|
||||||
|
test_harness.restore_players(player_data)
|
||||||
|
|
||||||
|
assert(player1:get_inventory():contains_item("main", "default:stone"))
|
||||||
|
assert(player1:get_pos() == vec(1,2,3))
|
||||||
|
assert(minetest.get_player_privs("player1")["shout"])
|
||||||
|
assert(not minetest.get_player_privs("player1")["fast"])
|
||||||
|
|
||||||
|
|
||||||
|
end, { players={ "player1" },})
|
Loading…
x
Reference in New Issue
Block a user