Merge pull request #876 from Scrumplex/revert-updater-stuff

Revert "fix: remove updater if it is not used"
This commit is contained in:
dada513 2022-07-10 10:50:03 +02:00 committed by GitHub
commit 3b187b5246
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 15 additions and 418 deletions

View File

@ -154,7 +154,6 @@ void appDebugOutput(QtMsgType type, const QMessageLogContext &context, const QSt
fflush(stderr);
}
#ifdef LAUNCHER_WITH_UPDATER
QString getIdealPlatform(QString currentPlatform) {
auto info = Sys::getKernelInfo();
switch(info.kernelType) {
@ -193,7 +192,6 @@ QString getIdealPlatform(QString currentPlatform) {
}
return currentPlatform;
}
#endif
}
@ -758,7 +756,6 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
qDebug() << "<> Translations loaded.";
}
#ifdef LAUNCHER_WITH_UPDATER
// initialize the updater
if(BuildConfig.UPDATER_ENABLED)
{
@ -768,7 +765,6 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
m_updateChecker.reset(new UpdateChecker(m_network, channelUrl, BuildConfig.VERSION_CHANNEL, BuildConfig.VERSION_BUILD));
qDebug() << "<> Updater started.";
}
#endif
// Instance icons
{
@ -1414,9 +1410,7 @@ MainWindow* Application::showMainWindow(bool minimized)
}
m_mainWindow->checkInstancePathForProblems();
#ifdef LAUNCHER_WITH_UPDATER
connect(this, &Application::updateAllowedChanged, m_mainWindow, &MainWindow::updatesAllowedChanged);
#endif
connect(m_mainWindow, &MainWindow::isClosing, this, &Application::on_windowClose);
m_openWindows++;
}

View File

@ -42,10 +42,7 @@
#include <QIcon>
#include <QDateTime>
#include <QUrl>
#ifdef LAUNCHER_WITH_UPDATER
#include <updater/GoUpdate.h>
#endif
#include <BaseInstance.h>

View File

