1 parent
ebf8ff7869
commit
41599fa82f
67 files changed
+8775
-4
No files matched your search
@@ -0,0 +1,97 @@
|
||||
#include "testenv.h"
|
||||
|
||||
#include "launcherpaths.h"
|
||||
#include "localization.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
|
||||
class TestLauncherPaths : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void init() { TestEnv::resetLauncherRoot(); }
|
||||
|
||||
void rootIsInsideContainer()
|
||||
{
|
||||
QVERIFY(LauncherPaths::rootDir().startsWith(LauncherPaths::containerDir() + u'/'));
|
||||
QCOMPARE(QFileInfo(LauncherPaths::rootDir()).fileName(), QStringLiteral("BiLauncher"));
|
||||
}
|
||||
|
||||
void containerPerPlatform()
|
||||
{
|
||||
const QString home = QDir::homePath();
|
||||
#if defined(Q_OS_WIN)
|
||||
QCOMPARE(LauncherPaths::containerDir(), home + QStringLiteral("/AppData/Roaming"));
|
||||
QCOMPARE(LauncherPaths::defaultMinecraftDir(), LauncherPaths::containerDir() + "/.minecraft");
|
||||
#elif defined(Q_OS_MACOS)
|
||||
QCOMPARE(LauncherPaths::containerDir(), home + QStringLiteral("/Library/Application Support"));
|
||||
QCOMPARE(LauncherPaths::defaultMinecraftDir(), LauncherPaths::containerDir() + "/minecraft");
|
||||
#else
|
||||
QCOMPARE(LauncherPaths::containerDir(), home);
|
||||
QCOMPARE(LauncherPaths::defaultMinecraftDir(), home + "/.minecraft");
|
||||
#endif
|
||||
}
|
||||
|
||||
void filesLayout_data()
|
||||
{
|
||||
QTest::addColumn<QString>("actual");
|
||||
QTest::addColumn<QString>("relative");
|
||||
|
||||
QTest::newRow("settings") << LauncherPaths::settingsFile() << "settings.json";
|
||||
QTest::newRow("profiles") << LauncherPaths::profilesFile() << "profiles.json";
|
||||
QTest::newRow("customBuilds") << LauncherPaths::customBuildsFile() << "customBuilds.json";
|
||||
QTest::newRow("legacyBuilds") << LauncherPaths::legacyCustomBuildsFile() << "versions.json";
|
||||
QTest::newRow("buildStorage") << LauncherPaths::buildStorageDir() << "builds";
|
||||
QTest::newRow("buildDir") << LauncherPaths::buildDir(7) << "builds/7";
|
||||
QTest::newRow("season") << LauncherPaths::seasonalStateFile(7) << "builds/7/season.json";
|
||||
QTest::newRow("runtime") << LauncherPaths::runtimeDir() << "runtime";
|
||||
QTest::newRow("java") << LauncherPaths::javaDir() << "java";
|
||||
QTest::newRow("cache") << LauncherPaths::cacheDir() << "cache";
|
||||
QTest::newRow("javaCatalog") << LauncherPaths::javaCatalogFile() << "cache/java_runtimes.json";
|
||||
QTest::newRow("javaDownload") << LauncherPaths::javaDownloadDir() << "cache/java";
|
||||
QTest::newRow("manifest") << LauncherPaths::versionManifestFile() << "cache/version_manifest.json";
|
||||
QTest::newRow("seasonal") << LauncherPaths::seasonalCatalogFile() << "cache/seasonal_builds.json";
|
||||
QTest::newRow("loaderCache") << LauncherPaths::loaderCacheFile("forge") << "cache/loader_forge.json";
|
||||
QTest::newRow("loaderDownload") << LauncherPaths::loaderDownloadDir() << "cache/loaders";
|
||||
}
|
||||
|
||||
void filesLayout()
|
||||
{
|
||||
QFETCH(QString, actual);
|
||||
QFETCH(QString, relative);
|
||||
QCOMPARE(actual, LauncherPaths::rootDir() + u'/' + relative);
|
||||
}
|
||||
|
||||
void ensureRootCreatesTree()
|
||||
{
|
||||
QString error;
|
||||
QVERIFY2(LauncherPaths::ensureRootExists(&error), qPrintable(error));
|
||||
for (const QString &dir : {LauncherPaths::rootDir(), LauncherPaths::runtimeDir(),
|
||||
LauncherPaths::cacheDir(), LauncherPaths::loaderDownloadDir(),
|
||||
LauncherPaths::buildStorageDir(), LauncherPaths::javaDir(),
|
||||
LauncherPaths::javaDownloadDir()}) {
|
||||
QVERIFY2(QFileInfo(dir).isDir(), qPrintable(dir));
|
||||
}
|
||||
// Повторный вызов на готовом дереве — тоже успех.
|
||||
QVERIFY(LauncherPaths::ensureRootExists(&error));
|
||||
}
|
||||
|
||||
void ensureRootFailsWhenFileBlocksFolder()
|
||||
{
|
||||
QDir().mkpath(LauncherPaths::rootDir());
|
||||
QFile blocker(LauncherPaths::cacheDir());
|
||||
QVERIFY(blocker.open(QIODevice::WriteOnly));
|
||||
blocker.close();
|
||||
|
||||
QString error;
|
||||
QVERIFY(!LauncherPaths::ensureRootExists(&error));
|
||||
QVERIFY(!error.isEmpty());
|
||||
QVERIFY(error.contains(QDir::toNativeSeparators(LauncherPaths::cacheDir())));
|
||||
}
|
||||
};
|
||||
|
||||
BILAUNCHER_TEST_MAIN(TestLauncherPaths)
|
||||
#include "tst_launcherpaths.moc"
|
||||
Reference in new issue
Block a user