From 771dd6f9abe29c1d24c5ea8f0e7ca949bc24f84d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Thu, 14 Apr 2016 01:23:54 +0200 Subject: [PATCH] NOISSUE reorganize unit tests to be placed next to the code they test. Nuke more dead tests. --- .gitattributes | 1 + CMakeLists.txt | 8 - api/gui/CMakeLists.txt | 2 +- api/logic/CMakeLists.txt | 268 +++++++++++++----- .../logic/FileSystem_test.cpp | 51 +++- tests/tst_GZip.cpp => api/logic/GZip_test.cpp | 2 +- .../logic/Version_test.cpp | 2 +- .../logic/java/JavaVersion_test.cpp | 6 +- .../logic/minecraft/GradleSpecifier_test.cpp | 2 +- .../logic/minecraft/Library_test.cpp | 2 +- .../logic/minecraft/ModList_test.cpp | 4 +- .../minecraft/MojangVersionFormat_test.cpp | 6 +- .../logic/minecraft/ParseUtils_test.cpp | 2 +- .../logic/minecraft/testdata}/1.9-simple.json | Bin .../logic/minecraft/testdata}/1.9.json | Bin .../minecraft/testdata}/lib-native-arch.json | Bin .../logic/minecraft/testdata}/lib-native.json | Bin .../logic/minecraft/testdata}/lib-simple.json | Bin .../logic/settings/INIFile_test.cpp | 2 +- .../FileSystem-test_createShortcut-unix | Bin .../assets/minecraft/textures/blah.txt | Bin .../logic/testdata}/test_folder/pack.mcmeta | Bin .../logic/testdata}/test_folder/pack.nfo | Bin .../logic/updater/DownloadTask_test.cpp | 32 +-- .../logic/updater/UpdateChecker_test.cpp | 20 +- .../logic/updater/testdata}/1.json | Bin .../logic/updater/testdata}/2.json | Bin .../logic/updater/testdata}/channels.json | Bin .../updater/testdata}/errorChannels.json | Bin .../logic/updater/testdata}/fileOneA | Bin .../logic/updater/testdata}/fileOneB | Bin .../logic/updater/testdata}/fileThree | Bin .../logic/updater/testdata}/fileTwo | Bin .../updater/testdata}/garbageChannels.json | Bin .../logic/updater/testdata}/index.json | Bin .../logic/updater/testdata}/noChannels.json | Bin .../logic/updater/testdata}/oneChannel.json | Bin ...t_DownloadTask-test_writeInstallScript.xml | Bin .../logic/wonko/WonkoIndex_test.cpp | 2 +- cmake/UnitTest.cmake | 14 +- cmake/UnitTest/generate_test_data.cmake | 3 - tests/CMakeLists.txt | 82 ------ tests/data/.gitattributes | 2 - tests/tst_filematchers.cpp | 37 --- tests/tst_userutils.cpp | 70 ----- 45 files changed, 291 insertions(+), 329 deletions(-) rename tests/tst_FileSystem.cpp => api/logic/FileSystem_test.cpp (70%) rename tests/tst_GZip.cpp => api/logic/GZip_test.cpp (97%) rename tests/tst_modutils.cpp => api/logic/Version_test.cpp (99%) rename tests/tst_JavaVersion.cpp => api/logic/java/JavaVersion_test.cpp (98%) rename tests/tst_gradlespecifier.cpp => api/logic/minecraft/GradleSpecifier_test.cpp (98%) rename tests/tst_Library.cpp => api/logic/minecraft/Library_test.cpp (99%) rename tests/tst_ModList.cpp => api/logic/minecraft/ModList_test.cpp (91%) rename tests/tst_MojangVersionFormat.cpp => api/logic/minecraft/MojangVersionFormat_test.cpp (88%) rename tests/tst_ParseUtils.cpp => api/logic/minecraft/ParseUtils_test.cpp (96%) rename {tests/data => api/logic/minecraft/testdata}/1.9-simple.json (100%) rename {tests/data => api/logic/minecraft/testdata}/1.9.json (100%) rename {tests/data => api/logic/minecraft/testdata}/lib-native-arch.json (100%) rename {tests/data => api/logic/minecraft/testdata}/lib-native.json (100%) rename {tests/data => api/logic/minecraft/testdata}/lib-simple.json (100%) rename tests/tst_inifile.cpp => api/logic/settings/INIFile_test.cpp (97%) rename tests/data/tst_userutils-test_createShortcut-unix => api/logic/testdata/FileSystem-test_createShortcut-unix (100%) rename {tests/data_raw => api/logic/testdata}/test_folder/assets/minecraft/textures/blah.txt (100%) rename {tests/data_raw => api/logic/testdata}/test_folder/pack.mcmeta (100%) rename {tests/data_raw => api/logic/testdata}/test_folder/pack.nfo (100%) rename tests/tst_DownloadTask.cpp => api/logic/updater/DownloadTask_test.cpp (87%) rename tests/tst_UpdateChecker.cpp => api/logic/updater/UpdateChecker_test.cpp (87%) rename {tests/data => api/logic/updater/testdata}/1.json (100%) rename {tests/data => api/logic/updater/testdata}/2.json (100%) rename {tests/data => api/logic/updater/testdata}/channels.json (100%) rename {tests/data => api/logic/updater/testdata}/errorChannels.json (100%) rename {tests/data => api/logic/updater/testdata}/fileOneA (100%) rename {tests/data => api/logic/updater/testdata}/fileOneB (100%) rename {tests/data => api/logic/updater/testdata}/fileThree (100%) rename {tests/data => api/logic/updater/testdata}/fileTwo (100%) rename {tests/data => api/logic/updater/testdata}/garbageChannels.json (100%) rename {tests/data => api/logic/updater/testdata}/index.json (100%) rename {tests/data => api/logic/updater/testdata}/noChannels.json (100%) rename {tests/data => api/logic/updater/testdata}/oneChannel.json (100%) rename {tests/data => api/logic/updater/testdata}/tst_DownloadTask-test_writeInstallScript.xml (100%) rename tests/tst_WonkoIndex.cpp => api/logic/wonko/WonkoIndex_test.cpp (98%) delete mode 100644 tests/CMakeLists.txt delete mode 100644 tests/data/.gitattributes delete mode 100644 tests/tst_filematchers.cpp delete mode 100644 tests/tst_userutils.cpp diff --git a/.gitattributes b/.gitattributes index 2a31189d..c9c0d50e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ *.pem -crlf +**/testdata/** -text -diff diff --git a/CMakeLists.txt b/CMakeLists.txt index 3db0df73..d6acf79b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,6 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) ######## Set module path ######## set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/") -# Output all executables and shared libs in the main build folder, not in subfolders. -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) -if(UNIX) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) -endif() - set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${PROJECT_BINARY_DIR}/jars) ######## Set compiler flags ######## @@ -103,8 +97,6 @@ add_subdirectory(libraries/iconfix) # fork of Qt's QIcon loader ############################### Built Artifacts ############################### -add_subdirectory(tests) - add_subdirectory(api/logic) add_subdirectory(api/gui) diff --git a/api/gui/CMakeLists.txt b/api/gui/CMakeLists.txt index 1551a927..39cd5895 100644 --- a/api/gui/CMakeLists.txt +++ b/api/gui/CMakeLists.txt @@ -1,4 +1,4 @@ -project(MultiMC_logic) +project(MultiMC_gui LANGUAGES CXX) set(GUI_SOURCES DesktopServices.h diff --git a/api/logic/CMakeLists.txt b/api/logic/CMakeLists.txt index abae7b90..b534f970 100644 --- a/api/logic/CMakeLists.txt +++ b/api/logic/CMakeLists.txt @@ -1,6 +1,8 @@ project(MultiMC_logic) -set(LOGIC_SOURCES +include (UnitTest) + +set(CORE_SOURCES # LOGIC - Base classes and infrastructure BaseInstaller.h BaseInstaller.cpp @@ -42,12 +44,6 @@ set(LOGIC_SOURCES # a smart pointer wrapper intended for safer use with Qt signal/slot mechanisms QObjectPtr.h - # Path matchers - pathmatcher/FSTreeMatcher.h - pathmatcher/IPathMatcher.h - pathmatcher/MultiMatcher.h - pathmatcher/RegexpMatcher.h - # Compression support GZip.h GZip.cpp @@ -60,6 +56,31 @@ set(LOGIC_SOURCES Version.h Version.cpp + # A Recursive file system watcher + RecursiveFileSystemWatcher.h + RecursiveFileSystemWatcher.cpp +) + +add_unit_test(FileSystem + SOURCES FileSystem_test.cpp + LIBS MultiMC_logic + DATA testdata + ) + +add_unit_test(GZip + SOURCES GZip_test.cpp + LIBS MultiMC_logic + ) + +set(PATHMATCHER_SOURCES + # Path matchers + pathmatcher/FSTreeMatcher.h + pathmatcher/IPathMatcher.h + pathmatcher/MultiMatcher.h + pathmatcher/RegexpMatcher.h +) + +set(NET_SOURCES # network stuffs net/NetAction.h net/MD5EtagDownload.h @@ -76,24 +97,10 @@ set(LOGIC_SOURCES net/PasteUpload.cpp net/URLConstants.h net/URLConstants.cpp +) - # Yggdrasil login stuff - minecraft/auth/AuthSession.h - minecraft/auth/AuthSession.cpp - minecraft/auth/MojangAccountList.h - minecraft/auth/MojangAccountList.cpp - minecraft/auth/MojangAccount.h - minecraft/auth/MojangAccount.cpp - minecraft/auth/YggdrasilTask.h - minecraft/auth/YggdrasilTask.cpp - minecraft/auth/flows/AuthenticateTask.h - minecraft/auth/flows/AuthenticateTask.cpp - minecraft/auth/flows/RefreshTask.cpp - minecraft/auth/flows/RefreshTask.cpp - minecraft/auth/flows/ValidateTask.h - minecraft/auth/flows/ValidateTask.cpp - - # Game launch logic +# Game launch logic +set(LAUNCH_SOURCES launch/steps/PostLaunchCommand.cpp launch/steps/PostLaunchCommand.h launch/steps/PreLaunchCommand.cpp @@ -110,30 +117,70 @@ set(LOGIC_SOURCES launch/LoggedProcess.h launch/MessageLevel.cpp launch/MessageLevel.h +) - # Update system +# Old update system +set(UPDATE_SOURCES updater/GoUpdate.h updater/GoUpdate.cpp updater/UpdateChecker.h updater/UpdateChecker.cpp updater/DownloadTask.h updater/DownloadTask.cpp +) +add_unit_test(UpdateChecker + SOURCES updater/UpdateChecker_test.cpp + LIBS MultiMC_logic + DATA updater/testdata + ) + +add_unit_test(DownloadTask + SOURCES updater/DownloadTask_test.cpp + LIBS MultiMC_logic + DATA updater/testdata + ) + +# Rarely used notifications +set(NOTIFICATIONS_SOURCES # Notifications - short warning messages notifications/NotificationChecker.h notifications/NotificationChecker.cpp +) +# Backend for the news bar... there's usually no news. +set(NEWS_SOURCES # News System news/NewsChecker.h news/NewsChecker.cpp news/NewsEntry.h news/NewsEntry.cpp +) +# Minecraft services status checker +set(STATUS_SOURCES # Status system status/StatusChecker.h status/StatusChecker.cpp +) +# Support for Minecraft instances and launch +set(MINECRAFT_SOURCES # Minecraft support + minecraft/auth/AuthSession.h + minecraft/auth/AuthSession.cpp + minecraft/auth/MojangAccountList.h + minecraft/auth/MojangAccountList.cpp + minecraft/auth/MojangAccount.h + minecraft/auth/MojangAccount.cpp + minecraft/auth/YggdrasilTask.h + minecraft/auth/YggdrasilTask.cpp + minecraft/auth/flows/AuthenticateTask.h + minecraft/auth/flows/AuthenticateTask.cpp + minecraft/auth/flows/RefreshTask.cpp + minecraft/auth/flows/RefreshTask.cpp + minecraft/auth/flows/ValidateTask.h + minecraft/auth/flows/ValidateTask.cpp minecraft/onesix/OneSixUpdate.h minecraft/onesix/OneSixUpdate.cpp minecraft/onesix/OneSixInstance.h @@ -201,55 +248,6 @@ set(LOGIC_SOURCES minecraft/ftb/FTBPlugin.h minecraft/ftb/FTBPlugin.cpp - # A Recursive file system watcher - RecursiveFileSystemWatcher.h - RecursiveFileSystemWatcher.cpp - - # the screenshots feature - screenshots/Screenshot.h - screenshots/ImgurUpload.h - screenshots/ImgurUpload.cpp - screenshots/ImgurAlbumCreation.h - screenshots/ImgurAlbumCreation.cpp - - # Tasks - tasks/Task.h - tasks/Task.cpp - tasks/ThreadTask.h - tasks/ThreadTask.cpp - tasks/SequentialTask.h - tasks/SequentialTask.cpp - - # Settings - settings/INIFile.cpp - settings/INIFile.h - settings/INISettingsObject.cpp - settings/INISettingsObject.h - settings/OverrideSetting.cpp - settings/OverrideSetting.h - settings/PassthroughSetting.cpp - settings/PassthroughSetting.h - settings/Setting.cpp - settings/Setting.h - settings/SettingsObject.cpp - settings/SettingsObject.h - - # Java related code - java/launch/CheckJava.cpp - java/launch/CheckJava.h - java/JavaChecker.h - java/JavaChecker.cpp - java/JavaCheckerJob.h - java/JavaCheckerJob.cpp - java/JavaInstall.h - java/JavaInstall.cpp - java/JavaInstallList.h - java/JavaInstallList.cpp - java/JavaUtils.h - java/JavaUtils.cpp - java/JavaVersion.h - java/JavaVersion.cpp - # Assets minecraft/AssetsUtils.h minecraft/AssetsUtils.cpp @@ -271,11 +269,106 @@ set(LOGIC_SOURCES minecraft/liteloader/LiteLoaderInstaller.cpp minecraft/liteloader/LiteLoaderVersionList.h minecraft/liteloader/LiteLoaderVersionList.cpp +) +add_unit_test(GradleSpecifier + SOURCES minecraft/GradleSpecifier_test.cpp + LIBS MultiMC_logic + ) + +add_unit_test(MojangVersionFormat + SOURCES minecraft/MojangVersionFormat_test.cpp + LIBS MultiMC_logic + DATA minecraft/testdata + ) + +add_unit_test(Library + SOURCES minecraft/Library_test.cpp + LIBS MultiMC_logic + ) + +# FIXME: shares data with FileSystem test +add_unit_test(ModList + SOURCES minecraft/ModList_test.cpp + DATA testdata + LIBS MultiMC_logic + ) + +add_unit_test(ParseUtils + SOURCES minecraft/ParseUtils_test.cpp + LIBS MultiMC_logic + ) + +# the screenshots feature +set(SCREENSHOTS_SOURCES + screenshots/Screenshot.h + screenshots/ImgurUpload.h + screenshots/ImgurUpload.cpp + screenshots/ImgurAlbumCreation.h + screenshots/ImgurAlbumCreation.cpp +) + +set(TASKS_SOURCES + # Tasks + tasks/Task.h + tasks/Task.cpp + tasks/ThreadTask.h + tasks/ThreadTask.cpp + tasks/SequentialTask.h + tasks/SequentialTask.cpp +) + +set(SETTINGS_SOURCES + # Settings + settings/INIFile.cpp + settings/INIFile.h + settings/INISettingsObject.cpp + settings/INISettingsObject.h + settings/OverrideSetting.cpp + settings/OverrideSetting.h + settings/PassthroughSetting.cpp + settings/PassthroughSetting.h + settings/Setting.cpp + settings/Setting.h + settings/SettingsObject.cpp + settings/SettingsObject.h +) + +add_unit_test(INIFile + SOURCES settings/INIFile_test.cpp + LIBS MultiMC_logic + ) + +set(JAVA_SOURCES + # Java related code + java/launch/CheckJava.cpp + java/launch/CheckJava.h + java/JavaChecker.h + java/JavaChecker.cpp + java/JavaCheckerJob.h + java/JavaCheckerJob.cpp + java/JavaInstall.h + java/JavaInstall.cpp + java/JavaInstallList.h + java/JavaInstallList.cpp + java/JavaUtils.h + java/JavaUtils.cpp + java/JavaVersion.h + java/JavaVersion.cpp +) + +add_unit_test(JavaVersion + SOURCES java/JavaVersion_test.cpp + LIBS MultiMC_logic + ) + +set(TRANSLATIONS_SOURCES # Translations trans/TranslationDownloader.h trans/TranslationDownloader.cpp +) +set(TOOLS_SOURCES # Tools tools/BaseExternalTool.cpp tools/BaseExternalTool.h @@ -287,7 +380,9 @@ set(LOGIC_SOURCES tools/JVisualVM.h tools/MCEditTool.cpp tools/MCEditTool.h +) +set(WONKO_SOURCES # Wonko wonko/tasks/BaseWonkoEntityRemoteLoadTask.cpp wonko/tasks/BaseWonkoEntityRemoteLoadTask.h @@ -310,11 +405,36 @@ set(LOGIC_SOURCES wonko/WonkoReference.cpp wonko/WonkoReference.h ) + +add_unit_test(WonkoIndex + SOURCES wonko/WonkoIndex_test.cpp + LIBS MultiMC_logic + ) + ################################ COMPILE ################################ # we need zlib find_package(ZLIB REQUIRED) +set(LOGIC_SOURCES + ${CORE_SOURCES} + ${PATHMATCHER_SOURCES} + ${NET_SOURCES} + ${LAUNCH_SOURCES} + ${UPDATE_SOURCES} + ${NOTIFICATIONS_SOURCES} + ${NEWS_SOURCES} + ${STATUS_SOURCES} + ${MINECRAFT_SOURCES} + ${SCREENSHOTS_SOURCES} + ${TASKS_SOURCES} + ${SETTINGS_SOURCES} + ${JAVA_SOURCES} + ${TRANSLATIONS_SOURCES} + ${TOOLS_SOURCES} + ${WONKO_SOURCES} +) + add_library(MultiMC_logic SHARED ${LOGIC_SOURCES}) set_target_properties(MultiMC_logic PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN 1) diff --git a/tests/tst_FileSystem.cpp b/api/logic/FileSystem_test.cpp similarity index 70% rename from tests/tst_FileSystem.cpp rename to api/logic/FileSystem_test.cpp index ae1f93bb..d5e1eedb 100644 --- a/tests/tst_FileSystem.cpp +++ b/api/logic/FileSystem_test.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "TestUtil.h" #include "FileSystem.h" @@ -80,7 +81,7 @@ slots: void test_copy() { - QString folder = QFINDTESTDATA("tests/data/test_folder"); + QString folder = QFINDTESTDATA("data/test_folder"); auto f = [&folder]() { QTemporaryDir tempDir; @@ -110,8 +111,54 @@ slots: QVERIFY(folder.endsWith('/')); f(); } + + void test_getDesktop() + { + QCOMPARE(FS::getDesktopDir(), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)); + } + +// this is only valid on linux +// FIXME: implement on windows, OSX, then test. +#if defined(Q_OS_LINUX) + void test_createShortcut_data() + { + QTest::addColumn("location"); + QTest::addColumn("dest"); + QTest::addColumn("args"); + QTest::addColumn("name"); + QTest::addColumn("iconLocation"); + QTest::addColumn("result"); + + QTest::newRow("unix") << QDir::currentPath() + << "asdfDest" + << (QStringList() << "arg1" << "arg2") + << "asdf" + << QString() + #if defined(Q_OS_LINUX) + << MULTIMC_GET_TEST_FILE("data/FileSystem-test_createShortcut-unix") + #elif defined(Q_OS_WIN) + << QByteArray() + #endif + ; + } + + void test_createShortcut() + { + QFETCH(QString, location); + QFETCH(QString, dest); + QFETCH(QStringList, args); + QFETCH(QString, name); + QFETCH(QString, iconLocation); + QFETCH(QByteArray, result); + + QVERIFY(FS::createShortCut(location, dest, args, name, iconLocation)); + QCOMPARE(QString::fromLocal8Bit(TestsInternal::readFile(location + QDir::separator() + name + ".desktop")), QString::fromLocal8Bit(result)); + + //QDir().remove(location); + } +#endif }; QTEST_GUILESS_MAIN(FileSystemTest) -#include "tst_FileSystem.moc" +#include "FileSystem_test.moc" diff --git a/tests/tst_GZip.cpp b/api/logic/GZip_test.cpp similarity index 97% rename from tests/tst_GZip.cpp rename to api/logic/GZip_test.cpp index 67707a4b..f4c9214c 100644 --- a/tests/tst_GZip.cpp +++ b/api/logic/GZip_test.cpp @@ -54,4 +54,4 @@ slots: QTEST_GUILESS_MAIN(GZipTest) -#include "tst_GZip.moc" +#include "GZip_test.moc" diff --git a/tests/tst_modutils.cpp b/api/logic/Version_test.cpp similarity index 99% rename from tests/tst_modutils.cpp rename to api/logic/Version_test.cpp index 1894711e..4c083934 100644 --- a/tests/tst_modutils.cpp +++ b/api/logic/Version_test.cpp @@ -120,4 +120,4 @@ private slots: QTEST_GUILESS_MAIN(ModUtilsTest) -#include "tst_modutils.moc" +#include "Version_test.moc" diff --git a/tests/tst_JavaVersion.cpp b/api/logic/java/JavaVersion_test.cpp similarity index 98% rename from tests/tst_JavaVersion.cpp rename to api/logic/java/JavaVersion_test.cpp index 708c8d8d..9dae0ba6 100644 --- a/tests/tst_JavaVersion.cpp +++ b/api/logic/java/JavaVersion_test.cpp @@ -113,8 +113,4 @@ slots: QTEST_GUILESS_MAIN(JavaVersionTest) -#include "tst_JavaVersion.moc" - - - // manual testing fakery - +#include "JavaVersion_test.moc" diff --git a/tests/tst_gradlespecifier.cpp b/api/logic/minecraft/GradleSpecifier_test.cpp similarity index 98% rename from tests/tst_gradlespecifier.cpp rename to api/logic/minecraft/GradleSpecifier_test.cpp index 146c9838..155522cd 100644 --- a/tests/tst_gradlespecifier.cpp +++ b/api/logic/minecraft/GradleSpecifier_test.cpp @@ -74,4 +74,4 @@ slots: QTEST_GUILESS_MAIN(GradleSpecifierTest) -#include "tst_gradlespecifier.moc" +#include "GradleSpecifier_test.moc" diff --git a/tests/tst_Library.cpp b/api/logic/minecraft/Library_test.cpp similarity index 99% rename from tests/tst_Library.cpp rename to api/logic/minecraft/Library_test.cpp index b5840261..fcf0b4d1 100644 --- a/tests/tst_Library.cpp +++ b/api/logic/minecraft/Library_test.cpp @@ -192,4 +192,4 @@ private: QTEST_GUILESS_MAIN(LibraryTest) -#include "tst_Library.moc" +#include "Library_test.moc" diff --git a/tests/tst_ModList.cpp b/api/logic/minecraft/ModList_test.cpp similarity index 91% rename from tests/tst_ModList.cpp rename to api/logic/minecraft/ModList_test.cpp index e3aa1435..155c238a 100644 --- a/tests/tst_ModList.cpp +++ b/api/logic/minecraft/ModList_test.cpp @@ -16,7 +16,7 @@ slots: void test_1178() { // source - QString source = QFINDTESTDATA("tests/data/test_folder"); + QString source = QFINDTESTDATA("data/test_folder"); // sanity check QVERIFY(!source.endsWith('/')); @@ -50,4 +50,4 @@ slots: QTEST_GUILESS_MAIN(ModListTest) -#include "tst_ModList.moc" +#include "ModList_test.moc" diff --git a/tests/tst_MojangVersionFormat.cpp b/api/logic/minecraft/MojangVersionFormat_test.cpp similarity index 88% rename from tests/tst_MojangVersionFormat.cpp rename to api/logic/minecraft/MojangVersionFormat_test.cpp index 2e7b1cb8..5b836271 100644 --- a/tests/tst_MojangVersionFormat.cpp +++ b/api/logic/minecraft/MojangVersionFormat_test.cpp @@ -31,7 +31,7 @@ slots: void test_Through_Simple() { - QJsonDocument doc = readJson("tests/data/1.9-simple.json"); + QJsonDocument doc = readJson("data/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); @@ -41,7 +41,7 @@ slots: void test_Through() { - QJsonDocument doc = readJson("tests/data/1.9.json"); + QJsonDocument doc = readJson("data/1.9.json"); auto vfile = MojangVersionFormat::versionFileFromJson(doc, "1.9.json"); auto doc2 = MojangVersionFormat::versionFileToJson(vfile); writeJson("1.9-passthorugh.json", doc2); @@ -51,5 +51,5 @@ slots: QTEST_GUILESS_MAIN(MojangVersionFormatTest) -#include "tst_MojangVersionFormat.moc" +#include "MojangVersionFormat_test.moc" diff --git a/tests/tst_ParseUtils.cpp b/api/logic/minecraft/ParseUtils_test.cpp similarity index 96% rename from tests/tst_ParseUtils.cpp rename to api/logic/minecraft/ParseUtils_test.cpp index d961e52b..79bed1d4 100644 --- a/tests/tst_ParseUtils.cpp +++ b/api/logic/minecraft/ParseUtils_test.cpp @@ -41,5 +41,5 @@ slots: QTEST_GUILESS_MAIN(ParseUtilsTest) -#include "tst_ParseUtils.moc" +#include "ParseUtils_test.moc" diff --git a/tests/data/1.9-simple.json b/api/logic/minecraft/testdata/1.9-simple.json similarity index 100% rename from tests/data/1.9-simple.json rename to api/logic/minecraft/testdata/1.9-simple.json diff --git a/tests/data/1.9.json b/api/logic/minecraft/testdata/1.9.json similarity index 100% rename from tests/data/1.9.json rename to api/logic/minecraft/testdata/1.9.json diff --git a/tests/data/lib-native-arch.json b/api/logic/minecraft/testdata/lib-native-arch.json similarity index 100% rename from tests/data/lib-native-arch.json rename to api/logic/minecraft/testdata/lib-native-arch.json diff --git a/tests/data/lib-native.json b/api/logic/minecraft/testdata/lib-native.json similarity index 100% rename from tests/data/lib-native.json rename to api/logic/minecraft/testdata/lib-native.json diff --git a/tests/data/lib-simple.json b/api/logic/minecraft/testdata/lib-simple.json similarity index 100% rename from tests/data/lib-simple.json rename to api/logic/minecraft/testdata/lib-simple.json diff --git a/tests/tst_inifile.cpp b/api/logic/settings/INIFile_test.cpp similarity index 97% rename from tests/tst_inifile.cpp rename to api/logic/settings/INIFile_test.cpp index 2c3d8103..b3ae7375 100644 --- a/tests/tst_inifile.cpp +++ b/api/logic/settings/INIFile_test.cpp @@ -59,4 +59,4 @@ slots: QTEST_GUILESS_MAIN(IniFileTest) -#include "tst_inifile.moc" +#include "INIFile_test.moc" diff --git a/tests/data/tst_userutils-test_createShortcut-unix b/api/logic/testdata/FileSystem-test_createShortcut-unix similarity index 100% rename from tests/data/tst_userutils-test_createShortcut-unix rename to api/logic/testdata/FileSystem-test_createShortcut-unix diff --git a/tests/data_raw/test_folder/assets/minecraft/textures/blah.txt b/api/logic/testdata/test_folder/assets/minecraft/textures/blah.txt similarity index 100% rename from tests/data_raw/test_folder/assets/minecraft/textures/blah.txt rename to api/logic/testdata/test_folder/assets/minecraft/textures/blah.txt diff --git a/tests/data_raw/test_folder/pack.mcmeta b/api/logic/testdata/test_folder/pack.mcmeta similarity index 100% rename from tests/data_raw/test_folder/pack.mcmeta rename to api/logic/testdata/test_folder/pack.mcmeta diff --git a/tests/data_raw/test_folder/pack.nfo b/api/logic/testdata/test_folder/pack.nfo similarity index 100% rename from tests/data_raw/test_folder/pack.nfo rename to api/logic/testdata/test_folder/pack.nfo diff --git a/tests/tst_DownloadTask.cpp b/api/logic/updater/DownloadTask_test.cpp similarity index 87% rename from tests/tst_DownloadTask.cpp rename to api/logic/updater/DownloadTask_test.cpp index 743bf514..edf0f507 100644 --- a/tests/tst_DownloadTask.cpp +++ b/api/logic/updater/DownloadTask_test.cpp @@ -77,31 +77,31 @@ slots: QTest::addColumn("ret"); QTest::newRow("one") - << MULTIMC_GET_TEST_FILE("tests/data/1.json") + << MULTIMC_GET_TEST_FILE("data/1.json") << (VersionFileList() << VersionFileEntry{"fileOne", 493, - encodeBaseFile("/tests/data/fileOneA"), + encodeBaseFile("/data/fileOneA"), "9eb84090956c484e32cb6c08455a667b"} << VersionFileEntry{"fileTwo", 644, - encodeBaseFile("/tests/data/fileTwo"), + encodeBaseFile("/data/fileTwo"), "38f94f54fa3eb72b0ea836538c10b043"} << VersionFileEntry{"fileThree", 750, - encodeBaseFile("/tests/data/fileThree"), + encodeBaseFile("/data/fileThree"), "f12df554b21e320be6471d7154130e70"}) << QString() << true; QTest::newRow("two") - << MULTIMC_GET_TEST_FILE("tests/data/2.json") + << MULTIMC_GET_TEST_FILE("data/2.json") << (VersionFileList() << VersionFileEntry{"fileOne", 493, - encodeBaseFile("/tests/data/fileOneB"), + encodeBaseFile("/data/fileOneB"), "42915a71277c9016668cce7b82c6b577"} << VersionFileEntry{"fileTwo", 644, - encodeBaseFile("/tests/data/fileTwo"), + encodeBaseFile("/data/fileTwo"), "38f94f54fa3eb72b0ea836538c10b043"}) << QString() << true; } @@ -133,42 +133,42 @@ slots: QTest::newRow("test 1") << tempFolder << (VersionFileList() << VersionFileEntry{ - "tests/data/fileOne", 493, + "data/fileOne", 493, FileSourceList() << FileSource( "http", "http://host/path/fileOne-1"), "9eb84090956c484e32cb6c08455a667b"} << VersionFileEntry{ - "tests/data/fileTwo", 644, + "data/fileTwo", 644, FileSourceList() << FileSource( "http", "http://host/path/fileTwo-1"), "38f94f54fa3eb72b0ea836538c10b043"} << VersionFileEntry{ - "tests/data/fileThree", 420, + "data/fileThree", 420, FileSourceList() << FileSource( "http", "http://host/path/fileThree-1"), "f12df554b21e320be6471d7154130e70"}) << (VersionFileList() << VersionFileEntry{ - "tests/data/fileOne", 493, + "data/fileOne", 493, FileSourceList() << FileSource("http", "http://host/path/fileOne-2"), "42915a71277c9016668cce7b82c6b577"} << VersionFileEntry{ - "tests/data/fileTwo", 644, + "data/fileTwo", 644, FileSourceList() << FileSource("http", "http://host/path/fileTwo-2"), "38f94f54fa3eb72b0ea836538c10b043"}) << (OperationList() - << Operation::DeleteOp("tests/data/fileThree") + << Operation::DeleteOp("data/fileThree") << Operation::CopyOp( FS::PathCombine(tempFolder, - QString("tests/data/fileOne").replace("/", "_")), - "tests/data/fileOne", 493)); + QString("data/fileOne").replace("/", "_")), + "data/fileOne", 493)); } void test_processFileLists() { @@ -211,4 +211,4 @@ extern "C" QTEST_GUILESS_MAIN(DownloadTaskTest) } -#include "tst_DownloadTask.moc" +#include "DownloadTask_test.moc" diff --git a/tests/tst_UpdateChecker.cpp b/api/logic/updater/UpdateChecker_test.cpp similarity index 87% rename from tests/tst_UpdateChecker.cpp rename to api/logic/updater/UpdateChecker_test.cpp index 3a0d3781..16b21614 100644 --- a/tests/tst_UpdateChecker.cpp +++ b/api/logic/updater/UpdateChecker_test.cpp @@ -49,36 +49,36 @@ slots: QTest::newRow("garbage") << QString() - << findTestDataUrl("tests/data/garbageChannels.json") + << findTestDataUrl("data/garbageChannels.json") << false << false << QList(); QTest::newRow("errors") << QString() - << findTestDataUrl("tests/data/errorChannels.json") + << findTestDataUrl("data/errorChannels.json") << false << true << QList(); QTest::newRow("no channels") << QString() - << findTestDataUrl("tests/data/noChannels.json") + << findTestDataUrl("data/noChannels.json") << false << true << QList(); QTest::newRow("one channel") << QString("develop") - << findTestDataUrl("tests/data/oneChannel.json") + << findTestDataUrl("data/oneChannel.json") << true << true << (QList() << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"}); QTest::newRow("several channels") << QString("develop") - << findTestDataUrl("tests/data/channels.json") + << findTestDataUrl("data/channels.json") << true << true << (QList() - << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", findTestDataUrl("tests/data")} - << UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", findTestDataUrl("tests/data")} + << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", findTestDataUrl("data")} + << UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", findTestDataUrl("data")} << UpdateChecker::ChannelListEntry{"42", "The Channel", "This is the channel that is going to answer all of your questions", "https://dent.me/tea"}); } void tst_ChannelListParsing() @@ -115,7 +115,7 @@ slots: void tst_UpdateChecking() { QString channel = "develop"; - QString channelUrl = findTestDataUrl("tests/data/channels.json"); + QString channelUrl = findTestDataUrl("data/channels.json"); int currentBuild = 2; UpdateChecker checker(channelUrl, channel, currentBuild); @@ -129,7 +129,7 @@ slots: QVERIFY(channelListLoadedSpy.wait()); qDebug() << "CWD:" << QDir::current().absolutePath(); - checker.m_channels[0].url = findTestDataUrl("tests/data/"); + checker.m_channels[0].url = findTestDataUrl("data/"); checker.checkForUpdate(channel, false); QVERIFY(updateAvailableSpy.wait()); @@ -143,4 +143,4 @@ slots: QTEST_GUILESS_MAIN(UpdateCheckerTest) -#include "tst_UpdateChecker.moc" +#include "UpdateChecker_test.moc" diff --git a/tests/data/1.json b/api/logic/updater/testdata/1.json similarity index 100% rename from tests/data/1.json rename to api/logic/updater/testdata/1.json diff --git a/tests/data/2.json b/api/logic/updater/testdata/2.json similarity index 100% rename from tests/data/2.json rename to api/logic/updater/testdata/2.json diff --git a/tests/data/channels.json b/api/logic/updater/testdata/channels.json similarity index 100% rename from tests/data/channels.json rename to api/logic/updater/testdata/channels.json diff --git a/tests/data/errorChannels.json b/api/logic/updater/testdata/errorChannels.json similarity index 100% rename from tests/data/errorChannels.json rename to api/logic/updater/testdata/errorChannels.json diff --git a/tests/data/fileOneA b/api/logic/updater/testdata/fileOneA similarity index 100% rename from tests/data/fileOneA rename to api/logic/updater/testdata/fileOneA diff --git a/tests/data/fileOneB b/api/logic/updater/testdata/fileOneB similarity index 100% rename from tests/data/fileOneB rename to api/logic/updater/testdata/fileOneB diff --git a/tests/data/fileThree b/api/logic/updater/testdata/fileThree similarity index 100% rename from tests/data/fileThree rename to api/logic/updater/testdata/fileThree diff --git a/tests/data/fileTwo b/api/logic/updater/testdata/fileTwo similarity index 100% rename from tests/data/fileTwo rename to api/logic/updater/testdata/fileTwo diff --git a/tests/data/garbageChannels.json b/api/logic/updater/testdata/garbageChannels.json similarity index 100% rename from tests/data/garbageChannels.json rename to api/logic/updater/testdata/garbageChannels.json diff --git a/tests/data/index.json b/api/logic/updater/testdata/index.json similarity index 100% rename from tests/data/index.json rename to api/logic/updater/testdata/index.json diff --git a/tests/data/noChannels.json b/api/logic/updater/testdata/noChannels.json similarity index 100% rename from tests/data/noChannels.json rename to api/logic/updater/testdata/noChannels.json diff --git a/tests/data/oneChannel.json b/api/logic/updater/testdata/oneChannel.json similarity index 100% rename from tests/data/oneChannel.json rename to api/logic/updater/testdata/oneChannel.json diff --git a/tests/data/tst_DownloadTask-test_writeInstallScript.xml b/api/logic/updater/testdata/tst_DownloadTask-test_writeInstallScript.xml similarity index 100% rename from tests/data/tst_DownloadTask-test_writeInstallScript.xml rename to api/logic/updater/testdata/tst_DownloadTask-test_writeInstallScript.xml diff --git a/tests/tst_WonkoIndex.cpp b/api/logic/wonko/WonkoIndex_test.cpp similarity index 98% rename from tests/tst_WonkoIndex.cpp rename to api/logic/wonko/WonkoIndex_test.cpp index 076c806b..7eb51bc3 100644 --- a/tests/tst_WonkoIndex.cpp +++ b/api/logic/wonko/WonkoIndex_test.cpp @@ -47,4 +47,4 @@ slots: QTEST_GUILESS_MAIN(WonkoIndexTest) -#include "tst_WonkoIndex.moc" +#include "WonkoIndex_test.moc" diff --git a/cmake/UnitTest.cmake b/cmake/UnitTest.cmake index 1cbb2b60..d2c99933 100644 --- a/cmake/UnitTest.cmake +++ b/cmake/UnitTest.cmake @@ -12,9 +12,9 @@ function(add_unit_test name) cmake_parse_arguments(OPT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) if(WIN32) - add_executable(tst_${name} ${OPT_SOURCES} ${TEST_RESOURCE_PATH}/UnitTest/test.rc) + add_executable(${name}_test ${OPT_SOURCES} ${TEST_RESOURCE_PATH}/UnitTest/test.rc) else() - add_executable(tst_${name} ${OPT_SOURCES}) + add_executable(${name}_test ${OPT_SOURCES}) endif() if(NOT "${OPT_DATA}" STREQUAL "") @@ -31,7 +31,7 @@ function(add_unit_test name) endif() if(NOT TARGET "${DATA_TARGET_NAME}") add_custom_target(${DATA_TARGET_NAME}) - add_dependencies(tst_${name} ${DATA_TARGET_NAME}) + add_dependencies(${name}_test ${DATA_TARGET_NAME}) add_custom_command( TARGET ${DATA_TARGET_NAME} COMMAND ${CMAKE_COMMAND} "-DTEST_DATA_URL=${TEST_DATA_URL}" -DSOURCE=${TEST_DATA_PATH_SRC} -DDESTINATION=${TEST_DATA_PATH} -P ${TEST_RESOURCE_PATH}/UnitTest/generate_test_data.cmake @@ -40,10 +40,10 @@ function(add_unit_test name) endif() endif() - target_link_libraries(tst_${name} ${OPT_LIBS}) - qt5_use_modules(tst_${name} Test ${OPT_QT}) + target_link_libraries(${name}_test ${OPT_LIBS}) + qt5_use_modules(${name}_test Test ${OPT_QT}) - target_include_directories(tst_${name} PRIVATE "${TEST_RESOURCE_PATH}/UnitTest/") + target_include_directories(${name}_test PRIVATE "${TEST_RESOURCE_PATH}/UnitTest/") - add_test(NAME ${name} COMMAND tst_${name}) + add_test(NAME ${name} COMMAND ${name}_test) endfunction() diff --git a/cmake/UnitTest/generate_test_data.cmake b/cmake/UnitTest/generate_test_data.cmake index 9de7410b..d9250fab 100644 --- a/cmake/UnitTest/generate_test_data.cmake +++ b/cmake/UnitTest/generate_test_data.cmake @@ -2,14 +2,12 @@ # variables. Create destination directory if it does not exist. function(configure_files srcDir destDir) - message(STATUS "Configuring directory ${destDir} from ${srcDir}") make_directory(${destDir}) file(GLOB templateFiles RELATIVE ${srcDir} ${srcDir}/*) foreach(templateFile ${templateFiles}) set(srcTemplatePath ${srcDir}/${templateFile}) if(NOT IS_DIRECTORY ${srcTemplatePath}) - message(STATUS "Configuring file ${templateFile}") configure_file( ${srcTemplatePath} ${destDir}/${templateFile} @@ -17,7 +15,6 @@ function(configure_files srcDir destDir) NEWLINE_STYLE LF ) else() - message(STATUS "Recursing? ${srcTemplatePath}") configure_files("${srcTemplatePath}" "${destDir}/${templateFile}") endif() endforeach() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt deleted file mode 100644 index 667aecd1..00000000 --- a/tests/CMakeLists.txt +++ /dev/null @@ -1,82 +0,0 @@ -include(UnitTest) - -add_unit_test(gradlespecifier - SOURCES tst_gradlespecifier.cpp - LIBS MultiMC_logic - ) - -add_unit_test(userutils - SOURCES tst_userutils.cpp - LIBS MultiMC_logic - ) - -add_unit_test(modutils - SOURCES tst_modutils.cpp - LIBS MultiMC_logic - ) - -add_unit_test(inifile - SOURCES tst_inifile.cpp - LIBS MultiMC_logic - ) - -add_unit_test(FileSystem - SOURCES tst_FileSystem.cpp - LIBS MultiMC_logic - ) - -add_unit_test(Library - SOURCES tst_Library.cpp - LIBS MultiMC_logic - ) - -add_unit_test(UpdateChecker - SOURCES tst_UpdateChecker.cpp - LIBS MultiMC_logic - DATA data - ) - -add_unit_test(DownloadTask - SOURCES tst_DownloadTask.cpp - LIBS MultiMC_logic - DATA data_raw - ) - -add_unit_test(filematchers - SOURCES tst_filematchers.cpp - LIBS MultiMC_logic - ) - -add_unit_test(ModList - SOURCES tst_ModList.cpp - LIBS MultiMC_logic - ) - -# add_unit_test(Resource -# SOURCES tst_Resource.cpp -# ) - -add_unit_test(GZip - SOURCES tst_GZip.cpp - LIBS MultiMC_logic - ) - -add_unit_test(JavaVersion - SOURCES tst_JavaVersion.cpp - LIBS MultiMC_logic - ) - -add_unit_test(ParseUtils - SOURCES tst_ParseUtils.cpp - LIBS MultiMC_logic - ) - -add_unit_test(MojangVersionFormat - SOURCES tst_MojangVersionFormat.cpp - LIBS MultiMC_logic - ) - -add_unit_test(WonkoIndex - SOURCES tst_WonkoIndex.cpp - LIBS MultiMC_logic - ) diff --git a/tests/data/.gitattributes b/tests/data/.gitattributes deleted file mode 100644 index 9ac803f0..00000000 --- a/tests/data/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -* -text -diff - diff --git a/tests/tst_filematchers.cpp b/tests/tst_filematchers.cpp deleted file mode 100644 index 36286070..00000000 --- a/tests/tst_filematchers.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include "TestUtil.h" - -class IniFileTest : public QObject -{ - Q_OBJECT -private -slots: - - void test_FSTree() - { - /* - QTest::addColumn("through"); - - QTest::newRow("unix path") << "/abc/def/ghi/jkl"; - QTest::newRow("windows path") << "C:\\Program files\\terrible\\name\\of something\\"; - QTest::newRow("Plain text") << "Lorem ipsum dolor sit amet."; - QTest::newRow("Escape sequences") << "Lorem\n\t\n\\n\\tAAZ\nipsum dolor\n\nsit amet."; - QTest::newRow("Escape sequences 2") << "\"\n\n\""; - */ - } - void test_Regexp() - { - /* - QFETCH(QString, through); - - QString there = INIFile::escape(through); - QString back = INIFile::unescape(there); - - QCOMPARE(back, through); - */ - } -}; - -QTEST_GUILESS_MAIN(IniFileTest) - -#include "tst_filematchers.moc" diff --git a/tests/tst_userutils.cpp b/tests/tst_userutils.cpp deleted file mode 100644 index 01f1b2a6..00000000 --- a/tests/tst_userutils.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include -#include "TestUtil.h" -#include - -class UserUtilsTest : public QObject -{ - Q_OBJECT -private -slots: - void initTestCase() - { - - } - void cleanupTestCase() - { - - } - - void test_getDesktop() - { - QCOMPARE(FS::getDesktopDir(), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)); - } - -// this is only valid on linux -// FIXME: implement on windows, OSX, then test. -#if defined(Q_OS_LINUX) - void test_createShortcut_data() - { - QTest::addColumn("location"); - QTest::addColumn("dest"); - QTest::addColumn("args"); - QTest::addColumn("name"); - QTest::addColumn("iconLocation"); - QTest::addColumn("result"); - - QTest::newRow("unix") << QDir::currentPath() - << "asdfDest" - << (QStringList() << "arg1" << "arg2") - << "asdf" - << QString() - #if defined(Q_OS_LINUX) - << MULTIMC_GET_TEST_FILE("data/tst_userutils-test_createShortcut-unix") - #elif defined(Q_OS_WIN) - << QByteArray() - #endif - ; - } - - void test_createShortcut() - { - QFETCH(QString, location); - QFETCH(QString, dest); - QFETCH(QStringList, args); - QFETCH(QString, name); - QFETCH(QString, iconLocation); - QFETCH(QByteArray, result); - - QVERIFY(FS::createShortCut(location, dest, args, name, iconLocation)); - QCOMPARE(QString::fromLocal8Bit(TestsInternal::readFile(location + QDir::separator() + name + ".desktop")), QString::fromLocal8Bit(result)); - - //QDir().remove(location); - } -#endif -}; - - -QTEST_GUILESS_MAIN(UserUtilsTest) - -#include "tst_userutils.moc"