@ -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);
|
||||
|
||||
|
@ -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(""));
|
||||
|
@ -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();
|
||||
|
@ -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()
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
@ -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()
|
||||
{
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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)
|
||||
|
@ -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.";
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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",
|
||||
|
54
tests/testdata/MojangVersionFormat/1.9.json
vendored
54
tests/testdata/MojangVersionFormat/1.9.json
vendored
@ -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",
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
4668
tests/testdata/PackageManifest/1.8.0_202-x64.json
vendored
4668
tests/testdata/PackageManifest/1.8.0_202-x64.json
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user