commit
fb75c23f4e
20
.github/workflows/build.yml
vendored
20
.github/workflows/build.yml
vendored
@ -61,6 +61,7 @@ jobs:
|
||||
pacboy: >-
|
||||
toolchain:p
|
||||
cmake:p
|
||||
extra-cmake-modules:p
|
||||
ninja:p
|
||||
qt5:p
|
||||
ccache:p
|
||||
@ -107,7 +108,7 @@ jobs:
|
||||
if: runner.os == 'macOS'
|
||||
run: |
|
||||
brew update
|
||||
brew install qt@5 ninja
|
||||
brew install qt@5 ninja extra-cmake-modules
|
||||
|
||||
- name: Update Qt (AppImage)
|
||||
if: runner.os == 'Linux' && matrix.appimage == true
|
||||
@ -121,7 +122,7 @@ jobs:
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 ninja-build qt5-image-formats-plugins
|
||||
sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 ninja-build qt5-image-formats-plugins extra-cmake-modules
|
||||
|
||||
- name: Prepare AppImage (Linux)
|
||||
if: runner.os == 'Linux' && matrix.appimage == true
|
||||
@ -167,6 +168,21 @@ jobs:
|
||||
run: |
|
||||
cmake --build ${{ env.BUILD_DIR }}
|
||||
|
||||
##
|
||||
# TEST
|
||||
##
|
||||
|
||||
- name: Test
|
||||
if: runner.os != 'Windows'
|
||||
run: |
|
||||
ctest --test-dir build --output-on-failure
|
||||
|
||||
- name: Test (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
ctest --test-dir build --output-on-failure
|
||||
|
||||
##
|
||||
# PACKAGE BUILDS
|
||||
##
|
||||
|
@ -6,14 +6,12 @@ if(WIN32)
|
||||
endif()
|
||||
|
||||
project(Launcher)
|
||||
include(CTest)
|
||||
|
||||
string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BUILD_DIR}" IS_IN_SOURCE_BUILD)
|
||||
if(IS_IN_SOURCE_BUILD)
|
||||
message(FATAL_ERROR "You are building the Launcher in-source. Please separate the build tree from the source tree.")
|
||||
endif()
|
||||
|
||||
|
||||
##################################### Set CMake options #####################################
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
@ -63,6 +61,16 @@ if(ENABLE_LTO)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(BUILD_TESTING "Build the testing tree." ON)
|
||||
|
||||
find_package(ECM REQUIRED NO_MODULE)
|
||||
set(CMAKE_MODULE_PATH "${ECM_MODULE_PATH};${CMAKE_MODULE_PATH}")
|
||||
include(CTest)
|
||||
include(ECMAddTests)
|
||||
if (BUILD_TESTING)
|
||||
enable_testing()
|
||||
endif()
|
||||
|
||||
##################################### Set Application options #####################################
|
||||
|
||||
######## Set URLs ########
|
||||
@ -102,8 +110,6 @@ set(Launcher_MATRIX_URL "https://matrix.to/#/#polymc:matrix.org" CACHE STRING "U
|
||||
# Discord URL
|
||||
set(Launcher_DISCORD_URL "https://discord.gg/Z52pwxWCHP" CACHE STRING "URL for the Discord guild.")
|
||||
|
||||
|
||||
|
||||
# Subreddit URL
|
||||
set(Launcher_SUBREDDIT_URL "https://www.reddit.com/r/PolyMCLauncher/" CACHE STRING "URL for the subreddit.")
|
||||
|
||||
|
@ -1,50 +0,0 @@
|
||||
find_package(Qt5Test REQUIRED)
|
||||
|
||||
set(TEST_RESOURCE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
message(${TEST_RESOURCE_PATH})
|
||||
|
||||
function(add_unit_test name)
|
||||
if(BUILD_TESTING)
|
||||
set(options "")
|
||||
set(oneValueArgs DATA)
|
||||
set(multiValueArgs SOURCES LIBS)
|
||||
|
||||
cmake_parse_arguments(OPT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||
|
||||
if(WIN32)
|
||||
add_executable(${name}_test ${OPT_SOURCES} ${TEST_RESOURCE_PATH}/UnitTest/test.rc)
|
||||
else()
|
||||
add_executable(${name}_test ${OPT_SOURCES})
|
||||
endif()
|
||||
|
||||
if(NOT "${OPT_DATA}" STREQUAL "")
|
||||
set(TEST_DATA_PATH "${CMAKE_CURRENT_BINARY_DIR}/data")
|
||||
set(TEST_DATA_PATH_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${OPT_DATA}")
|
||||
message("From ${TEST_DATA_PATH_SRC} to ${TEST_DATA_PATH}")
|
||||
string(REGEX REPLACE "[/\\:]" "_" DATA_TARGET_NAME "${TEST_DATA_PATH_SRC}")
|
||||
if(UNIX)
|
||||
# on unix we get the third / from the filename
|
||||
set(TEST_DATA_URL "file://${TEST_DATA_PATH}")
|
||||
else()
|
||||
# we don't on windows, so we have to add it ourselves
|
||||
set(TEST_DATA_URL "file:///${TEST_DATA_PATH}")
|
||||
endif()
|
||||
if(NOT TARGET "${DATA_TARGET_NAME}")
|
||||
add_custom_target(${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
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_link_libraries(${name}_test Qt5::Test ${OPT_LIBS})
|
||||
|
||||
target_include_directories(${name}_test PRIVATE "${TEST_RESOURCE_PATH}/UnitTest/")
|
||||
|
||||
add_test(NAME ${name} COMMAND ${name}_test WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
endfunction()
|
@ -1,28 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <QFile>
|
||||
#include <QCoreApplication>
|
||||
#include <QTest>
|
||||
#include <QDir>
|
||||
|
||||
#define expandstr(s) expandstr2(s)
|
||||
#define expandstr2(s) #s
|
||||
|
||||
class TestsInternal
|
||||
{
|
||||
public:
|
||||
static QByteArray readFile(const QString &fileName)
|
||||
{
|
||||
QFile f(fileName);
|
||||
f.open(QFile::ReadOnly);
|
||||
return f.readAll();
|
||||
}
|
||||
static QString readFileUtf8(const QString &fileName)
|
||||
{
|
||||
return QString::fromUtf8(readFile(fileName));
|
||||
}
|
||||
};
|
||||
|
||||
#define GET_TEST_FILE(file) TestsInternal::readFile(QFINDTESTDATA(file))
|
||||
#define GET_TEST_FILE_UTF8(file) TestsInternal::readFileUtf8(QFINDTESTDATA(file))
|
||||
|
@ -1,23 +0,0 @@
|
||||
# Copy files from source directory to destination directory, substituting any
|
||||
# variables. Create destination directory if it does not exist.
|
||||
|
||||
function(configure_files srcDir destDir)
|
||||
make_directory(${destDir})
|
||||
|
||||
file(GLOB templateFiles RELATIVE ${srcDir} ${srcDir}/*)
|
||||
foreach(templateFile ${templateFiles})
|
||||
set(srcTemplatePath ${srcDir}/${templateFile})
|
||||
if(NOT IS_DIRECTORY ${srcTemplatePath})
|
||||
configure_file(
|
||||
${srcTemplatePath}
|
||||
${destDir}/${templateFile}
|
||||
@ONLY
|
||||
NEWLINE_STYLE LF
|
||||
)
|
||||
else()
|
||||
configure_files("${srcTemplatePath}" "${destDir}/${templateFile}")
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
configure_files(${SOURCE} ${DESTINATION})
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<assemblyIdentity name="Launcher.Test.0" type="win32" version="5.0.0.0" />
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<description>Custom Minecraft launcher for managing multiple installs.</description>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!--The ID below indicates app support for Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
<!--The ID below indicates app support for Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<!--The ID below indicates app support for Windows Developer Preview / Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
@ -1,28 +0,0 @@
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <windows.h>
|
||||
|
||||
1 RT_MANIFEST "test.manifest"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,0
|
||||
FILEOS VOS_NT_WINDOWS32
|
||||
FILETYPE VFT_APP
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "000004b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "MultiMC & PolyMC Contributors"
|
||||
VALUE "FileDescription", "Testcase"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
VALUE "ProductName", "Launcher Testcase"
|
||||
VALUE "ProductVersion", "5"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x0000, 0x04b0 // Unicode
|
||||
END
|
||||
END
|
@ -4,8 +4,6 @@ project(application)
|
||||
|
||||
######## Sources and headers ########
|
||||
|
||||
include (UnitTest)
|
||||
|
||||
set(CORE_SOURCES
|
||||
# LOGIC - Base classes and infrastructure
|
||||
BaseInstaller.h
|
||||
@ -90,16 +88,11 @@ set(CORE_SOURCES
|
||||
MMCTime.cpp
|
||||
)
|
||||
|
||||
add_unit_test(FileSystem
|
||||
SOURCES FileSystem_test.cpp
|
||||
LIBS Launcher_logic
|
||||
DATA testdata
|
||||
)
|
||||
ecm_add_test(FileSystem_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME FileSystem) # TODO: needs testdata
|
||||
|
||||
add_unit_test(GZip
|
||||
SOURCES GZip_test.cpp
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
ecm_add_test(GZip_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME GZip)
|
||||
|
||||
set(PATHMATCHER_SOURCES
|
||||
# Path matchers
|
||||
@ -168,16 +161,10 @@ if (Launcher_UPDATER_BASE)
|
||||
updater/DownloadTask.cpp
|
||||
)
|
||||
|
||||
add_unit_test(UpdateChecker
|
||||
SOURCES updater/UpdateChecker_test.cpp
|
||||
LIBS Launcher_logic
|
||||
DATA updater/testdata
|
||||
)
|
||||
add_unit_test(DownloadTask
|
||||
SOURCES updater/DownloadTask_test.cpp
|
||||
LIBS Launcher_logic
|
||||
DATA updater/testdata
|
||||
)
|
||||
ecm_add_test(updater/UpdateChecker_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME UpdateChecker)
|
||||
ecm_add_test(updater/DownloadTask_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME DownloadTask)
|
||||
endif()
|
||||
|
||||
# Backend for the news bar... there's usually no news.
|
||||
@ -359,10 +346,8 @@ set(MINECRAFT_SOURCES
|
||||
mojang/PackageManifest.cpp
|
||||
minecraft/Agent.h)
|
||||
|
||||
add_unit_test(GradleSpecifier
|
||||
SOURCES minecraft/GradleSpecifier_test.cpp
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
ecm_add_test(minecraft/GradleSpecifier_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME GradleSpecifier)
|
||||
|
||||
if(BUILD_TESTING)
|
||||
add_executable(PackageManifest
|
||||
@ -382,28 +367,20 @@ if(BUILD_TESTING)
|
||||
)
|
||||
endif()
|
||||
|
||||
add_unit_test(MojangVersionFormat
|
||||
SOURCES minecraft/MojangVersionFormat_test.cpp
|
||||
LIBS Launcher_logic
|
||||
DATA minecraft/testdata
|
||||
)
|
||||
# TODO: needs minecraft/testdata
|
||||
ecm_add_test(minecraft/MojangVersionFormat_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME MojangVersionFormat)
|
||||
|
||||
add_unit_test(Library
|
||||
SOURCES minecraft/Library_test.cpp
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
ecm_add_test(minecraft/Library_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME Library)
|
||||
|
||||
# FIXME: shares data with FileSystem test
|
||||
add_unit_test(ModFolderModel
|
||||
SOURCES minecraft/mod/ModFolderModel_test.cpp
|
||||
DATA testdata
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
# TODO: needs testdata
|
||||
ecm_add_test(minecraft/mod/ModFolderModel_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME ModFolderModel)
|
||||
|
||||
add_unit_test(ParseUtils
|
||||
SOURCES minecraft/ParseUtils_test.cpp
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
ecm_add_test(minecraft/ParseUtils_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME ParseUtils)
|
||||
|
||||
# the screenshots feature
|
||||
set(SCREENSHOTS_SOURCES
|
||||
@ -424,10 +401,8 @@ set(TASKS_SOURCES
|
||||
tasks/SequentialTask.cpp
|
||||
)
|
||||
|
||||
add_unit_test(Task
|
||||
SOURCES tasks/Task_test.cpp
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
ecm_add_test(tasks/Task_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME Task)
|
||||
|
||||
set(SETTINGS_SOURCES
|
||||
# Settings
|
||||
@ -445,10 +420,8 @@ set(SETTINGS_SOURCES
|
||||
settings/SettingsObject.h
|
||||
)
|
||||
|
||||
add_unit_test(INIFile
|
||||
SOURCES settings/INIFile_test.cpp
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
ecm_add_test(settings/INIFile_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME INIFile)
|
||||
|
||||
set(JAVA_SOURCES
|
||||
java/JavaChecker.h
|
||||
@ -465,10 +438,8 @@ set(JAVA_SOURCES
|
||||
java/JavaVersion.cpp
|
||||
)
|
||||
|
||||
add_unit_test(JavaVersion
|
||||
SOURCES java/JavaVersion_test.cpp
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
ecm_add_test(java/JavaVersion_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME JavaVersion)
|
||||
|
||||
set(TRANSLATIONS_SOURCES
|
||||
translations/TranslationsModel.h
|
||||
@ -560,11 +531,9 @@ set(PACKWIZ_SOURCES
|
||||
modplatform/packwiz/Packwiz.cpp
|
||||
)
|
||||
|
||||
add_unit_test(Packwiz
|
||||
SOURCES modplatform/packwiz/Packwiz_test.cpp
|
||||
DATA modplatform/packwiz/testdata
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
# TODO: needs modplatform/packwiz/testdata
|
||||
ecm_add_test(modplatform/packwiz/Packwiz_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME Packwiz)
|
||||
|
||||
set(TECHNIC_SOURCES
|
||||
modplatform/technic/SingleZipPackInstallTask.h
|
||||
@ -588,10 +557,8 @@ set(ATLAUNCHER_SOURCES
|
||||
modplatform/atlauncher/ATLShareCode.h
|
||||
)
|
||||
|
||||
add_unit_test(Index
|
||||
SOURCES meta/Index_test.cpp
|
||||
LIBS Launcher_logic
|
||||
)
|
||||
ecm_add_test(meta/Index_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
|
||||
TEST_NAME Index)
|
||||
|
||||
################################ COMPILE ################################
|
||||
|
||||
|
@ -120,11 +120,6 @@ bool checkProblemticPathJava(QDir folder);
|
||||
// Get the Directory representing the User's Desktop
|
||||
QString getDesktopDir();
|
||||
|
||||
// Create a shortcut at *location*, pointing to *dest* called with the arguments *args*
|
||||
// call it *name* and assign it the icon *icon*
|
||||
// return true if operation succeeded
|
||||
bool createShortCut(QString location, QString dest, QStringList args, QString name, QString iconLocation);
|
||||
|
||||
// Overrides one folder with the contents of another, preserving items exclusive to the first folder
|
||||
// Equivalent to doing QDir::rename, but allowing for overrides
|
||||
bool overrideFolder(QString overwritten_path, QString override_path);
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include <QTest>
|
||||
#include <QTemporaryDir>
|
||||
#include <QStandardPaths>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "FileSystem.h"
|
||||
|
||||
@ -81,7 +80,7 @@ slots:
|
||||
|
||||
void test_copy()
|
||||
{
|
||||
QString folder = QFINDTESTDATA("data/test_folder");
|
||||
QString folder = QFINDTESTDATA("testdata/test_folder");
|
||||
auto f = [&folder]()
|
||||
{
|
||||
QTemporaryDir tempDir;
|
||||
@ -116,47 +115,6 @@ slots:
|
||||
{
|
||||
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<QString>("location");
|
||||
QTest::addColumn<QString>("dest");
|
||||
QTest::addColumn<QStringList>("args");
|
||||
QTest::addColumn<QString>("name");
|
||||
QTest::addColumn<QString>("iconLocation");
|
||||
QTest::addColumn<QByteArray>("result");
|
||||
|
||||
QTest::newRow("unix") << QDir::currentPath()
|
||||
<< "asdfDest"
|
||||
<< (QStringList() << "arg1" << "arg2")
|
||||
<< "asdf"
|
||||
<< QString()
|
||||
#if defined(Q_OS_LINUX)
|
||||
<< 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)
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "GZip.h"
|
||||
#include <random>
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "java/JavaVersion.h"
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "meta/Index.h"
|
||||
#include "meta/VersionList.h"
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "minecraft/GradleSpecifier.h"
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "minecraft/MojangVersionFormat.h"
|
||||
#include "minecraft/OneSixVersionFormat.h"
|
||||
@ -11,15 +10,14 @@ class LibraryTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
LibraryPtr readMojangJson(const char *file)
|
||||
LibraryPtr readMojangJson(const QString path)
|
||||
{
|
||||
auto path = QFINDTESTDATA(file);
|
||||
QFile jsonFile(path);
|
||||
jsonFile.open(QIODevice::ReadOnly);
|
||||
auto data = jsonFile.readAll();
|
||||
jsonFile.close();
|
||||
ProblemContainer problems;
|
||||
return MojangVersionFormat::libraryFromJson(problems, QJsonDocument::fromJson(data).object(), file);
|
||||
return MojangVersionFormat::libraryFromJson(problems, QJsonDocument::fromJson(data).object(), path);
|
||||
}
|
||||
// get absolute path to expected storage, assuming default cache prefix
|
||||
QStringList getStorage(QString relative)
|
||||
@ -32,7 +30,7 @@ slots:
|
||||
{
|
||||
cache.reset(new HttpMetaCache());
|
||||
cache->addBase("libraries", QDir("libraries").absolutePath());
|
||||
dataDir = QDir("data").absolutePath();
|
||||
dataDir = QDir(QFINDTESTDATA("testdata")).absolutePath();
|
||||
}
|
||||
void test_legacy()
|
||||
{
|
||||
@ -74,14 +72,14 @@ slots:
|
||||
QCOMPARE(test.isNative(), false);
|
||||
QStringList failedFiles;
|
||||
test.setHint("local");
|
||||
auto downloads = test.getDownloads(currentSystem, cache.get(), failedFiles, QString("data"));
|
||||
auto downloads = test.getDownloads(currentSystem, cache.get(), failedFiles, QFINDTESTDATA("testdata"));
|
||||
QCOMPARE(downloads.size(), 0);
|
||||
qDebug() << failedFiles;
|
||||
QCOMPARE(failedFiles.size(), 0);
|
||||
|
||||
QStringList jar, native, native32, native64;
|
||||
test.getApplicableFiles(currentSystem, jar, native, native32, native64, QString("data"));
|
||||
QCOMPARE(jar, {QFileInfo("data/codecwav-20101023.jar").absoluteFilePath()});
|
||||
test.getApplicableFiles(currentSystem, jar, native, native32, native64, QFINDTESTDATA("testdata"));
|
||||
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/codecwav-20101023.jar")).absoluteFilePath()});
|
||||
QCOMPARE(native, {});
|
||||
QCOMPARE(native32, {});
|
||||
QCOMPARE(native64, {});
|
||||
@ -167,20 +165,20 @@ slots:
|
||||
test.setRepositoryURL("file://foo/bar");
|
||||
{
|
||||
QStringList jar, native, native32, native64;
|
||||
test.getApplicableFiles(Os_Linux, jar, native, native32, native64, QString("data"));
|
||||
test.getApplicableFiles(Os_Linux, jar, native, native32, native64, QFINDTESTDATA("testdata"));
|
||||
QCOMPARE(jar, {});
|
||||
QCOMPARE(native, {});
|
||||
QCOMPARE(native32, {QFileInfo("data/testname-testversion-linux-32.jar").absoluteFilePath()});
|
||||
QCOMPARE(native64, {QFileInfo("data/testname-testversion-linux-64.jar").absoluteFilePath()});
|
||||
QCOMPARE(native32, {QFileInfo(QFINDTESTDATA("testdata/testname-testversion-linux-32.jar")).absoluteFilePath()});
|
||||
QCOMPARE(native64, {QFileInfo(QFINDTESTDATA("testdata") + "/testname-testversion-linux-64.jar").absoluteFilePath()});
|
||||
QStringList failedFiles;
|
||||
auto dls = test.getDownloads(Os_Linux, cache.get(), failedFiles, QString("data"));
|
||||
auto dls = test.getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata"));
|
||||
QCOMPARE(dls.size(), 0);
|
||||
QCOMPARE(failedFiles, {"data/testname-testversion-linux-64.jar"});
|
||||
QCOMPARE(failedFiles, {QFileInfo(QFINDTESTDATA("testdata") + "/testname-testversion-linux-64.jar").absoluteFilePath()});
|
||||
}
|
||||
}
|
||||
void test_onenine()
|
||||
{
|
||||
auto test = readMojangJson("data/lib-simple.json");
|
||||
auto test = readMojangJson(QFINDTESTDATA("testdata/lib-simple.json"));
|
||||
{
|
||||
QStringList jar, native, native32, native64;
|
||||
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QString());
|
||||
@ -199,41 +197,41 @@ slots:
|
||||
test->setHint("local");
|
||||
{
|
||||
QStringList jar, native, native32, native64;
|
||||
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QString("data"));
|
||||
QCOMPARE(jar, {QFileInfo("data/codecwav-20101023.jar").absoluteFilePath()});
|
||||
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QFINDTESTDATA("testdata"));
|
||||
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/codecwav-20101023.jar")).absoluteFilePath()});
|
||||
QCOMPARE(native, {});
|
||||
QCOMPARE(native32, {});
|
||||
QCOMPARE(native64, {});
|
||||
}
|
||||
{
|
||||
QStringList failedFiles;
|
||||
auto dls = test->getDownloads(Os_Linux, cache.get(), failedFiles, QString("data"));
|
||||
auto dls = test->getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata"));
|
||||
QCOMPARE(dls.size(), 0);
|
||||
QCOMPARE(failedFiles, {});
|
||||
}
|
||||
}
|
||||
void test_onenine_local_override()
|
||||
{
|
||||
auto test = readMojangJson("data/lib-simple.json");
|
||||
auto test = readMojangJson(QFINDTESTDATA("testdata/lib-simple.json"));
|
||||
test->setHint("local");
|
||||
{
|
||||
QStringList jar, native, native32, native64;
|
||||
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QString("data"));
|
||||
QCOMPARE(jar, {QFileInfo("data/codecwav-20101023.jar").absoluteFilePath()});
|
||||
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QFINDTESTDATA("testdata"));
|
||||
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/codecwav-20101023.jar")).absoluteFilePath()});
|
||||
QCOMPARE(native, {});
|
||||
QCOMPARE(native32, {});
|
||||
QCOMPARE(native64, {});
|
||||
}
|
||||
{
|
||||
QStringList failedFiles;
|
||||
auto dls = test->getDownloads(Os_Linux, cache.get(), failedFiles, QString("data"));
|
||||
auto dls = test->getDownloads(Os_Linux, cache.get(), failedFiles, QFINDTESTDATA("testdata"));
|
||||
QCOMPARE(dls.size(), 0);
|
||||
QCOMPARE(failedFiles, {});
|
||||
}
|
||||
}
|
||||
void test_onenine_native()
|
||||
{
|
||||
auto test = readMojangJson("data/lib-native.json");
|
||||
auto test = readMojangJson(QFINDTESTDATA("testdata/lib-native.json"));
|
||||
QStringList jar, native, native32, native64;
|
||||
test->getApplicableFiles(Os_OSX, jar, native, native32, native64, QString());
|
||||
QCOMPARE(jar, QStringList());
|
||||
@ -248,7 +246,7 @@ slots:
|
||||
}
|
||||
void test_onenine_native_arch()
|
||||
{
|
||||
auto test = readMojangJson("data/lib-native-arch.json");
|
||||
auto test = readMojangJson(QFINDTESTDATA("testdata/lib-native-arch.json"));
|
||||
QStringList jar, native, native32, native64;
|
||||
test->getApplicableFiles(Os_Windows, jar, native, native32, native64, QString());
|
||||
QCOMPARE(jar, {});
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include <QTest>
|
||||
#include <QDebug>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "minecraft/MojangVersionFormat.h"
|
||||
|
||||
@ -8,9 +7,8 @@ class MojangVersionFormatTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
static QJsonDocument readJson(const char *file)
|
||||
static QJsonDocument readJson(const QString path)
|
||||
{
|
||||
auto path = QFINDTESTDATA(file);
|
||||
QFile jsonFile(path);
|
||||
jsonFile.open(QIODevice::ReadOnly);
|
||||
auto data = jsonFile.readAll();
|
||||
@ -31,7 +29,7 @@ private
|
||||
slots:
|
||||
void test_Through_Simple()
|
||||
{
|
||||
QJsonDocument doc = readJson("data/1.9-simple.json");
|
||||
QJsonDocument doc = readJson(QFINDTESTDATA("testdata/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 +39,7 @@ slots:
|
||||
|
||||
void test_Through()
|
||||
{
|
||||
QJsonDocument doc = readJson("data/1.9.json");
|
||||
QJsonDocument doc = readJson(QFINDTESTDATA("testdata/1.9.json"));
|
||||
auto vfile = MojangVersionFormat::versionFileFromJson(doc, "1.9.json");
|
||||
auto doc2 = MojangVersionFormat::versionFileToJson(vfile);
|
||||
writeJson("1.9-passthorugh.json", doc2);
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "minecraft/ParseUtils.h"
|
||||
|
||||
@ -42,4 +41,3 @@ slots:
|
||||
QTEST_GUILESS_MAIN(ParseUtilsTest)
|
||||
|
||||
#include "ParseUtils_test.moc"
|
||||
|
||||
|
@ -35,7 +35,6 @@
|
||||
|
||||
#include <QTest>
|
||||
#include <QTemporaryDir>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "FileSystem.h"
|
||||
#include "minecraft/mod/ModFolderModel.h"
|
||||
@ -50,7 +49,7 @@ slots:
|
||||
void test_1178()
|
||||
{
|
||||
// source
|
||||
QString source = QFINDTESTDATA("data/test_folder");
|
||||
QString source = QFINDTESTDATA("testdata/test_folder");
|
||||
|
||||
// sanity check
|
||||
QVERIFY(!source.endsWith('/'));
|
||||
|
1
launcher/minecraft/mod/testdata/test_folder/assets/minecraft/textures/blah.txt
vendored
Normal file
1
launcher/minecraft/mod/testdata/test_folder/assets/minecraft/textures/blah.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
6
launcher/minecraft/mod/testdata/test_folder/pack.mcmeta
vendored
Normal file
6
launcher/minecraft/mod/testdata/test_folder/pack.mcmeta
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"pack": {
|
||||
"pack_format": 1,
|
||||
"description": "Some resource pack maybe"
|
||||
}
|
||||
}
|
1
launcher/minecraft/mod/testdata/test_folder/pack.nfo
vendored
Normal file
1
launcher/minecraft/mod/testdata/test_folder/pack.nfo
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include <QTest>
|
||||
|
||||
#include "Packwiz.h"
|
||||
#include "TestUtil.h"
|
||||
|
||||
class PackwizTest : public QObject {
|
||||
Q_OBJECT
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include <QTest>
|
||||
#include <QDebug>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "mojang/PackageManifest.h"
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "settings/INIFile.h"
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "Task.h"
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
#include <QTest>
|
||||
#include <QSignalSpy>
|
||||
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include "updater/GoUpdate.h"
|
||||
#include "updater/DownloadTask.h"
|
||||
#include "updater/UpdateChecker.h"
|
||||
@ -71,13 +69,23 @@ slots:
|
||||
|
||||
void test_parseVersionInfo_data()
|
||||
{
|
||||
QFile f1(QFINDTESTDATA("testdata/1.json"));
|
||||
f1.open(QFile::ReadOnly);
|
||||
QByteArray data1 = f1.readAll();
|
||||
f1.close();
|
||||
|
||||
QFile f2(QFINDTESTDATA("testdata/2.json"));
|
||||
f2.open(QFile::ReadOnly);
|
||||
QByteArray data2 = f2.readAll();
|
||||
f2.close();
|
||||
|
||||
QTest::addColumn<QByteArray>("data");
|
||||
QTest::addColumn<VersionFileList>("list");
|
||||
QTest::addColumn<QString>("error");
|
||||
QTest::addColumn<bool>("ret");
|
||||
|
||||
QTest::newRow("one")
|
||||
<< GET_TEST_FILE("data/1.json")
|
||||
<< data1
|
||||
<< (VersionFileList()
|
||||
<< VersionFileEntry{"fileOne",
|
||||
493,
|
||||
@ -93,7 +101,7 @@ slots:
|
||||
"f12df554b21e320be6471d7154130e70"})
|
||||
<< QString() << true;
|
||||
QTest::newRow("two")
|
||||
<< GET_TEST_FILE("data/2.json")
|
||||
<< data2
|
||||
<< (VersionFileList()
|
||||
<< VersionFileEntry{"fileOne",
|
||||
493,
|
||||
@ -133,42 +141,42 @@ slots:
|
||||
QTest::newRow("test 1")
|
||||
<< tempFolder << (VersionFileList()
|
||||
<< VersionFileEntry{
|
||||
"data/fileOne", 493,
|
||||
QFINDTESTDATA("testdata/fileOne"), 493,
|
||||
FileSourceList()
|
||||
<< FileSource(
|
||||
"http", "http://host/path/fileOne-1"),
|
||||
"9eb84090956c484e32cb6c08455a667b"}
|
||||
<< VersionFileEntry{
|
||||
"data/fileTwo", 644,
|
||||
QFINDTESTDATA("testdata/fileTwo"), 644,
|
||||
FileSourceList()
|
||||
<< FileSource(
|
||||
"http", "http://host/path/fileTwo-1"),
|
||||
"38f94f54fa3eb72b0ea836538c10b043"}
|
||||
<< VersionFileEntry{
|
||||
"data/fileThree", 420,
|
||||
QFINDTESTDATA("testdata/fileThree"), 420,
|
||||
FileSourceList()
|
||||
<< FileSource(
|
||||
"http", "http://host/path/fileThree-1"),
|
||||
"f12df554b21e320be6471d7154130e70"})
|
||||
<< (VersionFileList()
|
||||
<< VersionFileEntry{
|
||||
"data/fileOne", 493,
|
||||
QFINDTESTDATA("testdata/fileOne"), 493,
|
||||
FileSourceList()
|
||||
<< FileSource("http",
|
||||
"http://host/path/fileOne-2"),
|
||||
"42915a71277c9016668cce7b82c6b577"}
|
||||
<< VersionFileEntry{
|
||||
"data/fileTwo", 644,
|
||||
QFINDTESTDATA("testdata/fileTwo"), 644,
|
||||
FileSourceList()
|
||||
<< FileSource("http",
|
||||
"http://host/path/fileTwo-2"),
|
||||
"38f94f54fa3eb72b0ea836538c10b043"})
|
||||
<< (OperationList()
|
||||
<< Operation::DeleteOp("data/fileThree")
|
||||
<< Operation::DeleteOp(QFINDTESTDATA("testdata/fileThree"))
|
||||
<< Operation::CopyOp(
|
||||
FS::PathCombine(tempFolder,
|
||||
QString("data/fileOne").replace("/", "_")),
|
||||
"data/fileOne", 493));
|
||||
QFINDTESTDATA("data/fileOne").replace("/", "_")),
|
||||
QFINDTESTDATA("data/fileOne"), 493));
|
||||
}
|
||||
void test_processFileLists()
|
||||
{
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include <QTest>
|
||||
#include <QSignalSpy>
|
||||
|
||||
#include "TestUtil.h"
|
||||
#include "updater/UpdateChecker.h"
|
||||
|
||||
Q_DECLARE_METATYPE(UpdateChecker::ChannelListEntry)
|
||||
@ -50,36 +49,36 @@ slots:
|
||||
|
||||
QTest::newRow("garbage")
|
||||
<< QString()
|
||||
<< findTestDataUrl("data/garbageChannels.json")
|
||||
<< findTestDataUrl("testdata/garbageChannels.json")
|
||||
<< false
|
||||
<< false
|
||||
<< QList<UpdateChecker::ChannelListEntry>();
|
||||
QTest::newRow("errors")
|
||||
<< QString()
|
||||
<< findTestDataUrl("data/errorChannels.json")
|
||||
<< findTestDataUrl("testdata/errorChannels.json")
|
||||
<< false
|
||||
<< true
|
||||
<< QList<UpdateChecker::ChannelListEntry>();
|
||||
QTest::newRow("no channels")
|
||||
<< QString()
|
||||
<< findTestDataUrl("data/noChannels.json")
|
||||
<< findTestDataUrl("testdata/noChannels.json")
|
||||
<< false
|
||||
<< true
|
||||
<< QList<UpdateChecker::ChannelListEntry>();
|
||||
QTest::newRow("one channel")
|
||||
<< QString("develop")
|
||||
<< findTestDataUrl("data/oneChannel.json")
|
||||
<< findTestDataUrl("testdata/oneChannel.json")
|
||||
<< true
|
||||
<< true
|
||||
<< (QList<UpdateChecker::ChannelListEntry>() << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"});
|
||||
QTest::newRow("several channels")
|
||||
<< QString("develop")
|
||||
<< findTestDataUrl("data/channels.json")
|
||||
<< findTestDataUrl("testdata/channels.json")
|
||||
<< true
|
||||
<< true
|
||||
<< (QList<UpdateChecker::ChannelListEntry>()
|
||||
<< UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", findTestDataUrl("data")}
|
||||
<< UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", findTestDataUrl("data")}
|
||||
<< UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", findTestDataUrl("testdata")}
|
||||
<< UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", findTestDataUrl("testdata")}
|
||||
<< 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()
|
||||
@ -117,7 +116,7 @@ slots:
|
||||
void tst_UpdateChecking()
|
||||
{
|
||||
QString channel = "develop";
|
||||
QString channelUrl = findTestDataUrl("data/channels.json");
|
||||
QString channelUrl = findTestDataUrl("testdata/channels.json");
|
||||
int currentBuild = 2;
|
||||
|
||||
shared_qobject_ptr<QNetworkAccessManager> nam = new QNetworkAccessManager();
|
||||
@ -132,7 +131,7 @@ slots:
|
||||
QVERIFY(channelListLoadedSpy.wait());
|
||||
|
||||
qDebug() << "CWD:" << QDir::current().absolutePath();
|
||||
checker.m_channels[0].url = findTestDataUrl("data/");
|
||||
checker.m_channels[0].url = findTestDataUrl("testdata/");
|
||||
checker.checkForUpdate(channel, false);
|
||||
|
||||
QVERIFY(updateAvailableSpy.wait());
|
||||
|
@ -22,8 +22,4 @@ add_library(systeminfo STATIC ${systeminfo_SOURCES})
|
||||
target_link_libraries(systeminfo Qt5::Core Qt5::Gui Qt5::Network)
|
||||
target_include_directories(systeminfo PUBLIC include)
|
||||
|
||||
include (UnitTest)
|
||||
add_unit_test(sys
|
||||
SOURCES src/sys_test.cpp
|
||||
LIBS systeminfo
|
||||
)
|
||||
ecm_add_test(src/sys_test.cpp LINK_LIBRARIES systeminfo Qt5::Test TEST_NAME sys)
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include <QTest>
|
||||
#include "TestUtil.h"
|
||||
|
||||
#include <sys.h>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user