@ -149,23 +149,15 @@ set(LAUNCH_SOURCES
launch/LogModel.h
)
if (Launcher_UPDATER_BASE)
set(Launcher_APP_BINARY_DEFS "-DLAUNCHER_WITH_UPDATER ${Launcher_APP_BINARY_DEFS}")
# Old update system
set(UPDATE_SOURCES
# Old update system
set(UPDATE_SOURCES
updater/GoUpdate.h
updater/GoUpdate.cpp
updater/UpdateChecker.h
updater/UpdateChecker.cpp
updater/DownloadTask.h
updater/DownloadTask.cpp
)
ecm_add_test(updater/UpdateChecker_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
TEST_NAME UpdateChecker)
ecm_add_test(updater/DownloadTask_test.cpp LINK_LIBRARIES Launcher_logic Qt5::Test
TEST_NAME DownloadTask)
endif()
)
# Backend for the news bar... there's usually no news.
set(NEWS_SOURCES

View File

@ -36,7 +36,6 @@
#include "LauncherPartLaunch.h"
#include <QStandardPaths>
#include <QRegularExpression>
#include "launch/LaunchTask.h"
#include "minecraft/MinecraftInstance.h"

View File

@ -44,8 +44,6 @@
#include <QJsonArray>
#include <QJsonDocument>
#include <QFile>
#include <QHttpPart>
#include <QUrlQuery>
std::array<PasteUpload::PasteTypeInfo, 4> PasteUpload::PasteTypes = {
{{"0x0.st", "https://0x0.st", ""},

View File

@ -39,7 +39,6 @@
#include <QClipboard>
#include <QApplication>
#include <QFileDialog>
#include <QStandardPaths>
#include "ui/dialogs/ProgressDialog.h"
#include "ui/dialogs/CustomMessageBox.h"

View File

@ -1024,7 +1024,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow
}
#ifdef LAUNCHER_WITH_UPDATER
if(BuildConfig.UPDATER_ENABLED)
{
bool updatesAllowed = APPLICATION->updatesAreAllowed();
@ -1043,7 +1042,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow
updater->checkForUpdate(APPLICATION->settings()->get("UpdateChannel").toString(), false);
}
}
#endif
setSelectedInstanceById(APPLICATION->settings()->get("SelectedInstance").toString());
@ -1355,7 +1353,6 @@ void MainWindow::repopulateAccountsMenu()
ui->profileMenu->addAction(ui->actionManageAccounts);
}
#ifdef LAUNCHER_WITH_UPDATER
void MainWindow::updatesAllowedChanged(bool allowed)
{
if(!BuildConfig.UPDATER_ENABLED)
@ -1364,7 +1361,6 @@ void MainWindow::updatesAllowedChanged(bool allowed)
}
ui->actionCheckUpdate->setEnabled(allowed);
}
#endif
/*
* Assumes the sender is a QAction
@ -1470,7 +1466,6 @@ void MainWindow::updateNewsLabel()
}
}
#ifdef LAUNCHER_WITH_UPDATER
void MainWindow::updateAvailable(GoUpdate::Status status)
{
if(!APPLICATION->updatesAreAllowed())
@ -1496,7 +1491,6 @@ void MainWindow::updateNotAvailable()
UpdateDialog dlg(false, this);
dlg.exec();
}
#endif
QList<int> stringToIntList(const QString &string)
{
@ -1518,7 +1512,6 @@ QString intListToString(const QList<int> &list)
return slist.join(',');
}
#ifdef LAUNCHER_WITH_UPDATER
void MainWindow::downloadUpdates(GoUpdate::Status status)
{
if(!APPLICATION->updatesAreAllowed())
@ -1552,7 +1545,6 @@ void MainWindow::downloadUpdates(GoUpdate::Status status)
CustomMessageBox::selectable(this, tr("Error"), updateTask.failReason(), QMessageBox::Warning)->show();
}
}
#endif
void MainWindow::onCatToggled(bool state)
{
@ -1865,7 +1857,6 @@ void MainWindow::on_actionConfig_Folder_triggered()
}
}
#ifdef LAUNCHER_WITH_UPDATER
void MainWindow::checkForUpdates()
{
if(BuildConfig.UPDATER_ENABLED)
@ -1878,7 +1869,6 @@ void MainWindow::checkForUpdates()
qWarning() << "Updater not set up. Cannot check for updates.";
}
}
#endif
void MainWindow::on_actionSettings_triggered()
{

View File

@ -78,9 +78,7 @@ public:
void checkInstancePathForProblems();
#ifdef LAUNCHER_WITH_UPDATER
void updatesAllowedChanged(bool allowed);
#endif
void droppedURLs(QList<QUrl> urls);
signals:
@ -126,9 +124,7 @@ private slots:
void on_actionViewCentralModsFolder_triggered();
#ifdef LAUNCHER_WITH_UPDATER
void checkForUpdates();
#endif
void on_actionSettings_triggered();
@ -197,11 +193,9 @@ private slots:
void startTask(Task *task);
#ifdef LAUNCHER_WITH_UPDATER
void updateAvailable(GoUpdate::Status status);
void updateNotAvailable();
#endif
void defaultAccountChanged();
@ -211,12 +205,10 @@ private slots:
void updateNewsLabel();
#ifdef LAUNCHER_WITH_UPDATER
/*!
* Runs the DownloadTask and installs updates.
*/
void downloadUpdates(GoUpdate::Status status);
#endif
void konamiTriggered();

View File

