autotests fixes
tests / package-smoke-linux (push) Skipped
tests / package-smoke-windows (push) Skipped
tests / macos (push) Successful in 1m22s
tests / linux (pull_request) Successful in 1m54s
tests / package-smoke-macos (push) Skipped
tests / linux (push) Successful in 2m43s
tests / windows (push) Successful in 4m13s
tests / windows (pull_request) Skipped
tests / macos (pull_request) Skipped
tests / package-smoke-linux (pull_request) Skipped
tests / package-smoke-windows (pull_request) Skipped
tests / package-smoke-macos (pull_request) Skipped

Signed-off-by: galeon <dertiellis@gmail.com>
This commit is contained in:
galeon committed 2026-11-01 21:07:03 +03:00
1 parent 6a2b596f32
commit 5635dcc558
11 files changed
+134 -52

No files matched your search

+33 -15
View File
@@ -7,6 +7,8 @@
#include "modloaderversionservice.h"
#include <QSignalSpy>
#include <QNetworkAccessManager>
#include <QNetworkReply>
namespace {
const QString kFabric = QStringLiteral("https://meta.fabricmc.net/v2/versions/loader/1.20.1");
@@ -55,6 +57,25 @@ class TestModLoaderVersionService : public QObject
return QTest::qWaitFor([&] { return r.calls > 0; }, 15000);
}
bool loadNeoForgeInOrder(ModLoaderVersionService &service, CallResult &result,
const QString &first, const QString &second)
{
QStringList completed;
QObject observer;
auto *network = service.findChild<QNetworkAccessManager *>();
if (!network)
qFatal("ModLoaderVersionService has no network manager");
connect(network, &QNetworkAccessManager::finished, &observer, [&](QNetworkReply *reply) {
completed << reply->url().toString();
});
service.ensureLoaded(ModLoader::NeoForge, "1.20.1", result.callback());
if (!QTest::qWaitFor([&] { return completed.contains(first) && m_net.hits(second) == 1; }, 15000))
return false;
if (!m_net.releaseResponse(second))
return false;
return QTest::qWaitFor([&] { return result.calls == 1; }, 15000);
}
private slots:
void initTestCase() { BILAUNCHER_START_FAKE_INTERNET(m_net); }
@@ -167,33 +188,30 @@ private slots:
void neoForgeLegacyArtifactArrivesLast()
{
// Ранние сборки под 1.20.1 — из старого артефакта net.neoforged:forge.
FakeResponse legacySlow = xml(Fixtures::read("loaders/neoforge-legacy-maven-metadata.xml"));
legacySlow.delayMs = 400;
m_net.route(kNeoLegacyMeta, legacySlow);
FakeResponse legacy = xml(Fixtures::read("loaders/neoforge-legacy-maven-metadata.xml"));
legacy.deferred = true;
m_net.route(kNeoLegacyMeta, legacy);
ModLoaderVersionService service;
CallResult r;
QVERIFY(load(service, ModLoader::NeoForge, "1.20.1", r));
QVERIFY(loadNeoForgeInOrder(service, r, kNeoMeta, kNeoLegacyMeta));
QVERIFY(r.ok);
const QList<LoaderVersionEntry> legacy = service.versions(ModLoader::NeoForge, "1.20.1");
QCOMPARE(loaderVersions(legacy), QStringList({"47.1.106", "47.1.79"}));
QCOMPARE(legacy.at(0).installerUrl,
const QList<LoaderVersionEntry> versions = service.versions(ModLoader::NeoForge, "1.20.1");
QCOMPARE(loaderVersions(versions), QStringList({"47.1.106", "47.1.79"}));
QCOMPARE(versions.at(0).installerUrl,
QUrl("https://maven.neoforged.net/releases/net/neoforged/forge/1.20.1-47.1.106/forge-1.20.1-47.1.106-installer.jar"));
}
void neoForgeLegacyArtifactArrivesFirst()
{
// Тот же каталог, но маленький legacy-ответ приходит раньше основного.
FakeResponse primarySlow = xml(Fixtures::read("loaders/neoforge-maven-metadata.xml"));
primarySlow.delayMs = 400;
m_net.route(kNeoMeta, primarySlow);
// Основной ответ выпускается только после обработки legacy клиентом.
FakeResponse primary = xml(Fixtures::read("loaders/neoforge-maven-metadata.xml"));
primary.deferred = true;
m_net.route(kNeoMeta, primary);
ModLoaderVersionService service;
CallResult r;
QVERIFY(load(service, ModLoader::NeoForge, "1.20.1", r));
QVERIFY(loadNeoForgeInOrder(service, r, kNeoLegacyMeta, kNeoMeta));
QVERIFY(r.ok);
QCOMPARE(service.versions(ModLoader::NeoForge, "1.21.1").size(), 2);
// В startRefresh() основной ответ делает state->merged = parsed и затирает
// уже слитые записи legacy — версии NeoForge для 1.20.1 пропадают.
QEXPECT_FAIL("", "гонка: основной maven-metadata NeoForge затирает уже пришедший legacy", Continue);
QCOMPARE(service.versions(ModLoader::NeoForge, "1.20.1").size(), 2);
}