mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-08-21 06:24:28 +00:00
feat(unlinker): support ?game? placeholder in output folder (#945)
* feat(unlinker): support ?game? placeholder in output folder * chore: move unlinking tests to separate project --------- Co-authored-by: Jan Laupetin <[email protected]>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
UnlinkingTests = {}
|
||||
|
||||
function UnlinkingTests:include(includes)
|
||||
if includes:handle(self:name()) then
|
||||
includedirs {
|
||||
"%{wks.location}/src/Unlinking",
|
||||
path.join(TestFolder(), "UnlinkingTests")
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
function UnlinkingTests:link(links)
|
||||
|
||||
end
|
||||
|
||||
function UnlinkingTests:use()
|
||||
|
||||
end
|
||||
|
||||
function UnlinkingTests:name()
|
||||
return "UnlinkingTests"
|
||||
end
|
||||
|
||||
function UnlinkingTests:project()
|
||||
local folder = TestFolder()
|
||||
local includes = Includes:create()
|
||||
local links = Links:create()
|
||||
|
||||
project(self:name())
|
||||
targetdir(TargetDirectoryTest)
|
||||
location "%{wks.location}/test/%{prj.name}"
|
||||
kind "ConsoleApp"
|
||||
language "C++"
|
||||
|
||||
files {
|
||||
path.join(folder, "UnlinkingTests/**.h"),
|
||||
path.join(folder, "UnlinkingTests/**.cpp")
|
||||
}
|
||||
|
||||
vpaths {
|
||||
["*"] = {
|
||||
path.join(folder, "UnlinkingTests")
|
||||
}
|
||||
}
|
||||
|
||||
self:include(includes)
|
||||
Catch2Common:include(includes)
|
||||
ObjCommonTestUtils:include(includes)
|
||||
Unlinking:include(includes)
|
||||
catch2:include(includes)
|
||||
|
||||
links:linkto(ObjCommonTestUtils)
|
||||
links:linkto(ParserTestUtils)
|
||||
links:linkto(Unlinking)
|
||||
links:linkto(catch2)
|
||||
links:linkto(Catch2Common)
|
||||
links:linkall()
|
||||
end
|
||||
@@ -0,0 +1,45 @@
|
||||
#include "UnlinkerArgs.h"
|
||||
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <type_traits>
|
||||
|
||||
namespace
|
||||
{
|
||||
TEST_CASE("Unlinker uses the default output folder when none is specified", "[unlinker][arguments]")
|
||||
{
|
||||
const char* argStrings[]{
|
||||
"Unlinker",
|
||||
"test.ff",
|
||||
};
|
||||
|
||||
UnlinkerArgs args;
|
||||
bool shouldContinue = true;
|
||||
|
||||
REQUIRE(args.ParseArgs(std::extent_v<decltype(argStrings)>, argStrings, shouldContinue));
|
||||
REQUIRE(shouldContinue);
|
||||
REQUIRE(args.m_output_folder == UnlinkerArgs::DEFAULT_OUTPUT_FOLDER);
|
||||
|
||||
const Zone zone("test_zone", 0, GameId::IW4, GamePlatform::PC);
|
||||
REQUIRE(args.GetOutputFolderPathForZone(zone) == "zone_dump/zone_raw/test_zone");
|
||||
}
|
||||
|
||||
TEST_CASE("Unlinker output folder remains unchanged without placeholders", "[unlinker][arguments]")
|
||||
{
|
||||
UnlinkerArgs args;
|
||||
args.m_output_folder = "zone_dump/custom";
|
||||
|
||||
const Zone zone("test_zone", 0, GameId::IW4, GamePlatform::PC);
|
||||
|
||||
REQUIRE(args.GetOutputFolderPathForZone(zone) == "zone_dump/custom");
|
||||
}
|
||||
|
||||
TEST_CASE("Unlinker output folder replaces game and zone placeholders", "[unlinker][arguments]")
|
||||
{
|
||||
UnlinkerArgs args;
|
||||
args.m_output_folder = "zone_dump/?game?/?zone?";
|
||||
|
||||
const Zone zone("test_zone", 0, GameId::IW4, GamePlatform::PC);
|
||||
|
||||
REQUIRE(args.GetOutputFolderPathForZone(zone) == "zone_dump/iw4/test_zone");
|
||||
}
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user