@ -78,7 +78,6 @@ LauncherPage::LauncherPage(QWidget *parent) : QWidget(parent), ui(new Ui::Launch
m_languageModel = APPLICATION->translations();
loadSettings();
#ifdef LAUNCHER_WITH_UPDATER
if(BuildConfig.UPDATER_ENABLED)
{
QObject::connect(APPLICATION->updateChecker().get(), &UpdateChecker::channelListLoaded, this, &LauncherPage::refreshUpdateChannelList);
@ -91,9 +90,11 @@ LauncherPage::LauncherPage(QWidget *parent) : QWidget(parent), ui(new Ui::Launch
{
APPLICATION->updateChecker()->updateChanList(false);
}
ui->updateSettingsBox->setHidden(false);
}
#endif
else
{
ui->updateSettingsBox->setHidden(true);
}
connect(ui->fontSizeBox, SIGNAL(valueChanged(int)), SLOT(refreshFontPreview()));
connect(ui->consoleFont, SIGNAL(currentFontChanged(QFont)), SLOT(refreshFontPreview()));
}
@ -188,7 +189,6 @@ void LauncherPage::on_metadataDisableBtn_clicked()
ui->metadataWarningLabel->setHidden(!ui->metadataDisableBtn->isChecked());
}
#ifdef LAUNCHER_WITH_UPDATER
void LauncherPage::refreshUpdateChannelList()
{
// Stop listening for selection changes. It's going to change a lot while we update it and
@ -260,7 +260,6 @@ void LauncherPage::refreshUpdateChannelDesc()
m_currentUpdateChannel = selected.id;
}
}
#endif
void LauncherPage::applySettings()
{

View File

@ -90,7 +90,6 @@ slots:
void on_iconsDirBrowseBtn_clicked();
void on_metadataDisableBtn_clicked();
#ifdef LAUNCHER_WITH_UPDATER
/*!
* Updates the list of update channels in the combo box.
*/
@ -101,13 +100,13 @@ slots:
*/
void refreshUpdateChannelDesc();
void updateChannelSelectionChanged(int index);
#endif
/*!
* Updates the font preview
*/
void refreshFontPreview();
void updateChannelSelectionChanged(int index);
private:
Ui::LauncherPage *ui;

View File

@ -50,9 +50,6 @@
<property name="title">
<string>Update Settings</string>
</property>
<property name="visible">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QCheckBox" name="autoUpdateCheckBox">

View File

@ -40,7 +40,6 @@
#include "Application.h"
#include <QIcon>
#include <QIdentityProxyModel>
#include <QScrollBar>
#include <QShortcut>

View File

@ -35,7 +35,6 @@
#pragma once
#include <QItemSelection>
#include <QMainWindow>
#include "ui/pages/BasePage.h"

View File

@ -48,7 +48,6 @@
#include <QFileSystemWatcher>
#include <QMenu>
#include <QTimer>
static const int COLUMN_COUNT = 2; // 3 , TBD: latency and other nice things.

View File

@ -47,7 +47,6 @@
#include <QInputDialog>
#include <QProcess>
#include <Qt>
#include <QSortFilterProxyModel>
#include "tools/MCEditTool.h"
#include "FileSystem.h"

View File

@ -46,8 +46,6 @@
#include <BuildConfig.h>
#include <net/NetJob.h>
namespace LegacyFTB {
FilterModel::FilterModel(QObject *parent) : QSortFilterProxyModel(parent)

View File

@ -39,7 +39,6 @@
#include "modplatform/modrinth/ModrinthPackManifest.h"
#include "ui/pages/modplatform/modrinth/ModrinthPage.h"
#include "net/NetJob.h"
class ModPage;
class Version;

View File

@ -1,204 +0,0 @@
#include <QTest>
#include <QSignalSpy>
#include "updater/GoUpdate.h"
#include "updater/DownloadTask.h"
#include "updater/UpdateChecker.h"
#include <FileSystem.h>
using namespace GoUpdate;
FileSourceList encodeBaseFile(const char *suffix)
{
auto base = QDir::currentPath();
QUrl localFile = QUrl::fromLocalFile(base + suffix);
QString localUrlString = localFile.toString(QUrl::FullyEncoded);
auto item = FileSource("http", localUrlString);
return FileSourceList({item});
}
Q_DECLARE_METATYPE(VersionFileList)
Q_DECLARE_METATYPE(Operation)
QDebug operator<<(QDebug dbg, const FileSource &f)
{
dbg.nospace() << "FileSource(type=" << f.type << " url=" << f.url
<< " comp=" << f.compressionType << ")";
return dbg.maybeSpace();
}
QDebug operator<<(QDebug dbg, const VersionFileEntry &v)
{
dbg.nospace() << "VersionFileEntry(path=" << v.path << " mode=" << v.mode
<< " md5=" << v.md5 << " sources=" << v.sources << ")";
return dbg.maybeSpace();
}
QDebug operator<<(QDebug dbg, const Operation::Type &t)
{
switch (t)
{
case Operation::OP_REPLACE:
dbg << "OP_COPY";
break;
case Operation::OP_DELETE:
dbg << "OP_DELETE";
break;
}
return dbg.maybeSpace();
}
QDebug operator<<(QDebug dbg, const Operation &u)
{
dbg.nospace() << "Operation(type=" << u.type << " file=" << u.source
<< " dest=" << u.destination << " mode=" << u.destinationMode << ")";
return dbg.maybeSpace();
}
class DownloadTaskTest : public QObject
{
Q_OBJECT
private
slots:
void initTestCase()
{
}
void cleanupTestCase()
{
}
void test_parseVersionInfo_data()
{
QFile f1(QFINDTESTDATA("testdata/1.json"));
f1.open(QFile::ReadOnly);
QByteArray data1 = f1.readAll();
f1.close();
QFile f2(QFINDTESTDATA("testdata/2.json"));
f2.open(QFile::ReadOnly);
QByteArray data2 = f2.readAll();
f2.close();
QTest::addColumn<QByteArray>("data");
QTest::addColumn<VersionFileList>("list");
QTest::addColumn<QString>("error");
QTest::addColumn<bool>("ret");
QTest::newRow("one")
<< data1
<< (VersionFileList()
<< VersionFileEntry{"fileOne",
493,
encodeBaseFile("/data/fileOneA"),
"9eb84090956c484e32cb6c08455a667b"}
<< VersionFileEntry{"fileTwo",
644,
encodeBaseFile("/data/fileTwo"),
"38f94f54fa3eb72b0ea836538c10b043"}
<< VersionFileEntry{"fileThree",
750,
encodeBaseFile("/data/fileThree"),
"f12df554b21e320be6471d7154130e70"})
<< QString() << true;
QTest::newRow("two")
<< data2
<< (VersionFileList()
<< VersionFileEntry{"fileOne",
493,
encodeBaseFile("/data/fileOneB"),
"42915a71277c9016668cce7b82c6b577"}
<< VersionFileEntry{"fileTwo",
644,
encodeBaseFile("/data/fileTwo"),
"38f94f54fa3eb72b0ea836538c10b043"})
<< QString() << true;
}
void test_parseVersionInfo()
{
QFETCH(QByteArray, data);
QFETCH(VersionFileList, list);
QFETCH(QString, error);
QFETCH(bool, ret);
VersionFileList outList;
QString outError;
bool outRet = parseVersionInfo(data, outList, outError);
QCOMPARE(outRet, ret);
QCOMPARE(outList, list);
QCOMPARE(outError, error);
}
void test_processFileLists_data()
{
QTest::addColumn<QString>("tempFolder");
QTest::addColumn<VersionFileList>("currentVersion");
QTest::addColumn<VersionFileList>("newVersion");
QTest::addColumn<OperationList>("expectedOperations");
QTemporaryDir tempFolderObj;
QString tempFolder = tempFolderObj.path();
// update fileOne, keep fileTwo, remove fileThree
QTest::newRow("test 1")
<< tempFolder << (VersionFileList()
<< VersionFileEntry{
QFINDTESTDATA("testdata/fileOne"), 493,
FileSourceList()
<< FileSource(
"http", "http://host/path/fileOne-1"),
"9eb84090956c484e32cb6c08455a667b"}
<< VersionFileEntry{
QFINDTESTDATA("testdata/fileTwo"), 644,
FileSourceList()
<< FileSource(
"http", "http://host/path/fileTwo-1"),
"38f94f54fa3eb72b0ea836538c10b043"}
<< VersionFileEntry{
QFINDTESTDATA("testdata/fileThree"), 420,
FileSourceList()
<< FileSource(
"http", "http://host/path/fileThree-1"),
"f12df554b21e320be6471d7154130e70"})
<< (VersionFileList()
<< VersionFileEntry{
QFINDTESTDATA("testdata/fileOne"), 493,
FileSourceList()
<< FileSource("http",
"http://host/path/fileOne-2"),
"42915a71277c9016668cce7b82c6b577"}
<< VersionFileEntry{
QFINDTESTDATA("testdata/fileTwo"), 644,
FileSourceList()
<< FileSource("http",
"http://host/path/fileTwo-2"),
"38f94f54fa3eb72b0ea836538c10b043"})
<< (OperationList()
<< Operation::DeleteOp(QFINDTESTDATA("testdata/fileThree"))
<< Operation::CopyOp(
FS::PathCombine(tempFolder,
QFINDTESTDATA("data/fileOne").replace("/", "_")),
QFINDTESTDATA("data/fileOne"), 493));
}
void test_processFileLists()
{
QFETCH(QString, tempFolder);
QFETCH(VersionFileList, currentVersion);
QFETCH(VersionFileList, newVersion);
QFETCH(OperationList, expectedOperations);
OperationList operations;
shared_qobject_ptr<QNetworkAccessManager> network = new QNetworkAccessManager();
processFileLists(currentVersion, newVersion, QDir::currentPath(), tempFolder, new NetJob("Dummy", network), operations);
qDebug() << (operations == expectedOperations);
qDebug() << operations;
qDebug() << expectedOperations;
QCOMPARE(operations, expectedOperations);
}
};
extern "C"
{
QTEST_GUILESS_MAIN(DownloadTaskTest)
}
#include "DownloadTask_test.moc"

View File

@ -1,148 +0,0 @@
#include <QTest>
#include <QSignalSpy>
#include "updater/UpdateChecker.h"
Q_DECLARE_METATYPE(UpdateChecker::ChannelListEntry)
bool operator==(const UpdateChecker::ChannelListEntry &e1, const UpdateChecker::ChannelListEntry &e2)
{
qDebug() << e1.url << "vs" << e2.url;
return e1.id == e2.id &&
e1.name == e2.name &&
e1.description == e2.description &&
e1.url == e2.url;
}
QDebug operator<<(QDebug dbg, const UpdateChecker::ChannelListEntry &c)
{
dbg.nospace() << "ChannelListEntry(id=" << c.id << " name=" << c.name << " description=" << c.description << " url=" << c.url << ")";
return dbg.maybeSpace();
}
QString findTestDataUrl(const char *file)
{
return QUrl::fromLocalFile(QFINDTESTDATA(file)).toString();
}
class UpdateCheckerTest : public QObject
{
Q_OBJECT
private
slots:
void initTestCase()
{
}
void cleanupTestCase()
{
}
void tst_ChannelListParsing_data()
{
QTest::addColumn<QString>("channel");
QTest::addColumn<QString>("channelUrl");
QTest::addColumn<bool>("hasChannels");
QTest::addColumn<bool>("valid");
QTest::addColumn<QList<UpdateChecker::ChannelListEntry> >("result");
QTest::newRow("garbage")
<< QString()
<< findTestDataUrl("testdata/garbageChannels.json")
<< false
<< false
<< QList<UpdateChecker::ChannelListEntry>();
QTest::newRow("errors")
<< QString()
<< findTestDataUrl("testdata/errorChannels.json")
<< false
<< true
<< QList<UpdateChecker::ChannelListEntry>();
QTest::newRow("no channels")
<< QString()
<< findTestDataUrl("testdata/noChannels.json")
<< false
<< true
<< QList<UpdateChecker::ChannelListEntry>();
QTest::newRow("one channel")
<< QString("develop")
<< findTestDataUrl("testdata/oneChannel.json")
<< true
<< true
<< (QList<UpdateChecker::ChannelListEntry>() << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"});
QTest::newRow("several channels")
<< QString("develop")
<< findTestDataUrl("testdata/channels.json")
<< true
<< true
<< (QList<UpdateChecker::ChannelListEntry>()
<< UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", findTestDataUrl("testdata")}
<< UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", findTestDataUrl("testdata")}
<< UpdateChecker::ChannelListEntry{"42", "The Channel", "This is the channel that is going to answer all of your questions", "https://dent.me/tea"});
}
void tst_ChannelListParsing()
{
QFETCH(QString, channel);
QFETCH(QString, channelUrl);
QFETCH(bool, hasChannels);
QFETCH(bool, valid);
QFETCH(QList<UpdateChecker::ChannelListEntry>, result);
shared_qobject_ptr<QNetworkAccessManager> nam = new QNetworkAccessManager();
UpdateChecker checker(nam, channelUrl, channel, 0);
QSignalSpy channelListLoadedSpy(&checker, SIGNAL(channelListLoaded()));
QVERIFY(channelListLoadedSpy.isValid());
checker.updateChanList(false);
if (valid)
{
QVERIFY(channelListLoadedSpy.wait());
QCOMPARE(channelListLoadedSpy.size(), 1);
}
else
{
channelListLoadedSpy.wait();
QCOMPARE(channelListLoadedSpy.size(), 0);
}
QCOMPARE(checker.hasChannels(), hasChannels);
QCOMPARE(checker.getChannelList(), result);
}
void tst_UpdateChecking()
{
QString channel = "develop";
QString channelUrl = findTestDataUrl("testdata/channels.json");
int currentBuild = 2;
shared_qobject_ptr<QNetworkAccessManager> nam = new QNetworkAccessManager();
UpdateChecker checker(nam, channelUrl, channel, currentBuild);
QSignalSpy updateAvailableSpy(&checker, SIGNAL(updateAvailable(GoUpdate::Status)));
QVERIFY(updateAvailableSpy.isValid());
QSignalSpy channelListLoadedSpy(&checker, SIGNAL(channelListLoaded()));
QVERIFY(channelListLoadedSpy.isValid());
checker.updateChanList(false);
QVERIFY(channelListLoadedSpy.wait());
qDebug() << "CWD:" << QDir::current().absolutePath();
checker.m_channels[0].url = findTestDataUrl("testdata/");
checker.checkForUpdate(channel, false);
QVERIFY(updateAvailableSpy.wait());
auto status = updateAvailableSpy.first().first().value<GoUpdate::Status>();
QCOMPARE(checker.m_channels[0].url, status.newRepoUrl);
QCOMPARE(3, status.newVersionId);
QCOMPARE(currentBuild, status.currentVersionId);
}
};
QTEST_GUILESS_MAIN(UpdateCheckerTest)
#include "UpdateChecker_test.moc"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.