refactor: restructure tests

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
This commit is contained in:
Sefa Eyeoglu 2022-09-11 22:25:18 +02:00
parent ca282f9fb3
commit 4c7d3a103c
No known key found for this signature in database
GPG Key ID: C10411294912A422
44 changed files with 113 additions and 125 deletions

View File

@ -321,5 +321,8 @@ add_subdirectory(libraries/murmur2) # Hash for usage with the CurseForge API
add_subdirectory(buildconfig)
if(BUILD_TESTING)
add_subdirectory(tests)
endif()
# NOTE: this must always be last to appease the CMake deity of quirky install command evaluation order.
add_subdirectory(launcher)

View File

@ -88,12 +88,6 @@ set(CORE_SOURCES
MMCTime.cpp
)
ecm_add_test(FileSystem_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME FileSystem) # TODO: needs testdata
ecm_add_test(GZip_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME GZip)
set(PATHMATCHER_SOURCES
# Path matchers
pathmatcher/FSTreeMatcher.h
@ -355,46 +349,6 @@ set(MINECRAFT_SOURCES
mojang/PackageManifest.cpp
minecraft/Agent.h)
ecm_add_test(minecraft/GradleSpecifier_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME GradleSpecifier)
if(BUILD_TESTING)
add_executable(PackageManifest
mojang/PackageManifest_test.cpp
)
target_link_libraries(PackageManifest
Launcher_logic
Qt${QT_VERSION_MAJOR}::Test
)
target_include_directories(PackageManifest
PRIVATE ../cmake/UnitTest/
)
add_test(
NAME PackageManifest
COMMAND PackageManifest
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
endif()
# TODO: needs minecraft/testdata
ecm_add_test(minecraft/MojangVersionFormat_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME MojangVersionFormat)
ecm_add_test(minecraft/Library_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME Library)
# FIXME: shares data with FileSystem test
# TODO: needs testdata
ecm_add_test(minecraft/mod/ResourceFolderModel_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME ResourceFolderModel)
ecm_add_test(minecraft/mod/ResourcePackParse_test.cpp
LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME ResourcePackParse)
ecm_add_test(minecraft/ParseUtils_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME ParseUtils)
# the screenshots feature
set(SCREENSHOTS_SOURCES
screenshots/Screenshot.h
@ -416,9 +370,6 @@ set(TASKS_SOURCES
tasks/MultipleOptionsTask.cpp
)
ecm_add_test(tasks/Task_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME Task)
set(SETTINGS_SOURCES
# Settings
settings/INIFile.cpp
@ -435,9 +386,6 @@ set(SETTINGS_SOURCES
settings/SettingsObject.h
)
ecm_add_test(settings/INIFile_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME INIFile)
set(JAVA_SOURCES
java/JavaChecker.h
java/JavaChecker.cpp
@ -453,9 +401,6 @@ set(JAVA_SOURCES
java/JavaVersion.cpp
)
ecm_add_test(java/JavaVersion_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME JavaVersion)
set(TRANSLATIONS_SOURCES
translations/TranslationsModel.h
translations/TranslationsModel.cpp
@ -558,9 +503,6 @@ set(PACKWIZ_SOURCES
modplatform/packwiz/Packwiz.cpp
)
# TODO: needs modplatform/packwiz/testdata
ecm_add_test(modplatform/packwiz/Packwiz_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME Packwiz)
set(TECHNIC_SOURCES
modplatform/technic/SingleZipPackInstallTask.h
@ -584,9 +526,6 @@ set(ATLAUNCHER_SOURCES
modplatform/atlauncher/ATLShareCode.h
)
ecm_add_test(meta/Index_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME Index)
################################ COMPILE ################################
# we need zlib
@ -1005,6 +944,7 @@ endif()
# Add executable
add_library(Launcher_logic STATIC ${LOGIC_SOURCES} ${LAUNCHER_SOURCES} ${LAUNCHER_UI} ${LAUNCHER_RESOURCES})
target_include_directories(Launcher_logic PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(Launcher_logic
systeminfo
Launcher_classparser

43
tests/CMakeLists.txt Normal file
View File

@ -0,0 +1,43 @@
project(tests)
ecm_add_test(FileSystem_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME FileSystem)
ecm_add_test(GZip_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME GZip)
ecm_add_test(GradleSpecifier_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME GradleSpecifier)
ecm_add_test(PackageManifest_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME PackageManifest)
ecm_add_test(MojangVersionFormat_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME MojangVersionFormat)
ecm_add_test(Library_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME Library)
ecm_add_test(ResourceFolderModel_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME ResourceFolderModel)
ecm_add_test(ResourcePackParse_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME ResourcePackParse)
ecm_add_test(ParseUtils_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME ParseUtils)
ecm_add_test(Task_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME Task)
ecm_add_test(INIFile_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME INIFile)
ecm_add_test(JavaVersion_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME JavaVersion)
ecm_add_test(Packwiz_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME Packwiz)
ecm_add_test(Index_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test
TEST_NAME Index)

View File

@ -2,7 +2,7 @@
#include <QTemporaryDir>
#include <QStandardPaths>
#include "FileSystem.h"
#include <FileSystem.h>
class FileSystemTest : public QObject
{
@ -80,7 +80,7 @@ slots:
void test_copy()
{
QString folder = QFINDTESTDATA("testdata/test_folder");
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
QTemporaryDir tempDir;

View File

@ -1,6 +1,6 @@
#include <QTest>
#include "GZip.h"
#include <GZip.h>
#include <random>
void fib(int &prev, int &cur)

View File

@ -1,6 +1,6 @@
#include <QTest>
#include "minecraft/GradleSpecifier.h"
#include <minecraft/GradleSpecifier.h>
class GradleSpecifierTest : public QObject
{

View File

@ -1,6 +1,6 @@
#include <QTest>
#include "settings/INIFile.h"
#include <settings/INIFile.h>
class IniFileTest : public QObject
{

View File

@ -1,7 +1,7 @@
#include <QTest>
#include "meta/Index.h"
#include "meta/VersionList.h"
#include <meta/Index.h>
#include <meta/VersionList.h>
class IndexTest : public QObject
{

View File

@ -1,6 +1,6 @@
#include <QTest>
#include "java/JavaVersion.h"
#include <java/JavaVersion.h>
class JavaVersionTest : public QObject
{

View File

@ -1,10 +1,10 @@
#include <QTest>
#include "minecraft/MojangVersionFormat.h"
#include "minecraft/OneSixVersionFormat.h"
#include "minecraft/Library.h"
#include "net/HttpMetaCache.h"
#include "FileSystem.h"
#include <minecraft/MojangVersionFormat.h>
#include <minecraft/OneSixVersionFormat.h>
#include <minecraft/Library.h>
#include <net/HttpMetaCache.h>
#include <FileSystem.h>
class LibraryTest : public QObject
{
@ -30,7 +30,7 @@ slots:
{
cache.reset(new HttpMetaCache());
cache->addBase("libraries", QDir("libraries").absolutePath());
dataDir = QDir(QFINDTESTDATA("testdata")).absolutePath();
dataDir = QDir(QFINDTESTDATA("testdata/Library")).absolutePath();
}
void test_legacy()
{
@ -72,14 +72,14 @@ slots:
QCOMPARE(test.isNative(), false);
QStringList failedFiles;
test.setHint("local");
auto downloads = test.getDownloads(currentSystem, cache.get(), failedFiles, QFINDTESTDATA("testdata"));
auto downloads = test.getDownloads(currentSystem, cache.get(), failedFiles, QFINDTESTDATA("testdata/Library"));
QCOMPARE(downloads.size(), 0);
qDebug() << failedFiles;
QCOMPARE(failedFiles.size(), 0);
QStringList jar, native, native32, native64;
test.getApplicableFiles(currentSystem, jar, native, native32, native64, QFINDTESTDATA("testdata"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/codecwav-20101023.jar")).absoluteFilePath()});
test.getApplicableFiles(currentSystem, jar, native, native32, native64, QFINDTESTDATA("testdata/Library"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath()});
QCOMPARE(native, {});
QCOMPARE(native32, {});
QCOMPARE(native64, {});
@ -165,20 +165,20 @@ slots:
test.setRepositoryURL("file://foo/bar");
{
QStringList jar, native, native32, native64;
test.getApplicableFiles(Os_Linux, jar, native, native32, native64, QFINDTESTDATA("testdata"));
test.getApplicableFiles(Os_Linux, jar, native, native32, native64, QFINDTESTDATA("testdata/Library"));
QCOMPARE(jar, {});
QCOMPARE(native, {});
QCOMPARE(native32, {QFileInfo(QFINDTESTDATA("testdata/testname-testversion-linux-32.jar")).absoluteFilePath()});
QCOMPARE(native64, {QFileInfo(QFINDTESTDATA("testdata") + "/testname-testversion-linux-64.jar").absoluteFilePath()});
QCOMPARE(native32, {QFileInfo(QFINDTESTDATA("testdata/Library/testname-testversion-linux-32.jar")).absoluteFilePath()});
QCOMPARE(native64, {QFileInfo(QFINDTESTDATA("testdata/Library") + "/testname-testversion-linux-64.jar").absoluteFilePath()});
QStringList failedFiles;
auto dls = test.getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata"));
auto dls = test.getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata/Library"));
QCOMPARE(dls.size(), 0);
QCOMPARE(failedFiles, {QFileInfo(QFINDTESTDATA("testdata") + "/testname-testversion-linux-64.jar").absoluteFilePath()});
QCOMPARE(failedFiles, {QFileInfo(QFINDTESTDATA("testdata/Library") + "/testname-testversion-linux-64.jar").absoluteFilePath()});
}
}
void test_onenine()
{
auto test = readMojangJson(QFINDTESTDATA("testdata/lib-simple.json"));
auto test = readMojangJson(QFINDTESTDATA("testdata/Library/lib-simple.json"));
{
QStringList jar, native, native32, native64;
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QString());
@ -197,41 +197,41 @@ slots:
test->setHint("local");
{
QStringList jar, native, native32, native64;
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QFINDTESTDATA("testdata"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/codecwav-20101023.jar")).absoluteFilePath()});
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QFINDTESTDATA("testdata/Library"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath()});
QCOMPARE(native, {});
QCOMPARE(native32, {});
QCOMPARE(native64, {});
}
{
QStringList failedFiles;
auto dls = test->getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata"));
auto dls = test->getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata/Library"));
QCOMPARE(dls.size(), 0);
QCOMPARE(failedFiles, {});
}
}
void test_onenine_local_override()
{
auto test = readMojangJson(QFINDTESTDATA("testdata/lib-simple.json"));
auto test = readMojangJson(QFINDTESTDATA("testdata/Library/lib-simple.json"));
test->setHint("local");
{
QStringList jar, native, native32, native64;
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QFINDTESTDATA("testdata"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/codecwav-20101023.jar")).absoluteFilePath()});
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QFINDTESTDATA("testdata/Library"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath()});
QCOMPARE(native, {});
QCOMPARE(native32, {});
QCOMPARE(native64, {});
}
{
QStringList failedFiles;
auto dls = test->getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata"));
auto dls = test->getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata/Library"));
QCOMPARE(dls.size(), 0);
QCOMPARE(failedFiles, {});
}
}
void test_onenine_native()
{
auto test = readMojangJson(QFINDTESTDATA("testdata/lib-native.json"));
auto test = readMojangJson(QFINDTESTDATA("testdata/Library/lib-native.json"));
QStringList jar, native, native32, native64;
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QString());
QCOMPARE(jar, QStringList());
@ -246,7 +246,7 @@ slots:
}
void test_onenine_native_arch()
{
auto test = readMojangJson(QFINDTESTDATA("testdata/lib-native-arch.json"));
auto test = readMojangJson(QFINDTESTDATA("testdata/Library/lib-native-arch.json"));
QStringList jar, native, native32, native64;
test->getApplicableFiles(Os_Windows, jar, native, native32, native64, QString());
QCOMPARE(jar, {});

View File

@ -1,7 +1,7 @@
#include <QTest>
#include <QDebug>
#include "minecraft/MojangVersionFormat.h"
#include <minecraft/MojangVersionFormat.h>
class MojangVersionFormatTest : public QObject
{
@ -29,7 +29,7 @@ private
slots:
void test_Through_Simple()
{
QJsonDocument doc = readJson(QFINDTESTDATA("testdata/1.9-simple.json"));
QJsonDocument doc = readJson(QFINDTESTDATA("testdata/MojangVersionFormat/1.9-simple.json"));
auto vfile = MojangVersionFormat::versionFileFromJson(doc, "1.9-simple.json");
auto doc2 = MojangVersionFormat::versionFileToJson(vfile);
writeJson("1.9-simple-passthorugh.json", doc2);
@ -39,7 +39,7 @@ slots:
void test_Through()
{
QJsonDocument doc = readJson(QFINDTESTDATA("testdata/1.9.json"));
QJsonDocument doc = readJson(QFINDTESTDATA("testdata/MojangVersionFormat/1.9.json"));
auto vfile = MojangVersionFormat::versionFileFromJson(doc, "1.9.json");
auto doc2 = MojangVersionFormat::versionFileToJson(vfile);
writeJson("1.9-passthorugh.json", doc2);

View File

@ -1,7 +1,7 @@
#include <QTest>
#include <QDebug>
#include "mojang/PackageManifest.h"
#include <mojang/PackageManifest.h>
using namespace mojang_files;
@ -82,14 +82,14 @@ void PackageManifestTest::test_parse()
}
void PackageManifestTest::test_parse_file() {
auto path = QFINDTESTDATA("testdata/1.8.0_202-x64.json");
auto path = QFINDTESTDATA("testdata/PackageManifest/1.8.0_202-x64.json");
auto manifest = Package::fromManifestFile(path);
QVERIFY(manifest.valid == true);
}
void PackageManifestTest::test_inspect() {
auto path = QFINDTESTDATA("testdata/inspect_win/");
auto path = QFINDTESTDATA("testdata/PackageManifest/inspect_win/");
auto manifest = Package::fromInspectedFolder(path);
QVERIFY(manifest.valid == true);
QVERIFY(manifest.files.size() == 2);
@ -112,7 +112,7 @@ void PackageManifestTest::test_inspect() {
#ifndef Q_OS_WIN32
void PackageManifestTest::test_inspect_symlinks() {
auto path = QFINDTESTDATA("testdata/inspect/");
auto path = QFINDTESTDATA("testdata/PackageManifest/inspect/");
auto manifest = Package::fromInspectedFolder(path);
QVERIFY(manifest.valid == true);
QVERIFY(manifest.files.size() == 1);

View File

@ -20,7 +20,7 @@
#include <QTemporaryDir>
#include <QTest>
#include "Packwiz.h"
#include <modplatform/packwiz/Packwiz.h>
class PackwizTest : public QObject {
Q_OBJECT
@ -29,7 +29,7 @@ class PackwizTest : public QObject {
// Files taken from https://github.com/packwiz/packwiz-example-pack
void loadFromFile_Modrinth()
{
QString source = QFINDTESTDATA("testdata");
QString source = QFINDTESTDATA("testdata/Packwiz");
QDir index_dir(source);
QString slug_mod("borderless-mining");
@ -55,7 +55,7 @@ class PackwizTest : public QObject {
void loadFromFile_Curseforge()
{
QString source = QFINDTESTDATA("testdata");
QString source = QFINDTESTDATA("testdata/Packwiz");
QDir index_dir(source);
QString name_mod("screenshot-to-clipboard-fabric.pw.toml");

View File

@ -1,6 +1,6 @@
#include <QTest>
#include "minecraft/ParseUtils.h"
#include <minecraft/ParseUtils.h>
class ParseUtilsTest : public QObject
{

View File

@ -37,10 +37,10 @@
#include <QTemporaryDir>
#include <QTimer>
#include "FileSystem.h"
#include <FileSystem.h>
#include "minecraft/mod/ModFolderModel.h"
#include "minecraft/mod/ResourceFolderModel.h"
#include <minecraft/mod/ModFolderModel.h>
#include <minecraft/mod/ResourceFolderModel.h>
#define EXEC_UPDATE_TASK(EXEC, VERIFY) \
QEventLoop loop; \
@ -70,7 +70,7 @@ slots:
void test_1178()
{
// source
QString source = QFINDTESTDATA("testdata/test_folder");
QString source = QFINDTESTDATA("testdata/ResourceFolderModel/test_folder");
// sanity check
QVERIFY(!source.endsWith('/'));
@ -135,7 +135,7 @@ slots:
void test_addFromWatch()
{
QString source = QFINDTESTDATA("testdata");
QString source = QFINDTESTDATA("testdata/ResourceFolderModel");
ModFolderModel model(source);
@ -154,8 +154,8 @@ slots:
void test_removeResource()
{
QString folder_resource = QFINDTESTDATA("testdata/test_folder");
QString file_mod = QFINDTESTDATA("testdata/supercoolmod.jar");
QString folder_resource = QFINDTESTDATA("testdata/ResourceFolderModel/test_folder");
QString file_mod = QFINDTESTDATA("testdata/ResourceFolderModel/supercoolmod.jar");
QTemporaryDir tmp;
@ -206,8 +206,8 @@ slots:
void test_enable_disable()
{
QString folder_resource = QFINDTESTDATA("testdata/test_folder");
QString file_mod = QFINDTESTDATA("testdata/supercoolmod.jar");
QString folder_resource = QFINDTESTDATA("testdata/ResourceFolderModel/test_folder");
QString file_mod = QFINDTESTDATA("testdata/ResourceFolderModel/supercoolmod.jar");
QTemporaryDir tmp;
ResourceFolderModel model(tmp.path());

View File

@ -19,10 +19,10 @@
#include <QTest>
#include <QTimer>
#include "FileSystem.h"
#include <FileSystem.h>
#include "ResourcePack.h"
#include "tasks/LocalResourcePackParseTask.h"
#include <minecraft/mod/ResourcePack.h>
#include <minecraft/mod/tasks/LocalResourcePackParseTask.h>
class ResourcePackParseTest : public QObject {
Q_OBJECT
@ -30,7 +30,7 @@ class ResourcePackParseTest : public QObject {
private slots:
void test_parseZIP()
{
QString source = QFINDTESTDATA("testdata");
QString source = QFINDTESTDATA("testdata/ResourcePackParse");
QString zip_rp = FS::PathCombine(source, "test_resource_pack_idk.zip");
ResourcePack pack { QFileInfo(zip_rp) };
@ -43,7 +43,7 @@ class ResourcePackParseTest : public QObject {
void test_parseFolder()
{
QString source = QFINDTESTDATA("testdata");
QString source = QFINDTESTDATA("testdata/ResourcePackParse");
QString folder_rp = FS::PathCombine(source, "test_folder");
ResourcePack pack { QFileInfo(folder_rp) };
@ -56,7 +56,7 @@ class ResourcePackParseTest : public QObject {
void test_parseFolder2()
{
QString source = QFINDTESTDATA("testdata");
QString source = QFINDTESTDATA("testdata/ResourcePackParse");
QString folder_rp = FS::PathCombine(source, "another_test_folder");
ResourcePack pack { QFileInfo(folder_rp) };

View File

@ -1,9 +1,9 @@
#include <QTest>
#include "ConcurrentTask.h"
#include "MultipleOptionsTask.h"
#include "SequentialTask.h"
#include "Task.h"
#include <tasks/ConcurrentTask.h>
#include <tasks/MultipleOptionsTask.h>
#include <tasks/SequentialTask.h>
#include <tasks/Task.h>
/* Does nothing. Only used for testing. */
class BasicTask : public Task {

View File

@ -15,7 +15,7 @@
#include <QTest>
#include "TestUtil.h"
#include <TestUtil.h>
#include <Version.h>
class ModUtilsTest : public QObject

1
tests/testdata/Library vendored Symbolic link
View File

@ -0,0 +1 @@
MojangVersionFormat/

1
tests/testdata/ResourceFolderModel vendored Symbolic link
View File

@ -0,0 +1 @@
ResourcePackParse