Files
tdesktop/Telegram/ThirdParty/kcoreaddons/autotests/kdelibs4configmigratortest.cpp
allhaileris afb81b8278
Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Close stale issues and PRs / stale (push) Successful in 13s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
init
2026-02-16 15:50:16 +03:00

128 lines
4.5 KiB
C++

/*
SPDX-FileCopyrightText: 2014 Montel Laurent <montel@kde.org>
SPDX-License-Identifier: LGPL-2.0-only
*/
// test object
#include "kdelibs4configmigrator.h"
// Qt
#include <QFile>
#include <QObject>
#include <QStandardPaths>
#include <QTemporaryDir>
#include <QTest>
class Kdelibs4ConfigMigratorTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void initTestCase();
void shouldNotMigrateIfKde4HomeDirDoesntExist();
void shouldMigrateIfKde4HomeDirExist();
void shouldMigrateConfigFiles();
void shouldMigrateUiFiles();
};
void Kdelibs4ConfigMigratorTest::initTestCase()
{
QStandardPaths::setTestModeEnabled(true);
const QString configHome = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
QDir(configHome).removeRecursively();
const QString dataHome = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
QDir(dataHome).removeRecursively();
}
void Kdelibs4ConfigMigratorTest::shouldNotMigrateIfKde4HomeDirDoesntExist()
{
qputenv("KDEHOME", "");
Kdelibs4ConfigMigrator migration(QLatin1String("foo"));
QCOMPARE(migration.migrate(), false);
}
void Kdelibs4ConfigMigratorTest::shouldMigrateIfKde4HomeDirExist()
{
QTemporaryDir kdehomeDir;
QVERIFY(kdehomeDir.isValid());
const QString kdehome = kdehomeDir.path();
qputenv("KDEHOME", QFile::encodeName(kdehome));
Kdelibs4ConfigMigrator migration(QLatin1String("foo"));
QCOMPARE(migration.migrate(), true);
}
void Kdelibs4ConfigMigratorTest::shouldMigrateConfigFiles()
{
QTemporaryDir kdehomeDir;
const QString kdehome = kdehomeDir.path();
qputenv("KDEHOME", QFile::encodeName(kdehome));
// Generate kde4 config dir
const QString configPath = kdehome + QLatin1Char('/') + QLatin1String("share/config/");
QDir().mkpath(configPath);
QVERIFY(QDir(configPath).exists());
const QStringList listConfig = {QLatin1String("foorc"), QLatin1String("foo1rc")};
for (const QString &config : listConfig) {
QFile fooConfigFile(QLatin1String(KDELIBS4CONFIGMIGRATOR_DATA_DIR) + QLatin1Char('/') + config);
QVERIFY(fooConfigFile.exists());
const QString storedConfigFilePath = configPath + QLatin1Char('/') + config;
QVERIFY(QFile::copy(fooConfigFile.fileName(), storedConfigFilePath));
QCOMPARE(QStandardPaths::locate(QStandardPaths::GenericConfigLocation, config), QString());
}
Kdelibs4ConfigMigrator migration(QLatin1String("foo"));
migration.setConfigFiles(listConfig);
QVERIFY(migration.migrate());
for (const QString &config : listConfig) {
const QString migratedConfigFile = QStandardPaths::locate(QStandardPaths::GenericConfigLocation, config);
QVERIFY(!migratedConfigFile.isEmpty());
QVERIFY(QFile(migratedConfigFile).exists());
QFile::remove(migratedConfigFile);
}
}
void Kdelibs4ConfigMigratorTest::shouldMigrateUiFiles()
{
QTemporaryDir kdehomeDir;
const QString kdehome = kdehomeDir.path();
qputenv("KDEHOME", QFile::encodeName(kdehome));
const QString appName = QLatin1String("foo");
// Generate kde4 data dir
const QString dataPath = kdehome + QLatin1Char('/') + QLatin1String("share/apps/");
QDir().mkpath(dataPath);
QVERIFY(QDir(dataPath).exists());
const QString xdgDatahome = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
QStringList listUi;
listUi << QLatin1String("appuirc") << QLatin1String("appui1rc");
for (const QString &uifile : std::as_const(listUi)) {
QFile fooConfigFile(QLatin1String(KDELIBS4CONFIGMIGRATOR_DATA_DIR) + QLatin1Char('/') + uifile);
QVERIFY(fooConfigFile.exists());
QDir().mkpath(dataPath + QLatin1Char('/') + appName);
const QString storedConfigFilePath = dataPath + QLatin1Char('/') + appName + QLatin1Char('/') + uifile;
QVERIFY(QFile::copy(fooConfigFile.fileName(), storedConfigFilePath));
const QString xdgUiFile = xdgDatahome + QLatin1String("/kxmlgui5/") + appName + QLatin1Char('/') + uifile;
QVERIFY(!QFile::exists(xdgUiFile));
}
Kdelibs4ConfigMigrator migration(appName);
migration.setUiFiles(QStringList() << listUi);
QVERIFY(migration.migrate());
for (const QString &uifile : std::as_const(listUi)) {
const QString xdgUiFile = xdgDatahome + QLatin1String("/kxmlgui5/") + appName + QLatin1Char('/') + uifile;
QVERIFY(QFile(xdgUiFile).exists());
QFile::remove(xdgUiFile);
}
}
QTEST_MAIN(Kdelibs4ConfigMigratorTest)
#include "kdelibs4configmigratortest.moc"