chore: reformat

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
This commit is contained in:
Sefa Eyeoglu
2023-08-14 18:16:53 +02:00
parent 779f70057b
commit 91ba4cf75e
603 changed files with 15840 additions and 16257 deletions

View File

@ -30,13 +30,13 @@
class DataPackParseTest : public QObject {
Q_OBJECT
private slots:
private slots:
void test_parseZIP()
{
QString source = QFINDTESTDATA("testdata/DataPackParse");
QString zip_dp = FS::PathCombine(source, "test_data_pack_boogaloo.zip");
DataPack pack { QFileInfo(zip_dp) };
DataPack pack{ QFileInfo(zip_dp) };
bool valid = DataPackUtils::processZIP(pack);
@ -50,7 +50,7 @@ class DataPackParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/DataPackParse");
QString folder_dp = FS::PathCombine(source, "test_folder");
DataPack pack { QFileInfo(folder_dp) };
DataPack pack{ QFileInfo(folder_dp) };
bool valid = DataPackUtils::processFolder(pack);
@ -64,7 +64,7 @@ class DataPackParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/DataPackParse");
QString folder_dp = FS::PathCombine(source, "another_test_folder");
DataPack pack { QFileInfo(folder_dp) };
DataPack pack{ QFileInfo(folder_dp) };
bool valid = DataPackUtils::process(pack);

View File

@ -1,7 +1,7 @@
#include <QTest>
#include <QDir>
#include <QTemporaryDir>
#include <QStandardPaths>
#include <QTemporaryDir>
#include <QTest>
#include <tasks/Task.h>
@ -11,16 +11,16 @@
// Snippet from https://github.com/gulrak/filesystem#using-it-as-single-file-header
#ifdef __APPLE__
#include <Availability.h> // for deployment target to support pre-catalina targets without std::fs
#endif // __APPLE__
#include <Availability.h> // for deployment target to support pre-catalina targets without std::fs
#endif // __APPLE__
#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || (defined(__cplusplus) && __cplusplus >= 201703L)) && defined(__has_include)
#if __has_include(<filesystem>) && (!defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500)
#define GHC_USE_STD_FS
#include <filesystem>
namespace fs = std::filesystem;
#endif // MacOS min version check
#endif // Other OSes version check
#endif // MacOS min version check
#endif // Other OSes version check
#ifndef GHC_USE_STD_FS
#include <ghc/filesystem.hpp>
@ -29,8 +29,6 @@ namespace fs = ghc::filesystem;
#include <pathmatcher/RegexpMatcher.h>
class LinkTask : public Task {
Q_OBJECT
@ -42,41 +40,30 @@ class LinkTask : public Task {
m_lnk->debug(true);
}
~LinkTask() {
delete m_lnk;
}
~LinkTask() { delete m_lnk; }
void matcher(const IPathMatcher *filter)
{
m_lnk->matcher(filter);
}
void matcher(const IPathMatcher* filter) { m_lnk->matcher(filter); }
void linkRecursively(bool recursive)
void linkRecursively(bool recursive)
{
m_lnk->linkRecursively(recursive);
m_linkRecursive = recursive;
}
void whitelist(bool b)
{
m_lnk->whitelist(b);
}
void whitelist(bool b) { m_lnk->whitelist(b); }
void setMaxDepth(int depth)
{
m_lnk->setMaxDepth(depth);
}
void setMaxDepth(int depth) { m_lnk->setMaxDepth(depth); }
private:
void executeTask() override
{
if(!(*m_lnk)()){
if (!(*m_lnk)()) {
#if defined Q_OS_WIN32
if (!m_useHard) {
qDebug() << "EXPECTED: Link failure, Windows requires permissions for symlinks";
qDebug() << "atempting to run with privelage";
connect(m_lnk, &FS::create_link::finishedPrivileged, this, [&](bool gotResults){
connect(m_lnk, &FS::create_link::finishedPrivileged, this, [&](bool gotResults) {
if (gotResults) {
emitSucceeded();
} else {
@ -87,32 +74,28 @@ class LinkTask : public Task {
m_lnk->runPrivileged();
} else {
qDebug() << "Link Failed!" << m_lnk->getOSError().value() << m_lnk->getOSError().message().c_str();
}
}
#else
qDebug() << "Link Failed!" << m_lnk->getOSError().value() << m_lnk->getOSError().message().c_str();
#endif
} else {
emitSucceeded();
}
}
FS::create_link *m_lnk;
FS::create_link* m_lnk;
[[maybe_unused]] bool m_useHard = false;
bool m_linkRecursive = true;
};
class FileSystemTest : public QObject
{
class FileSystemTest : public QObject {
Q_OBJECT
const QString bothSlash = "/foo/";
const QString trailingSlash = "foo/";
const QString leadingSlash = "/foo";
private
slots:
private slots:
void test_pathCombine()
{
QCOMPARE(QString("/foo/foo"), FS::PathCombine(bothSlash, bothSlash));
@ -130,12 +113,22 @@ slots:
QTest::addColumn<QString>("path1");
QTest::addColumn<QString>("path2");
QTest::newRow("qt 1") << "/abc/def/ghi/jkl" << "/abc/def" << "ghi/jkl";
QTest::newRow("qt 2") << "/abc/def/ghi/jkl" << "/abc/def/" << "ghi/jkl";
QTest::newRow("qt 1") << "/abc/def/ghi/jkl"
<< "/abc/def"
<< "ghi/jkl";
QTest::newRow("qt 2") << "/abc/def/ghi/jkl"
<< "/abc/def/"
<< "ghi/jkl";
#if defined(Q_OS_WIN)
QTest::newRow("win native, from C:") << "C:/abc" << "C:" << "abc";
QTest::newRow("win native 1") << "C:/abc/def/ghi/jkl" << "C:\\abc\\def" << "ghi\\jkl";
QTest::newRow("win native 2") << "C:/abc/def/ghi/jkl" << "C:\\abc\\def\\" << "ghi\\jkl";
QTest::newRow("win native, from C:") << "C:/abc"
<< "C:"
<< "abc";
QTest::newRow("win native 1") << "C:/abc/def/ghi/jkl"
<< "C:\\abc\\def"
<< "ghi\\jkl";
QTest::newRow("win native 2") << "C:/abc/def/ghi/jkl"
<< "C:\\abc\\def\\"
<< "ghi\\jkl";
#endif
}
@ -155,15 +148,39 @@ slots:
QTest::addColumn<QString>("path2");
QTest::addColumn<QString>("path3");
QTest::newRow("qt 1") << "/abc/def/ghi/jkl" << "/abc" << "def" << "ghi/jkl";
QTest::newRow("qt 2") << "/abc/def/ghi/jkl" << "/abc/" << "def" << "ghi/jkl";
QTest::newRow("qt 3") << "/abc/def/ghi/jkl" << "/abc" << "def/" << "ghi/jkl";
QTest::newRow("qt 4") << "/abc/def/ghi/jkl" << "/abc/" << "def/" << "ghi/jkl";
QTest::newRow("qt 1") << "/abc/def/ghi/jkl"
<< "/abc"
<< "def"
<< "ghi/jkl";
QTest::newRow("qt 2") << "/abc/def/ghi/jkl"
<< "/abc/"
<< "def"
<< "ghi/jkl";
QTest::newRow("qt 3") << "/abc/def/ghi/jkl"
<< "/abc"
<< "def/"
<< "ghi/jkl";
QTest::newRow("qt 4") << "/abc/def/ghi/jkl"
<< "/abc/"
<< "def/"
<< "ghi/jkl";
#if defined(Q_OS_WIN)
QTest::newRow("win 1") << "C:/abc/def/ghi/jkl" << "C:\\abc" << "def" << "ghi\\jkl";
QTest::newRow("win 2") << "C:/abc/def/ghi/jkl" << "C:\\abc\\" << "def" << "ghi\\jkl";
QTest::newRow("win 3") << "C:/abc/def/ghi/jkl" << "C:\\abc" << "def\\" << "ghi\\jkl";
QTest::newRow("win 4") << "C:/abc/def/ghi/jkl" << "C:\\abc\\" << "def" << "ghi\\jkl";
QTest::newRow("win 1") << "C:/abc/def/ghi/jkl"
<< "C:\\abc"
<< "def"
<< "ghi\\jkl";
QTest::newRow("win 2") << "C:/abc/def/ghi/jkl"
<< "C:\\abc\\"
<< "def"
<< "ghi\\jkl";
QTest::newRow("win 3") << "C:/abc/def/ghi/jkl"
<< "C:\\abc"
<< "def\\"
<< "ghi\\jkl";
QTest::newRow("win 4") << "C:/abc/def/ghi/jkl"
<< "C:\\abc\\"
<< "def"
<< "ghi\\jkl";
#endif
}
@ -180,8 +197,7 @@ slots:
void test_copy()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -192,8 +208,7 @@ slots:
FS::copy c(folder, target_dir.path());
c();
for(auto entry: target_dir.entryList())
{
for (auto entry : target_dir.entryList()) {
qDebug() << entry;
}
QVERIFY(target_dir.entryList().contains("pack.mcmeta"));
@ -213,8 +228,7 @@ slots:
void test_copy_with_blacklist()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -227,8 +241,7 @@ slots:
c.matcher(&re);
c();
for(auto entry: target_dir.entryList())
{
for (auto entry : target_dir.entryList()) {
qDebug() << entry;
}
QVERIFY(!target_dir.entryList().contains("pack.mcmeta"));
@ -248,8 +261,7 @@ slots:
void test_copy_with_whitelist()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -263,8 +275,7 @@ slots:
c.whitelist(true);
c();
for(auto entry: target_dir.entryList())
{
for (auto entry : target_dir.entryList()) {
qDebug() << entry;
}
QVERIFY(target_dir.entryList().contains("pack.mcmeta"));
@ -284,8 +295,7 @@ slots:
void test_copy_with_dot_hidden()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -298,7 +308,7 @@ slots:
auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden;
for (auto entry: target_dir.entryList(filter)) {
for (auto entry : target_dir.entryList(filter)) {
qDebug() << entry;
}
@ -335,7 +345,7 @@ slots:
auto filter = QDir::Filter::Files;
for (auto entry: target_dir.entryList(filter)) {
for (auto entry : target_dir.entryList(filter)) {
qDebug() << entry;
}
@ -348,12 +358,10 @@ slots:
QCOMPARE(FS::getDesktopDir(), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
}
void test_link()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -364,17 +372,13 @@ slots:
LinkTask lnk_tsk(folder, target_dir.path());
lnk_tsk.linkRecursively(false);
QObject::connect(&lnk_tsk, &Task::finished, [&]{
QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
QObject::connect(&lnk_tsk, &Task::finished,
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); });
lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() {
return lnk_tsk.isFinished();
}, 100000), "Task didn't finish as it should.");
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
for(auto entry: target_dir.entryList())
{
for (auto entry : target_dir.entryList()) {
qDebug() << entry;
QFileInfo entry_lnk_info(target_dir.filePath(entry));
if (!entry_lnk_info.isDir())
@ -402,10 +406,9 @@ slots:
void test_hard_link()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
// use working dir to prevent makeing a hard link to a tmpfs or across devices
QTemporaryDir tempDir("./tmp");
QTemporaryDir tempDir("./tmp");
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -415,23 +418,20 @@ slots:
FS::create_link lnk(folder, target_dir.path());
lnk.useHardLinks(true);
lnk.debug(true);
if(!lnk()){
if (!lnk()) {
qDebug() << "Link Failed!" << lnk.getOSError().value() << lnk.getOSError().message().c_str();
}
for(auto entry: target_dir.entryList())
{
for (auto entry : target_dir.entryList()) {
qDebug() << entry;
QFileInfo entry_lnk_info(target_dir.filePath(entry));
QVERIFY(!entry_lnk_info.isSymLink());
QFileInfo entry_orig_info(QDir(folder).filePath(entry));
if (!entry_lnk_info.isDir()) {
qDebug() << "hard link equivalency?" << entry_lnk_info.absoluteFilePath() << "vs" << entry_orig_info.absoluteFilePath();
QVERIFY(fs::equivalent(
fs::path(StringUtils::toStdString(entry_lnk_info.absoluteFilePath())),
fs::path(StringUtils::toStdString(entry_orig_info.absoluteFilePath()))
));
}
QVERIFY(fs::equivalent(fs::path(StringUtils::toStdString(entry_lnk_info.absoluteFilePath())),
fs::path(StringUtils::toStdString(entry_orig_info.absoluteFilePath()))));
}
}
QFileInfo lnk_info(target_dir.path());
@ -455,8 +455,7 @@ slots:
void test_link_with_blacklist()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -469,18 +468,13 @@ slots:
RegexpMatcher re("[.]?mcmeta");
lnk_tsk.matcher(&re);
lnk_tsk.linkRecursively(true);
QObject::connect(&lnk_tsk, &Task::finished, [&]{
QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
QObject::connect(&lnk_tsk, &Task::finished,
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); });
lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() {
return lnk_tsk.isFinished();
}, 100000), "Task didn't finish as it should.");
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
for(auto entry: target_dir.entryList())
{
for (auto entry : target_dir.entryList()) {
qDebug() << entry;
QFileInfo entry_lnk_info(target_dir.filePath(entry));
if (!entry_lnk_info.isDir())
@ -507,8 +501,7 @@ slots:
void test_link_with_whitelist()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -522,17 +515,13 @@ slots:
lnk_tsk.matcher(&re);
lnk_tsk.linkRecursively(true);
lnk_tsk.whitelist(true);
QObject::connect(&lnk_tsk, &Task::finished, [&]{
QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
QObject::connect(&lnk_tsk, &Task::finished,
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); });
lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() {
return lnk_tsk.isFinished();
}, 100000), "Task didn't finish as it should.");
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
for(auto entry: target_dir.entryList())
{
for (auto entry : target_dir.entryList()) {
qDebug() << entry;
QFileInfo entry_lnk_info(target_dir.filePath(entry));
if (!entry_lnk_info.isDir())
@ -559,8 +548,7 @@ slots:
void test_link_with_dot_hidden()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -571,18 +559,15 @@ slots:
LinkTask lnk_tsk(folder, target_dir.path());
lnk_tsk.linkRecursively(true);
QObject::connect(&lnk_tsk, &Task::finished, [&]{
QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
QObject::connect(&lnk_tsk, &Task::finished,
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); });
lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() {
return lnk_tsk.isFinished();
}, 100000), "Task didn't finish as it should.");
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden;
for (auto entry: target_dir.entryList(filter)) {
for (auto entry : target_dir.entryList(filter)) {
qDebug() << entry;
QFileInfo entry_lnk_info(target_dir.filePath(entry));
if (!entry_lnk_info.isDir())
@ -621,19 +606,16 @@ slots:
qDebug() << tempDir.path();
qDebug() << target_dir.path();
LinkTask lnk_tsk(file, target_dir.filePath("pack.mcmeta"));
QObject::connect(&lnk_tsk, &Task::finished, [&]{
QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
LinkTask lnk_tsk(file, target_dir.filePath("pack.mcmeta"));
QObject::connect(&lnk_tsk, &Task::finished,
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); });
lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() {
return lnk_tsk.isFinished();
}, 100000), "Task didn't finish as it should.");
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
auto filter = QDir::Filter::Files;
for (auto entry: target_dir.entryList(filter)) {
for (auto entry : target_dir.entryList(filter)) {
qDebug() << entry;
}
@ -648,8 +630,7 @@ slots:
void test_link_with_max_depth()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -661,22 +642,19 @@ slots:
LinkTask lnk_tsk(folder, target_dir.path());
lnk_tsk.linkRecursively(true);
lnk_tsk.setMaxDepth(0);
QObject::connect(&lnk_tsk, &Task::finished, [&]{
QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
QObject::connect(&lnk_tsk, &Task::finished,
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); });
lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() {
return lnk_tsk.isFinished();
}, 100000), "Task didn't finish as it should.");
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
QVERIFY(!QFileInfo(target_dir.path()).isSymLink());
auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden;
for(auto entry: target_dir.entryList(filter))
{
for (auto entry : target_dir.entryList(filter)) {
qDebug() << entry;
if (entry == "." || entry == "..") continue;
if (entry == "." || entry == "..")
continue;
QFileInfo entry_lnk_info(target_dir.filePath(entry));
QVERIFY(entry_lnk_info.isSymLink());
}
@ -687,8 +665,6 @@ slots:
QVERIFY(target_dir.entryList().contains("pack.mcmeta"));
QVERIFY(target_dir.entryList().contains("assets"));
};
// first try variant without trailing /
@ -704,8 +680,7 @@ slots:
void test_link_with_no_max_depth()
{
QString folder = QFINDTESTDATA("testdata/FileSystem/test_folder");
auto f = [&folder]()
{
auto f = [&folder]() {
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
@ -717,24 +692,19 @@ slots:
LinkTask lnk_tsk(folder, target_dir.path());
lnk_tsk.linkRecursively(true);
lnk_tsk.setMaxDepth(-1);
QObject::connect(&lnk_tsk, &Task::finished, [&]{
QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
QObject::connect(&lnk_tsk, &Task::finished,
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); });
lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() {
return lnk_tsk.isFinished();
}, 100000), "Task didn't finish as it should.");
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
std::function<void(QString)> verify_check = [&](QString check_path) {
QDir check_dir(check_path);
auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden;
for(auto entry: check_dir.entryList(filter))
{
for (auto entry : check_dir.entryList(filter)) {
QFileInfo entry_lnk_info(check_dir.filePath(entry));
qDebug() << entry << check_dir.filePath(entry);
if (!entry_lnk_info.isDir()){
if (!entry_lnk_info.isDir()) {
QVERIFY(entry_lnk_info.isSymLink());
} else if (entry != "." && entry != "..") {
qDebug() << "Decending tree to verify symlinks:" << check_dir.filePath(entry);
@ -742,9 +712,8 @@ slots:
}
}
};
verify_check(target_dir.path());
QFileInfo lnk_info(target_dir.path());
QVERIFY(lnk_info.exists());
@ -763,7 +732,8 @@ slots:
f();
}
void test_path_depth() {
void test_path_depth()
{
QCOMPARE(FS::pathDepth(""), 0);
QCOMPARE(FS::pathDepth("."), 0);
QCOMPARE(FS::pathDepth("foo.txt"), 0);
@ -777,7 +747,8 @@ slots:
QCOMPARE(FS::pathDepth("/baz/../bar/foo.txt"), 1);
}
void test_path_trunc() {
void test_path_trunc()
{
QCOMPARE(FS::pathTruncate("", 0), QDir::toNativeSeparators(""));
QCOMPARE(FS::pathTruncate("foo.txt", 0), QDir::toNativeSeparators(""));
QCOMPARE(FS::pathTruncate("foo.txt", 1), QDir::toNativeSeparators(""));

View File

@ -3,18 +3,16 @@
#include <GZip.h>
#include <random>
void fib(int &prev, int &cur)
void fib(int& prev, int& cur)
{
auto ret = prev + cur;
prev = cur;
cur = ret;
}
class GZipTest : public QObject
{
class GZipTest : public QObject {
Q_OBJECT
private
slots:
private slots:
void test_Through()
{
@ -27,8 +25,7 @@ slots:
std::uniform_int_distribution<uint16_t> idis(0, std::numeric_limits<uint8_t>::max());
// initialize random buffer
for(int i = 0; i < size; i++)
{
for (int i = 0; i < size; i++) {
random.append(static_cast<char>(idis(eng)));
}
@ -37,8 +34,7 @@ slots:
int cur = 1;
// test if fibonacci long random buffers pass through GZip
do
{
do {
QByteArray copy = random;
copy.resize(cur);
compressed.clear();

View File

@ -2,19 +2,11 @@
#include <minecraft/GradleSpecifier.h>
class GradleSpecifierTest : public QObject
{
class GradleSpecifierTest : public QObject {
Q_OBJECT
private
slots:
void initTestCase()
{
}
void cleanupTestCase()
{
}
private slots:
void initTestCase() {}
void cleanupTestCase() {}
void test_Positive_data()
{
@ -40,8 +32,10 @@ slots:
QTest::addColumn<QString>("spec");
QTest::addColumn<QString>("expected");
QTest::newRow("3 parter") << "group.id:artifact:1.0" << "group/id/artifact/1.0/artifact-1.0.jar";
QTest::newRow("doom") << "id.software:doom:1.666:demons@wad" << "id/software/doom/1.666/doom-1.666-demons.wad";
QTest::newRow("3 parter") << "group.id:artifact:1.0"
<< "group/id/artifact/1.0/artifact-1.0.jar";
QTest::newRow("doom") << "id.software:doom:1.666:demons@wad"
<< "id/software/doom/1.666/doom-1.666-demons.wad";
}
void test_Path()
{

View File

@ -3,14 +3,13 @@
#include <meta/Index.h>
#include <meta/VersionList.h>
class IndexTest : public QObject
{
class IndexTest : public QObject {
Q_OBJECT
private
slots:
private slots:
void test_hasUid_and_getList()
{
Meta::Index windex({std::make_shared<Meta::VersionList>("list1"), std::make_shared<Meta::VersionList>("list2"), std::make_shared<Meta::VersionList>("list3")});
Meta::Index windex({ std::make_shared<Meta::VersionList>("list1"), std::make_shared<Meta::VersionList>("list2"),
std::make_shared<Meta::VersionList>("list3") });
QVERIFY(windex.hasUid("list1"));
QVERIFY(!windex.hasUid("asdf"));
QVERIFY(windex.get("list2") != nullptr);
@ -20,13 +19,18 @@ slots:
void test_merge()
{
Meta::Index windex({std::make_shared<Meta::VersionList>("list1"), std::make_shared<Meta::VersionList>("list2"), std::make_shared<Meta::VersionList>("list3")});
Meta::Index windex({ std::make_shared<Meta::VersionList>("list1"), std::make_shared<Meta::VersionList>("list2"),
std::make_shared<Meta::VersionList>("list3") });
QCOMPARE(windex.lists().size(), 3);
windex.merge(std::shared_ptr<Meta::Index>(new Meta::Index({std::make_shared<Meta::VersionList>("list1"), std::make_shared<Meta::VersionList>("list2"), std::make_shared<Meta::VersionList>("list3")})));
windex.merge(std::shared_ptr<Meta::Index>(
new Meta::Index({ std::make_shared<Meta::VersionList>("list1"), std::make_shared<Meta::VersionList>("list2"),
std::make_shared<Meta::VersionList>("list3") })));
QCOMPARE(windex.lists().size(), 3);
windex.merge(std::shared_ptr<Meta::Index>(new Meta::Index({std::make_shared<Meta::VersionList>("list4"), std::make_shared<Meta::VersionList>("list2"), std::make_shared<Meta::VersionList>("list5")})));
windex.merge(std::shared_ptr<Meta::Index>(
new Meta::Index({ std::make_shared<Meta::VersionList>("list4"), std::make_shared<Meta::VersionList>("list2"),
std::make_shared<Meta::VersionList>("list5") })));
QCOMPARE(windex.lists().size(), 5);
windex.merge(std::shared_ptr<Meta::Index>(new Meta::Index({std::make_shared<Meta::VersionList>("list6")})));
windex.merge(std::shared_ptr<Meta::Index>(new Meta::Index({ std::make_shared<Meta::VersionList>("list6") })));
QCOMPARE(windex.lists().size(), 6);
}
};

View File

@ -2,11 +2,9 @@
#include <java/JavaVersion.h>
class JavaVersionTest : public QObject
{
class JavaVersionTest : public QObject {
Q_OBJECT
private
slots:
private slots:
void test_Parse_data()
{
QTest::addColumn<QString>("string");
@ -50,33 +48,54 @@ slots:
QTest::addColumn<bool>("bigger");
// old format and new format equivalence
QTest::newRow("1.6.0_33 == 6.0.33") << "1.6.0_33" << "6.0.33" << false << true << false;
QTest::newRow("1.6.0_33 == 6.0.33") << "1.6.0_33"
<< "6.0.33" << false << true << false;
// old format major version
QTest::newRow("1.5.0_33 < 1.6.0_33") << "1.5.0_33" << "1.6.0_33" << true << false << false;
QTest::newRow("1.5.0_33 < 1.6.0_33") << "1.5.0_33"
<< "1.6.0_33" << true << false << false;
// new format - first release vs first security patch
QTest::newRow("9 < 9.0.1") << "9" << "9.0.1" << true << false << false;
QTest::newRow("9.0.1 > 9") << "9.0.1" << "9" << false << false << true;
QTest::newRow("9 < 9.0.1") << "9"
<< "9.0.1" << true << false << false;
QTest::newRow("9.0.1 > 9") << "9.0.1"
<< "9" << false << false << true;
// new format - first minor vs first release/security patch
QTest::newRow("9.1 > 9.0.1") << "9.1" << "9.0.1" << false << false << true;
QTest::newRow("9.0.1 < 9.1") << "9.0.1" << "9.1" << true << false << false;
QTest::newRow("9.1 > 9") << "9.1" << "9" << false << false << true;
QTest::newRow("9 > 9.1") << "9" << "9.1" << true << false << false;
QTest::newRow("9.1 > 9.0.1") << "9.1"
<< "9.0.1" << false << false << true;
QTest::newRow("9.0.1 < 9.1") << "9.0.1"
<< "9.1" << true << false << false;
QTest::newRow("9.1 > 9") << "9.1"
<< "9" << false << false << true;
QTest::newRow("9 > 9.1") << "9"
<< "9.1" << true << false << false;
// new format - omitted numbers
QTest::newRow("9 == 9.0") << "9" << "9.0" << false << true << false;
QTest::newRow("9 == 9.0.0") << "9" << "9.0.0" << false << true << false;
QTest::newRow("9.0 == 9.0.0") << "9.0" << "9.0.0" << false << true << false;
QTest::newRow("9 == 9.0") << "9"
<< "9.0" << false << true << false;
QTest::newRow("9 == 9.0.0") << "9"
<< "9.0.0" << false << true << false;
QTest::newRow("9.0 == 9.0.0") << "9.0"
<< "9.0.0" << false << true << false;
// early access and prereleases compared to final release
QTest::newRow("9-ea < 9") << "9-ea" << "9" << true << false << false;
QTest::newRow("9 < 9.0.1-ea") << "9" << "9.0.1-ea" << true << false << false;
QTest::newRow("9.0.1-ea > 9") << "9.0.1-ea" << "9" << false << false << true;
QTest::newRow("9-ea < 9") << "9-ea"
<< "9" << true << false << false;
QTest::newRow("9 < 9.0.1-ea") << "9"
<< "9.0.1-ea" << true << false << false;
QTest::newRow("9.0.1-ea > 9") << "9.0.1-ea"
<< "9" << false << false << true;
// prerelease difference only testing
QTest::newRow("9-1 == 9-1") << "9-1" << "9-1" << false << true << false;
QTest::newRow("9-1 < 9-2") << "9-1" << "9-2" << true << false << false;
QTest::newRow("9-5 < 9-20") << "9-5" << "9-20" << true << false << false;
QTest::newRow("9-rc1 < 9-rc2") << "9-rc1" << "9-rc2" << true << false << false;
QTest::newRow("9-rc5 < 9-rc20") << "9-rc5" << "9-rc20" << true << false << false;
QTest::newRow("9-rc < 9-rc2") << "9-rc" << "9-rc2" << true << false << false;
QTest::newRow("9-ea < 9-rc") << "9-ea" << "9-rc" << true << false << false;
QTest::newRow("9-1 == 9-1") << "9-1"
<< "9-1" << false << true << false;
QTest::newRow("9-1 < 9-2") << "9-1"
<< "9-2" << true << false << false;
QTest::newRow("9-5 < 9-20") << "9-5"
<< "9-20" << true << false << false;
QTest::newRow("9-rc1 < 9-rc2") << "9-rc1"
<< "9-rc2" << true << false << false;
QTest::newRow("9-rc5 < 9-rc20") << "9-rc5"
<< "9-rc20" << true << false << false;
QTest::newRow("9-rc < 9-rc2") << "9-rc"
<< "9-rc2" << true << false << false;
QTest::newRow("9-ea < 9-rc") << "9-ea"
<< "9-rc" << true << false << false;
}
void test_Sort()
{

View File

@ -35,17 +35,16 @@
#include <QTest>
#include <minecraft/MojangVersionFormat.h>
#include <minecraft/OneSixVersionFormat.h>
#include <minecraft/Library.h>
#include <net/HttpMetaCache.h>
#include <FileSystem.h>
#include <RuntimeContext.h>
#include <minecraft/Library.h>
#include <minecraft/MojangVersionFormat.h>
#include <minecraft/OneSixVersionFormat.h>
#include <net/HttpMetaCache.h>
class LibraryTest : public QObject
{
class LibraryTest : public QObject {
Q_OBJECT
private:
private:
LibraryPtr readMojangJson(const QString path)
{
QFile jsonFile(path);
@ -56,20 +55,17 @@ private:
return MojangVersionFormat::libraryFromJson(problems, QJsonDocument::fromJson(data).object(), path);
}
// get absolute path to expected storage, assuming default cache prefix
QStringList getStorage(QString relative)
{
return {FS::PathCombine(cache->getBasePath("libraries"), relative)};
}
QStringList getStorage(QString relative) { return { FS::PathCombine(cache->getBasePath("libraries"), relative) }; }
RuntimeContext dummyContext(QString system = "linux", QString arch = "64", QString realArch = "amd64") {
RuntimeContext dummyContext(QString system = "linux", QString arch = "64", QString realArch = "amd64")
{
RuntimeContext r;
r.javaArchitecture = arch;
r.javaRealArchitecture = realArch;
r.system = system;
return r;
}
private
slots:
private slots:
void initTestCase()
{
cache.reset(new HttpMetaCache());
@ -111,7 +107,7 @@ slots:
test.setHint("local");
auto downloads = test.getDownloads(r, cache.get(), failedFiles, QString());
QCOMPARE(downloads.size(), 0);
QCOMPARE(failedFiles, {"testname-testversion.jar"});
QCOMPARE(failedFiles, { "testname-testversion.jar" });
}
void test_legacy_url_local_override()
{
@ -127,7 +123,7 @@ slots:
QStringList jar, native, native32, native64;
test.getApplicableFiles(r, jar, native, native32, native64, QFINDTESTDATA("testdata/Library"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath()});
QCOMPARE(jar, { QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath() });
QCOMPARE(native, {});
QCOMPARE(native32, {});
QCOMPARE(native64, {});
@ -158,9 +154,9 @@ slots:
{
RuntimeContext r = dummyContext();
Library test("test.package:testname:testversion");
test.m_nativeClassifiers["linux"]="linux-${arch}";
test.m_nativeClassifiers["osx"]="osx-${arch}";
test.m_nativeClassifiers["windows"]="windows-${arch}";
test.m_nativeClassifiers["linux"] = "linux-${arch}";
test.m_nativeClassifiers["osx"] = "osx-${arch}";
test.m_nativeClassifiers["windows"] = "windows-${arch}";
QCOMPARE(test.isNative(), true);
test.setRepositoryURL("file://foo/bar");
{
@ -212,7 +208,7 @@ slots:
{
RuntimeContext r = dummyContext();
Library test("test.package:testname:testversion");
test.m_nativeClassifiers["linux"]="linux-${arch}";
test.m_nativeClassifiers["linux"] = "linux-${arch}";
test.setHint("local");
QCOMPARE(test.isNative(), true);
test.setRepositoryURL("file://foo/bar");
@ -221,12 +217,13 @@ slots:
test.getApplicableFiles(r, jar, native, native32, native64, QFINDTESTDATA("testdata/Library"));
QCOMPARE(jar, {});
QCOMPARE(native, {});
QCOMPARE(native32, {QFileInfo(QFINDTESTDATA("testdata/Library/testname-testversion-linux-32.jar")).absoluteFilePath()});
QCOMPARE(native64, {QFileInfo(QFINDTESTDATA("testdata/Library") + "/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(r, cache.get(), failedFiles, QFINDTESTDATA("testdata/Library"));
QCOMPARE(dls.size(), 0);
QCOMPARE(failedFiles, {QFileInfo(QFINDTESTDATA("testdata/Library") + "/testname-testversion-linux-64.jar").absoluteFilePath()});
QCOMPARE(failedFiles,
{ QFileInfo(QFINDTESTDATA("testdata/Library") + "/testname-testversion-linux-64.jar").absoluteFilePath() });
}
}
void test_onenine()
@ -254,7 +251,7 @@ slots:
{
QStringList jar, native, native32, native64;
test->getApplicableFiles(r, jar, native, native32, native64, QFINDTESTDATA("testdata/Library"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath()});
QCOMPARE(jar, { QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath() });
QCOMPARE(native, {});
QCOMPARE(native32, {});
QCOMPARE(native64, {});
@ -275,7 +272,7 @@ slots:
{
QStringList jar, native, native32, native64;
test->getApplicableFiles(r, jar, native, native32, native64, QFINDTESTDATA("testdata/Library"));
QCOMPARE(jar, {QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath()});
QCOMPARE(jar, { QFileInfo(QFINDTESTDATA("testdata/Library/codecwav-20101023.jar")).absoluteFilePath() });
QCOMPARE(native, {});
QCOMPARE(native32, {});
QCOMPARE(native64, {});
@ -295,14 +292,16 @@ slots:
QStringList jar, native, native32, native64;
test->getApplicableFiles(r, jar, native, native32, native64, QString());
QCOMPARE(jar, QStringList());
QCOMPARE(native, getStorage("org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"));
QCOMPARE(native,
getStorage("org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"));
QCOMPARE(native32, {});
QCOMPARE(native64, {});
QStringList failedFiles;
auto dls = test->getDownloads(r, cache.get(), failedFiles, QString());
QCOMPARE(dls.size(), 1);
QCOMPARE(failedFiles, {});
QCOMPARE(dls[0]->m_url, QUrl("https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"));
QCOMPARE(dls[0]->m_url, QUrl("https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/"
"lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"));
}
void test_onenine_native_arch()
{
@ -318,10 +317,13 @@ slots:
auto dls = test->getDownloads(r, cache.get(), failedFiles, QString());
QCOMPARE(dls.size(), 2);
QCOMPARE(failedFiles, {});
QCOMPARE(dls[0]->m_url, QUrl("https://libraries.minecraft.net/tv/twitch/twitch-platform/5.16/twitch-platform-5.16-natives-windows-32.jar"));
QCOMPARE(dls[1]->m_url, QUrl("https://libraries.minecraft.net/tv/twitch/twitch-platform/5.16/twitch-platform-5.16-natives-windows-64.jar"));
QCOMPARE(dls[0]->m_url,
QUrl("https://libraries.minecraft.net/tv/twitch/twitch-platform/5.16/twitch-platform-5.16-natives-windows-32.jar"));
QCOMPARE(dls[1]->m_url,
QUrl("https://libraries.minecraft.net/tv/twitch/twitch-platform/5.16/twitch-platform-5.16-natives-windows-64.jar"));
}
private:
private:
std::unique_ptr<HttpMetaCache> cache;
QString dataDir;
};

View File

@ -1,10 +1,9 @@
#include <QTest>
#include <QDebug>
#include <QTest>
#include <minecraft/MojangVersionFormat.h>
class MojangVersionFormatTest : public QObject
{
class MojangVersionFormatTest : public QObject {
Q_OBJECT
static QJsonDocument readJson(const QString path)
@ -15,7 +14,7 @@ class MojangVersionFormatTest : public QObject
jsonFile.close();
return QJsonDocument::fromJson(data);
}
static void writeJson(const char *file, QJsonDocument doc)
static void writeJson(const char* file, QJsonDocument doc)
{
QFile jsonFile(file);
jsonFile.open(QIODevice::WriteOnly | QIODevice::Text);
@ -25,8 +24,7 @@ class MojangVersionFormatTest : public QObject
jsonFile.close();
}
private
slots:
private slots:
void test_Through_Simple()
{
QJsonDocument doc = readJson(QFINDTESTDATA("testdata/MojangVersionFormat/1.9-simple.json"));
@ -50,4 +48,3 @@ slots:
QTEST_GUILESS_MAIN(MojangVersionFormatTest)
#include "MojangVersionFormat_test.moc"

View File

@ -26,9 +26,9 @@ class PackwizTest : public QObject {
Q_OBJECT
private slots:
// Files taken from https://github.com/packwiz/packwiz-example-pack
void loadFromFile_Modrinth()
{
// Files taken from https://github.com/packwiz/packwiz-example-pack
void loadFromFile_Modrinth()
{
QString source = QFINDTESTDATA("testdata/Packwiz");
QDir index_dir(source);
@ -43,15 +43,17 @@ class PackwizTest : public QObject {
QCOMPARE(metadata.name, "Borderless Mining");
QCOMPARE(metadata.filename, "borderless-mining-1.1.1+1.18.jar");
QCOMPARE(metadata.side, "client");
QCOMPARE(metadata.url, QUrl("https://cdn.modrinth.com/data/kYq5qkSL/versions/1.1.1+1.18/borderless-mining-1.1.1+1.18.jar"));
QCOMPARE(metadata.hash_format, "sha512");
QCOMPARE(metadata.hash, "c8fe6e15ddea32668822dddb26e1851e5f03834be4bcb2eff9c0da7fdc086a9b6cead78e31a44d3bc66335cba11144ee0337c6d5346f1ba63623064499b3188d");
QCOMPARE(metadata.hash,
"c8fe6e15ddea32668822dddb26e1851e5f03834be4bcb2eff9c0da7fdc086a9b6cead78e31a44d3bc66335cba11144ee0337c6d5346f1ba6362306449"
"9b3188d");
QCOMPARE(metadata.provider, ModPlatform::ResourceProvider::MODRINTH);
QCOMPARE(metadata.version(), "ug2qKTPR");
QCOMPARE(metadata.mod_id(), "kYq5qkSL");
}
}
void loadFromFile_Curseforge()
{
@ -71,7 +73,7 @@ class PackwizTest : public QObject {
QCOMPARE(metadata.name, "Screenshot to Clipboard (Fabric)");
QCOMPARE(metadata.filename, "screenshot-to-clipboard-1.0.7-fabric.jar");
QCOMPARE(metadata.side, "both");
QCOMPARE(metadata.url, QUrl("https://edge.forgecdn.net/files/3509/43/screenshot-to-clipboard-1.0.7-fabric.jar"));
QCOMPARE(metadata.hash_format, "murmur2");
QCOMPARE(metadata.hash, "1781245820");

View File

@ -2,27 +2,16 @@
#include <minecraft/ParseUtils.h>
class ParseUtilsTest : public QObject
{
class ParseUtilsTest : public QObject {
Q_OBJECT
private
slots:
private slots:
void test_Through_data()
{
QTest::addColumn<QString>("timestamp");
const char * timestamps[] =
{
"2016-02-29T13:49:54+01:00",
"2016-02-26T15:21:11+00:01",
"2016-02-24T15:52:36+01:13",
"2016-02-18T17:41:00+00:00",
"2016-02-17T15:23:19+00:00",
"2016-02-16T15:22:39+09:22",
"2016-02-10T15:06:41+00:00",
"2016-02-04T15:28:02-05:33"
};
for(unsigned i = 0; i < (sizeof(timestamps) / sizeof(const char *)); i++)
{
const char* timestamps[] = { "2016-02-29T13:49:54+01:00", "2016-02-26T15:21:11+00:01", "2016-02-24T15:52:36+01:13",
"2016-02-18T17:41:00+00:00", "2016-02-17T15:23:19+00:00", "2016-02-16T15:22:39+09:22",
"2016-02-10T15:06:41+00:00", "2016-02-04T15:28:02-05:33" };
for (unsigned i = 0; i < (sizeof(timestamps) / sizeof(const char*)); i++) {
QTest::newRow(timestamps[i]) << QString(timestamps[i]);
}
}
@ -35,7 +24,6 @@ slots:
QCOMPARE(time_serialized, timestamp);
}
};
QTEST_GUILESS_MAIN(ParseUtilsTest)

View File

@ -1,40 +1,40 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
* PolyMC - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <QTest>
#include <QTemporaryDir>
#include <QTest>
#include <QTimer>
#include "BaseInstance.h"
@ -61,12 +61,10 @@
\
disconnect(&model, nullptr, &loop, nullptr);
class ResourceFolderModelTest : public QObject
{
class ResourceFolderModelTest : public QObject {
Q_OBJECT
private
slots:
private slots:
// test for GH-1178 - install a folder with files to a mod list
void test_1178()
{
@ -76,8 +74,7 @@ slots:
// sanity check
QVERIFY(!source.endsWith('/'));
auto verify = [](QString path)
{
auto verify = [](QString path) {
QDir target_dir(FS::PathCombine(path, "test_folder"));
QVERIFY(target_dir.entryList().contains("pack.mcmeta"));
QVERIFY(target_dir.entryList().contains("assets"));
@ -161,23 +158,17 @@ slots:
QCOMPARE(model.size(), 0);
{
EXEC_UPDATE_TASK(model.installResource(file_mod), QVERIFY)
}
{ EXEC_UPDATE_TASK(model.installResource(file_mod), QVERIFY) }
QCOMPARE(model.size(), 1);
qDebug() << "Added first mod.";
{
EXEC_UPDATE_TASK(model.startWatching(), )
}
{ EXEC_UPDATE_TASK(model.startWatching(), ) }
QCOMPARE(model.size(), 1);
qDebug() << "Started watching the temp folder.";
{
EXEC_UPDATE_TASK(model.installResource(folder_resource), QVERIFY)
}
{ EXEC_UPDATE_TASK(model.installResource(folder_resource), QVERIFY) }
QCOMPARE(model.size(), 2);
qDebug() << "Added second mod.";
@ -189,7 +180,7 @@ slots:
QCOMPARE(model.size(), 1);
qDebug() << "Removed first mod.";
QString mod_file_name {model.at(0).fileinfo().fileName()};
QString mod_file_name{ model.at(0).fileinfo().fileName() };
QVERIFY(!mod_file_name.isEmpty());
{
@ -212,10 +203,7 @@ slots:
QCOMPARE(model.size(), 0);
{
EXEC_UPDATE_TASK(model.installResource(folder_resource), QVERIFY)
}
{
{ EXEC_UPDATE_TASK(model.installResource(folder_resource), QVERIFY) } {
EXEC_UPDATE_TASK(model.installResource(file_mod), QVERIFY)
}
@ -228,8 +216,8 @@ slots:
auto& res_2 = model.at(0).type() == ResourceType::FOLDER ? model.at(0) : model.at(1);
auto id_1 = res_1.internal_id();
auto id_2 = res_2.internal_id();
bool initial_enabled_res_2 = res_2.enabled();
bool initial_enabled_res_1 = res_1.enabled();
bool initial_enabled_res_2 = res_2.enabled();
bool initial_enabled_res_1 = res_1.enabled();
QVERIFY(res_1.type() != ResourceType::FOLDER && res_1.type() != ResourceType::UNKNOWN);
qDebug() << "res_1 is of the correct type.";

View File

@ -59,7 +59,8 @@ class DummyResourceModel : public ResourceModel {
class ResourceModelTest : public QObject {
Q_OBJECT
private slots:
void test_abstract_item_model() {
void test_abstract_item_model()
{
auto dummy = DummyResourceModel();
auto tester = QAbstractItemModelTester(&dummy);
}

View File

@ -27,18 +27,20 @@
class ResourcePackParseTest : public QObject {
Q_OBJECT
private slots:
private slots:
void test_parseZIP()
{
QString source = QFINDTESTDATA("testdata/ResourcePackParse");
QString zip_rp = FS::PathCombine(source, "test_resource_pack_idk.zip");
ResourcePack pack { QFileInfo(zip_rp) };
ResourcePack pack{ QFileInfo(zip_rp) };
bool valid = ResourcePackUtils::processZIP(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly);
QVERIFY(pack.packFormat() == 3);
QVERIFY(pack.description() == "um dois, feijão com arroz, três quatro, feijão no prato, cinco seis, café inglês, sete oito, comer biscoito, nove dez comer pastéis!!");
QVERIFY(pack.description() ==
"um dois, feijão com arroz, três quatro, feijão no prato, cinco seis, café inglês, sete oito, comer biscoito, nove dez "
"comer pastéis!!");
QVERIFY(valid == true);
}
@ -47,7 +49,7 @@ class ResourcePackParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/ResourcePackParse");
QString folder_rp = FS::PathCombine(source, "test_folder");
ResourcePack pack { QFileInfo(folder_rp) };
ResourcePack pack{ QFileInfo(folder_rp) };
bool valid = ResourcePackUtils::processFolder(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly);
@ -61,13 +63,13 @@ class ResourcePackParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/ResourcePackParse");
QString folder_rp = FS::PathCombine(source, "another_test_folder");
ResourcePack pack { QFileInfo(folder_rp) };
ResourcePack pack{ QFileInfo(folder_rp) };
bool valid = ResourcePackUtils::process(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly);
QVERIFY(pack.packFormat() == 6);
QVERIFY(pack.description() == "o quartel pegou fogo, policia deu sinal, acode acode acode a bandeira nacional");
QVERIFY(valid == false); // no assets dir
QVERIFY(valid == false); // no assets dir
}
};

View File

@ -31,13 +31,13 @@
class ShaderPackParseTest : public QObject {
Q_OBJECT
private slots:
private slots:
void test_parseZIP()
{
QString source = QFINDTESTDATA("testdata/ShaderPackParse");
QString zip_sp = FS::PathCombine(source, "shaderpack1.zip");
ShaderPack pack { QFileInfo(zip_sp) };
ShaderPack pack{ QFileInfo(zip_sp) };
bool valid = ShaderPackUtils::processZIP(pack);
@ -50,7 +50,7 @@ class ShaderPackParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/ShaderPackParse");
QString folder_sp = FS::PathCombine(source, "shaderpack2");
ShaderPack pack { QFileInfo(folder_sp) };
ShaderPack pack{ QFileInfo(folder_sp) };
bool valid = ShaderPackUtils::processFolder(pack);
@ -63,7 +63,7 @@ class ShaderPackParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/ShaderPackParse");
QString folder_sp = FS::PathCombine(source, "shaderpack3.zip");
ShaderPack pack { QFileInfo(folder_sp) };
ShaderPack pack{ QFileInfo(folder_sp) };
bool valid = ShaderPackUtils::process(pack);

View File

@ -31,7 +31,7 @@ class BasicTask_MultiStep : public Task {
private:
auto isMultiStep() const -> bool override { return true; }
void executeTask() override {}
void executeTask() override {}
};
class BigConcurrentTask : public ConcurrentTask {
@ -66,7 +66,10 @@ class BigConcurrentTaskThread : public QThread {
}
connect(&big_task, &Task::finished, this, &QThread::quit);
connect(&m_deadline, &QTimer::timeout, this, [&] { passed_the_deadline = true; quit(); });
connect(&m_deadline, &QTimer::timeout, this, [&] {
passed_the_deadline = true;
quit();
});
m_deadline.start();
big_task.run();

View File

@ -28,13 +28,13 @@
class TexturePackParseTest : public QObject {
Q_OBJECT
private slots:
private slots:
void test_parseZIP()
{
QString source = QFINDTESTDATA("testdata/TexturePackParse");
QString zip_rp = FS::PathCombine(source, "test_texture_pack_idk.zip");
TexturePack pack { QFileInfo(zip_rp) };
TexturePack pack{ QFileInfo(zip_rp) };
bool valid = TexturePackUtils::processZIP(pack);
@ -47,7 +47,7 @@ class TexturePackParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/TexturePackParse");
QString folder_rp = FS::PathCombine(source, "test_texturefolder");
TexturePack pack { QFileInfo(folder_rp) };
TexturePack pack{ QFileInfo(folder_rp) };
bool valid = TexturePackUtils::processFolder(pack, TexturePackUtils::ProcessingLevel::BasicInfoOnly);
@ -60,7 +60,7 @@ class TexturePackParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/TexturePackParse");
QString folder_rp = FS::PathCombine(source, "another_test_texturefolder");
TexturePack pack { QFileInfo(folder_rp) };
TexturePack pack{ QFileInfo(folder_rp) };
bool valid = TexturePackUtils::process(pack, TexturePackUtils::ProcessingLevel::BasicInfoOnly);

View File

@ -34,33 +34,48 @@ class VersionTest : public QObject {
{
addDataColumns();
QTest::newRow("equal, explicit") << "1.2.0" << "1.2.0" << false << true;
QTest::newRow("equal, two-digit") << "1.42" << "1.42" << false << true;
QTest::newRow("equal, explicit") << "1.2.0"
<< "1.2.0" << false << true;
QTest::newRow("equal, two-digit") << "1.42"
<< "1.42" << false << true;
QTest::newRow("lessThan, explicit 1") << "1.2.0" << "1.2.1" << true << false;
QTest::newRow("lessThan, explicit 2") << "1.2.0" << "1.3.0" << true << false;
QTest::newRow("lessThan, explicit 3") << "1.2.0" << "2.2.0" << true << false;
QTest::newRow("lessThan, implicit 1") << "1.2" << "1.2.0" << true << false;
QTest::newRow("lessThan, implicit 2") << "1.2" << "1.2.1" << true << false;
QTest::newRow("lessThan, implicit 3") << "1.2" << "1.3.0" << true << false;
QTest::newRow("lessThan, implicit 4") << "1.2" << "2.2.0" << true << false;
QTest::newRow("lessThan, two-digit") << "1.41" << "1.42" << true << false;
QTest::newRow("lessThan, explicit 1") << "1.2.0"
<< "1.2.1" << true << false;
QTest::newRow("lessThan, explicit 2") << "1.2.0"
<< "1.3.0" << true << false;
QTest::newRow("lessThan, explicit 3") << "1.2.0"
<< "2.2.0" << true << false;
QTest::newRow("lessThan, implicit 1") << "1.2"
<< "1.2.0" << true << false;
QTest::newRow("lessThan, implicit 2") << "1.2"
<< "1.2.1" << true << false;
QTest::newRow("lessThan, implicit 3") << "1.2"
<< "1.3.0" << true << false;
QTest::newRow("lessThan, implicit 4") << "1.2"
<< "2.2.0" << true << false;
QTest::newRow("lessThan, two-digit") << "1.41"
<< "1.42" << true << false;
QTest::newRow("greaterThan, explicit 1") << "1.2.1" << "1.2.0" << false << false;
QTest::newRow("greaterThan, explicit 2") << "1.3.0" << "1.2.0" << false << false;
QTest::newRow("greaterThan, explicit 3") << "2.2.0" << "1.2.0" << false << false;
QTest::newRow("greaterThan, implicit 1") << "1.2.0" << "1.2" << false << false;
QTest::newRow("greaterThan, implicit 2") << "1.2.1" << "1.2" << false << false;
QTest::newRow("greaterThan, implicit 3") << "1.3.0" << "1.2" << false << false;
QTest::newRow("greaterThan, implicit 4") << "2.2.0" << "1.2" << false << false;
QTest::newRow("greaterThan, two-digit") << "1.42" << "1.41" << false << false;
QTest::newRow("greaterThan, explicit 1") << "1.2.1"
<< "1.2.0" << false << false;
QTest::newRow("greaterThan, explicit 2") << "1.3.0"
<< "1.2.0" << false << false;
QTest::newRow("greaterThan, explicit 3") << "2.2.0"
<< "1.2.0" << false << false;
QTest::newRow("greaterThan, implicit 1") << "1.2.0"
<< "1.2" << false << false;
QTest::newRow("greaterThan, implicit 2") << "1.2.1"
<< "1.2" << false << false;
QTest::newRow("greaterThan, implicit 3") << "1.3.0"
<< "1.2" << false << false;
QTest::newRow("greaterThan, implicit 4") << "2.2.0"
<< "1.2" << false << false;
QTest::newRow("greaterThan, two-digit") << "1.42"
<< "1.41" << false << false;
}
private slots:
void test_versionCompare_data()
{
setupVersions();
}
void test_versionCompare_data() { setupVersions(); }
void test_versionCompare()
{
@ -85,12 +100,12 @@ class VersionTest : public QObject {
QDir test_vector_dir(QFINDTESTDATA("testdata/Version"));
QFile vector_file{test_vector_dir.absoluteFilePath("test_vectors.txt")};
QFile vector_file{ test_vector_dir.absoluteFilePath("test_vectors.txt") };
vector_file.open(QFile::OpenModeFlag::ReadOnly);
int test_number = 0;
const QString test_name_template { "FlexVer test #%1 (%2)" };
const QString test_name_template{ "FlexVer test #%1 (%2)" };
for (auto line = vector_file.readLine(); !vector_file.atEnd(); line = vector_file.readLine()) {
line = line.simplified();
if (line.startsWith('#') || line.isEmpty())
@ -100,8 +115,8 @@ class VersionTest : public QObject {
auto split_line = line.split('<');
if (split_line.size() == 2) {
QString first{split_line.first().simplified()};
QString second{split_line.last().simplified()};
QString first{ split_line.first().simplified() };
QString second{ split_line.last().simplified() };
auto new_test_name = test_name_template.arg(QString::number(test_number), "lessThan");
m_flex_test_names.append(new_test_name);
@ -112,8 +127,8 @@ class VersionTest : public QObject {
split_line = line.split('=');
if (split_line.size() == 2) {
QString first{split_line.first().simplified()};
QString second{split_line.last().simplified()};
QString first{ split_line.first().simplified() };
QString second{ split_line.last().simplified() };
auto new_test_name = test_name_template.arg(QString::number(test_number), "equals");
m_flex_test_names.append(new_test_name);
@ -124,8 +139,8 @@ class VersionTest : public QObject {
split_line = line.split('>');
if (split_line.size() == 2) {
QString first{split_line.first().simplified()};
QString second{split_line.last().simplified()};
QString first{ split_line.first().simplified() };
QString second{ split_line.last().simplified() };
auto new_test_name = test_name_template.arg(QString::number(test_number), "greaterThan");
m_flex_test_names.append(new_test_name);

View File

@ -31,13 +31,13 @@
class WorldSaveParseTest : public QObject {
Q_OBJECT
private slots:
private slots:
void test_parseZIP()
{
QString source = QFINDTESTDATA("testdata/WorldSaveParse");
QString zip_ws = FS::PathCombine(source, "minecraft_save_1.zip") ;
WorldSave save { QFileInfo(zip_ws) };
QString zip_ws = FS::PathCombine(source, "minecraft_save_1.zip");
WorldSave save{ QFileInfo(zip_ws) };
bool valid = WorldSaveUtils::processZIP(save);
@ -45,13 +45,13 @@ class WorldSaveParseTest : public QObject {
QVERIFY(save.saveDirName() == "world_1");
QVERIFY(valid == true);
}
void test_parse_ZIP2()
{
QString source = QFINDTESTDATA("testdata/WorldSaveParse");
QString zip_ws = FS::PathCombine(source, "minecraft_save_2.zip") ;
WorldSave save { QFileInfo(zip_ws) };
QString zip_ws = FS::PathCombine(source, "minecraft_save_2.zip");
WorldSave save{ QFileInfo(zip_ws) };
bool valid = WorldSaveUtils::processZIP(save);
@ -59,13 +59,13 @@ class WorldSaveParseTest : public QObject {
QVERIFY(save.saveDirName() == "world_2");
QVERIFY(valid == true);
}
void test_parseFolder()
{
QString source = QFINDTESTDATA("testdata/WorldSaveParse");
QString folder_ws = FS::PathCombine(source, "minecraft_save_3");
WorldSave save { QFileInfo(folder_ws) };
WorldSave save{ QFileInfo(folder_ws) };
bool valid = WorldSaveUtils::processFolder(save);
@ -79,7 +79,7 @@ class WorldSaveParseTest : public QObject {
QString source = QFINDTESTDATA("testdata/WorldSaveParse");
QString folder_ws = FS::PathCombine(source, "minecraft_save_4");
WorldSave save { QFileInfo(folder_ws) };
WorldSave save{ QFileInfo(folder_ws) };
bool valid = WorldSaveUtils::process(save);

View File

@ -190,7 +190,8 @@
}
],
"mainClass": "net.minecraft.client.main.Main",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}",
"minecraftArguments":
"--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}",
"minimumLauncherVersion": 18,
"releaseTime": "2016-02-29T13:49:54+00:00",
"time": "2016-03-01T13:14:53+00:00",

View File

@ -335,7 +335,8 @@
"path": "org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar",
"sha1": "d51a7c040a721d13efdfbd34f8b257b2df882ad0",
"size": 173887,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar"
}
},
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209",
@ -357,26 +358,33 @@
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar",
"sha1": "b04f3ee8f5e43fa3b162981b50bb72fe1acabb33",
"size": 22,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar"
},
"classifiers": {
"natives-linux": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar",
"path":
"org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar",
"sha1": "931074f46c795d2f7b30ed6395df5715cfd7675b",
"size": 578680,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar"
},
"natives-osx": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar",
"path":
"org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar",
"sha1": "bcab850f8f487c3f4c4dbabde778bb82bd1a40ed",
"size": 426822,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"
},
"natives-windows": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar",
"path":
"org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar",
"sha1": "b84d5102b9dbfabfeb5e43c7e2828d98a7fc80e0",
"size": 613748,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar"
}
}
},
@ -428,7 +436,8 @@
"path": "org/lwjgl/lwjgl/lwjgl_util/2.9.2-nightly-20140822/lwjgl_util-2.9.2-nightly-20140822.jar",
"sha1": "f0e612c840a7639c1f77f68d72a28dae2f0c8490",
"size": 173887,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl_util/2.9.2-nightly-20140822/lwjgl_util-2.9.2-nightly-20140822.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl_util/2.9.2-nightly-20140822/lwjgl_util-2.9.2-nightly-20140822.jar"
}
},
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822",
@ -445,22 +454,28 @@
"downloads": {
"classifiers": {
"natives-linux": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-linux.jar",
"path":
"org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-linux.jar",
"sha1": "d898a33b5d0a6ef3fed3a4ead506566dce6720a5",
"size": 578539,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-linux.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-linux.jar"
},
"natives-osx": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-osx.jar",
"path":
"org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-osx.jar",
"sha1": "79f5ce2fea02e77fe47a3c745219167a542121d7",
"size": 468116,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-osx.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-osx.jar"
},
"natives-windows": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-windows.jar",
"path":
"org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-windows.jar",
"sha1": "78b2a55ce4dc29c6b3ec4df8ca165eba05f9b341",
"size": 613680,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-windows.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-windows.jar"
}
}
},
@ -491,7 +506,8 @@
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-linux.jar",
"sha1": "7ff832a6eb9ab6a767f1ade2b548092d0fa64795",
"size": 10362,
"url": "https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-linux.jar"
"url":
"https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-linux.jar"
},
"natives-osx": {
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-osx.jar",
@ -503,7 +519,8 @@
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar",
"sha1": "385ee093e01f587f30ee1c8a2ee7d408fd732e16",
"size": 155179,
"url": "https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar"
"url":
"https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar"
}
}
},
@ -521,7 +538,8 @@
}
],
"mainClass": "net.minecraft.client.main.Main",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}",
"minecraftArguments":
"--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}",
"minimumLauncherVersion": 18,
"releaseTime": "2016-02-29T13:49:54+00:00",
"time": "2016-03-01T13:14:53+00:00",

View File

@ -4,26 +4,30 @@
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar",
"sha1": "b04f3ee8f5e43fa3b162981b50bb72fe1acabb33",
"size": 22,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar"
},
"classifiers": {
"natives-linux": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar",
"sha1": "931074f46c795d2f7b30ed6395df5715cfd7675b",
"size": 578680,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar"
},
"natives-osx": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar",
"sha1": "bcab850f8f487c3f4c4dbabde778bb82bd1a40ed",
"size": 426822,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"
},
"natives-windows": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar",
"sha1": "b84d5102b9dbfabfeb5e43c7e2828d98a7fc80e0",
"size": 613748,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar"
"url":
"https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar"
}
}
},

File diff suppressed because one or more lines are too long