mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Remove testing-metadata dependency
It's no longer useful to keep the metadata in a separate repository, as libloot no longer needs a metadata Git repository to test against.
This commit is contained in:
+1
-42
@@ -114,14 +114,6 @@ else()
|
||||
set(LCI_LIBRARIES ${LCI_LIBRARIES} dl)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(testing-metadata
|
||||
PREFIX "external"
|
||||
GIT_REPOSITORY "https://github.com/loot/testing-metadata"
|
||||
GIT_TAG "1.4.0"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "")
|
||||
|
||||
ExternalProject_Add(testing-plugins
|
||||
PREFIX "external"
|
||||
URL "https://github.com/Ortham/testing-plugins/archive/1.4.1.tar.gz"
|
||||
@@ -352,7 +344,6 @@ add_dependencies(libloot_internals_tests
|
||||
spdlog
|
||||
yaml-cpp
|
||||
GTest
|
||||
testing-metadata
|
||||
testing-plugins)
|
||||
target_link_libraries(libloot_internals_tests PRIVATE
|
||||
${ESPLUGIN_LIBRARIES}
|
||||
@@ -377,7 +368,7 @@ target_link_libraries(loot PRIVATE
|
||||
|
||||
# Build API tests.
|
||||
add_executable(libloot_tests ${LIBLOOT_INTERFACE_TESTS_ALL_SOURCES})
|
||||
add_dependencies(libloot_tests loot GTest testing-metadata testing-plugins)
|
||||
add_dependencies(libloot_tests loot GTest testing-plugins)
|
||||
target_link_libraries(libloot_tests PRIVATE loot ${GTEST_LIBRARIES})
|
||||
|
||||
##############################
|
||||
@@ -537,38 +528,6 @@ endif()
|
||||
# Post-Build Steps
|
||||
##############################
|
||||
|
||||
# Copy testing metadata
|
||||
ExternalProject_Get_Property(testing-metadata SOURCE_DIR)
|
||||
add_custom_command(TARGET libloot_internals_tests POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${SOURCE_DIR}
|
||||
"$<TARGET_FILE_DIR:libloot_internals_tests>/testing-metadata")
|
||||
add_custom_command(TARGET libloot_tests POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${SOURCE_DIR}
|
||||
"$<TARGET_FILE_DIR:libloot_tests>/testing-metadata")
|
||||
|
||||
if(GIT_FOUND)
|
||||
# Clone a mirror of the testing-metadata repository for faster tests.
|
||||
# Remove the directory if it already exists before cloning, as the clone
|
||||
# will fail if the target directory exists and is not empty.
|
||||
# Tests will fail if this is not done.
|
||||
|
||||
add_custom_command(TARGET libloot_internals_tests POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory
|
||||
"$<TARGET_FILE_DIR:libloot_internals_tests>/testing-metadata.git")
|
||||
|
||||
add_custom_command(TARGET libloot_internals_tests POST_BUILD
|
||||
COMMAND git clone --bare https://github.com/loot/testing-metadata.git "$<TARGET_FILE_DIR:libloot_internals_tests>/testing-metadata.git")
|
||||
|
||||
add_custom_command(TARGET libloot_tests POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory
|
||||
"$<TARGET_FILE_DIR:libloot_tests>/testing-metadata.git")
|
||||
|
||||
add_custom_command(TARGET libloot_tests POST_BUILD
|
||||
COMMAND git clone --bare https://github.com/loot/testing-metadata.git "$<TARGET_FILE_DIR:libloot_tests>/testing-metadata.git")
|
||||
endif()
|
||||
|
||||
# Copy testing plugins
|
||||
ExternalProject_Get_Property(testing-plugins SOURCE_DIR)
|
||||
add_custom_command(TARGET libloot_internals_tests POST_BUILD
|
||||
|
||||
@@ -35,9 +35,6 @@ protected:
|
||||
DatabaseInterfaceTest() :
|
||||
userlistPath_(localPath / "userlist.yaml"),
|
||||
minimalOutputPath_(localPath / "minimal.yml"),
|
||||
url_("./testing-metadata.git"),
|
||||
branch_("master"),
|
||||
oldBranch_("old-branch"),
|
||||
generalUserlistMessage("A general userlist message.") {}
|
||||
|
||||
void SetUp() override {
|
||||
@@ -109,9 +106,6 @@ protected:
|
||||
|
||||
const std::filesystem::path userlistPath_;
|
||||
const std::filesystem::path minimalOutputPath_;
|
||||
const std::string url_;
|
||||
const std::string branch_;
|
||||
const std::string oldBranch_;
|
||||
const std::string generalUserlistMessage;
|
||||
};
|
||||
|
||||
|
||||
@@ -35,10 +35,7 @@ protected:
|
||||
MetadataListTest() :
|
||||
metadataPath(metadataFilesPath / "masterlist.yaml"),
|
||||
savedMetadataPath(metadataFilesPath / "saved.masterlist.yaml"),
|
||||
missingMetadataPath(metadataFilesPath / "missing-metadata.yaml"),
|
||||
invalidMetadataPaths(
|
||||
{metadataFilesPath / "invalid" / "non_map_root.yaml",
|
||||
metadataFilesPath / "invalid" / "non_unique.yaml"}) {}
|
||||
missingMetadataPath(metadataFilesPath / "missing-metadata.yaml") {}
|
||||
|
||||
inline void SetUp() override {
|
||||
CommonGameTestFixture::SetUp();
|
||||
@@ -46,24 +43,55 @@ protected:
|
||||
using std::filesystem::copy;
|
||||
using std::filesystem::exists;
|
||||
|
||||
auto sourceDirectory = getSourceMetadataFilesPath();
|
||||
|
||||
copy(sourceDirectory / "masterlist.yaml", metadataPath);
|
||||
writeMasterlist(metadataPath);
|
||||
ASSERT_TRUE(exists(metadataPath));
|
||||
|
||||
copyInvalidMetadataFile(sourceDirectory, "non_map_root.yaml");
|
||||
copyInvalidMetadataFile(sourceDirectory, "non_unique.yaml");
|
||||
|
||||
ASSERT_FALSE(exists(savedMetadataPath));
|
||||
ASSERT_FALSE(exists(missingMetadataPath));
|
||||
}
|
||||
|
||||
void copyInvalidMetadataFile(const std::filesystem::path& sourceDirectory,
|
||||
const std::string& file) {
|
||||
std::filesystem::create_directories(metadataFilesPath / "invalid");
|
||||
std::filesystem::copy(sourceDirectory / "invalid" / file,
|
||||
metadataFilesPath / "invalid" / file);
|
||||
ASSERT_TRUE(std::filesystem::exists(metadataFilesPath / "invalid" / file));
|
||||
static void writeMasterlist(const std::filesystem::path& path) {
|
||||
std::ofstream out(path);
|
||||
out << R"(bash_tags:
|
||||
- 'C.Climate'
|
||||
- 'Relev'
|
||||
|
||||
groups:
|
||||
- name: group1
|
||||
after:
|
||||
- group2
|
||||
- name: group2
|
||||
after:
|
||||
- default
|
||||
|
||||
globals:
|
||||
- type: say
|
||||
content: 'A global message.'
|
||||
|
||||
plugins:
|
||||
- name: 'Blank.esm'
|
||||
priority: -100
|
||||
msg:
|
||||
- type: warn
|
||||
content: 'This is a warning.'
|
||||
- type: say
|
||||
content: 'This message should be removed when evaluating conditions.'
|
||||
condition: 'active("Blank - Different.esm")'
|
||||
|
||||
- name: 'Blank.+\.esp'
|
||||
after:
|
||||
- 'Blank.esm'
|
||||
|
||||
- name: 'Blank.+(Different)?.*\.esp'
|
||||
inc:
|
||||
- 'Blank.esp'
|
||||
|
||||
- name: 'Blank.esp'
|
||||
group: group2
|
||||
dirty:
|
||||
- crc: 0xDEADBEEF
|
||||
util: utility)";
|
||||
out.close();
|
||||
}
|
||||
|
||||
static std::string PluginMetadataToString(const PluginMetadata& metadata) {
|
||||
@@ -74,7 +102,6 @@ protected:
|
||||
const std::filesystem::path savedMetadataPath;
|
||||
const std::filesystem::path groupMetadataPath;
|
||||
const std::filesystem::path missingMetadataPath;
|
||||
const std::vector<std::filesystem::path> invalidMetadataPaths;
|
||||
};
|
||||
|
||||
// Pass an empty first argument, as it's a prefix for the test instantation,
|
||||
@@ -168,10 +195,46 @@ TEST_P(MetadataListTest, loadYamlParsingShouldSupportMergeKeys) {
|
||||
}
|
||||
|
||||
TEST_P(MetadataListTest, loadShouldThrowIfAnInvalidMetadataFileIsGiven) {
|
||||
MetadataList ml;
|
||||
for (const auto& path : invalidMetadataPaths) {
|
||||
EXPECT_THROW(ml.Load(path), FileAccessError);
|
||||
}
|
||||
MetadataList metadataList;
|
||||
|
||||
std::ofstream out(metadataPath);
|
||||
out << R"( - 'C.Climate'
|
||||
- 'Relev'
|
||||
|
||||
globals:
|
||||
- type: say
|
||||
content: 'A global message.'
|
||||
|
||||
plugins:
|
||||
- name: 'Blank.+\.esp'
|
||||
after:
|
||||
- 'Blank.esm')";
|
||||
out.close();
|
||||
|
||||
EXPECT_THROW(metadataList.Load(metadataPath), FileAccessError);
|
||||
|
||||
out.open(metadataPath);
|
||||
out << R"(globals:
|
||||
- type: say
|
||||
content: 'A global message.'
|
||||
|
||||
plugins:
|
||||
- name: 'Blank.esm'
|
||||
priority: -100
|
||||
msg:
|
||||
- type: warn
|
||||
content: 'This is a warning.'
|
||||
- type: say
|
||||
content: 'This message should be removed when evaluating conditions.'
|
||||
condition: 'active("Blank - Different.esm")'
|
||||
|
||||
- name: 'Blank.esm'
|
||||
msg:
|
||||
- type: error
|
||||
content: 'This plugin entry will cause a failure, as it is not the first exact entry.')";
|
||||
out.close();
|
||||
|
||||
EXPECT_THROW(metadataList.Load(metadataPath), FileAccessError);
|
||||
}
|
||||
|
||||
TEST_P(MetadataListTest,
|
||||
|
||||
@@ -264,10 +264,6 @@ protected:
|
||||
|
||||
const uint32_t blankEsmCrc;
|
||||
|
||||
static std::filesystem::path getSourceMetadataFilesPath() {
|
||||
return std::filesystem::absolute("./testing-metadata");
|
||||
}
|
||||
|
||||
private:
|
||||
std::filesystem::path getSourcePluginsPath() const {
|
||||
using std::filesystem::absolute;
|
||||
|
||||
Reference in New Issue
Block a user