Page MenuHomePhorge

No OneTemporary

Size
6 KB
Referenced Files
None
Subscribers
None
diff --git a/src/kazv-settings.kcfg b/src/kazv-settings.kcfg
index f4fe184..bb4b216 100644
--- a/src/kazv-settings.kcfg
+++ b/src/kazv-settings.kcfg
@@ -1,12 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile arg="true" />
+ <include>QStandardPaths</include>
<group name="General">
<entry name="cacheDirectory" type="String">
<label>Directory for storing the cached files.</label>
+ <default code="true">QStandardPaths::writableLocation(QStandardPaths::CacheLocation)</default>
</entry>
</group>
</kcfg>
diff --git a/src/tests/kazv-config-test.cpp b/src/tests/kazv-config-test.cpp
index c77d3df..aed17e7 100644
--- a/src/tests/kazv-config-test.cpp
+++ b/src/tests/kazv-config-test.cpp
@@ -1,197 +1,197 @@
/*
* This file is part of kazv.
* SPDX-FileCopyrightText: 2026 nannanko <nannanko@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#include <kazv-defs.hpp>
#include "kazv-config.hpp"
#include <KConfigGroup>
#include <KSharedConfig>
#include <QDir>
#include <QFile>
#include <QMap>
#include <QObject>
#include <QStandardPaths>
#include <QStringList>
#include <QTemporaryDir>
#include <QVariant>
#include <QtTest>
using namespace Qt::Literals::StringLiterals;
namespace
{
QString configDir()
{
return QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
}
QString configFilePath(const QString &relativePath)
{
return configDir() + u"/"_s + relativePath;
}
// Creates a config file by the same way the old kazv code did
void writeOldConfig(const QString &configName,
const QString &groupName,
const QMap<QString, QVariant> &entries)
{
const KSharedConfigPtr config = KSharedConfig::openConfig(configName);
KConfigGroup group = config->group(groupName);
for (auto it = entries.cbegin(); it != entries.cend(); ++it) {
group.writeEntry(it.key(), it.value());
}
QVERIFY(config->sync());
}
}
class KazvConfigTest : public QObject
{
Q_OBJECT
private:
QTemporaryDir m_configHome;
private Q_SLOTS:
void initTestCase();
void cleanup();
void testMigrateCacheDirectory();
void testMigrateShortcuts();
void testMigratePreservesExistingNewConfig();
void testMigrateShortcutsPreservesExistingNewConfig();
void testMigrateLastSession();
void testMigrateLastSessionPreservesExistingNewConfig();
void testNoOldConfig();
};
void KazvConfigTest::initTestCase()
{
// Redirect all config locations to a temporary directory, so that
// the migration code never touches the user's real configuration.
QCoreApplication::setApplicationName(u"kazv"_s);
QVERIFY(m_configHome.isValid());
QVERIFY(qputenv("XDG_CONFIG_HOME", m_configHome.path().toUtf8()));
QCOMPARE(configDir(), m_configHome.path());
}
void KazvConfigTest::cleanup()
{
const QStringList configFiles = {
u"kazv/kazvrc"_s,
u"kazv/kazvsessionrc"_s,
u"kazv/cacheDirectoryrc"_s,
u"kazv/shortcutsrc"_s,
u"kazvsessionrc"_s,
};
for (const QString &relativePath : configFiles) {
QFile::remove(configFilePath(relativePath));
}
}
void KazvConfigTest::testMigrateCacheDirectory()
{
writeOldConfig(u"kazv/cacheDirectoryrc"_s, u"CacheDirectory"_s,
{{u"cacheDirectory"_s, u"/tmp/kazv-cache"_s}});
KazvConfig config;
QCOMPARE(config.cacheDirectory(), u"/tmp/kazv-cache"_s);
// The old config file should be removed after a successful migration.
QVERIFY(!QFile::exists(configFilePath(u"kazv/cacheDirectoryrc"_s)));
}
void KazvConfigTest::testMigrateShortcuts()
{
writeOldConfig(u"kazv/shortcutsrc"_s, u"Shortcuts"_s,
{{u"switch-account"_s,
QVariant::fromValue(QStringList{u"Meta+Tab"_s, u"Alt+1"_s})},
{u"hard-logout"_s, QVariant::fromValue(QStringList{u"Ctrl+L"_s})}});
KazvConfig config;
QCOMPARE(config.shortcutForAction(u"switch-account"_s),
(QStringList{u"Meta+Tab"_s, u"Alt+1"_s}));
QCOMPARE(config.shortcutForAction(u"hard-logout"_s),
QStringList{u"Ctrl+L"_s});
QVERIFY(!QFile::exists(configFilePath(u"kazv/shortcutsrc"_s)));
}
void KazvConfigTest::testMigratePreservesExistingNewConfig()
{
{
KazvConfig config;
config.setCacheDirectory(u"/new/cache"_s);
}
writeOldConfig(u"kazv/cacheDirectoryrc"_s, u"CacheDirectory"_s,
{{u"cacheDirectory"_s, u"/old/cache"_s}});
KazvConfig config;
QCOMPARE(config.cacheDirectory(), u"/new/cache"_s);
QVERIFY(!QFile::exists(configFilePath(u"kazv/cacheDirectoryrc"_s)));
}
void KazvConfigTest::testMigrateShortcutsPreservesExistingNewConfig()
{
{
KazvConfig config;
config.setShortcutForAction(u"switch-account"_s, (QStringList{u"Ctrl+K"_s}));
}
writeOldConfig(u"kazv/shortcutsrc"_s, u"Shortcuts"_s,
{{u"switch-account"_s, QVariant::fromValue(QStringList{u"Ctrl+J"_s})},
{u"hard-logout"_s, QVariant::fromValue(QStringList{u"Ctrl+L"_s})}});
KazvConfig config;
QCOMPARE(config.shortcutForAction(u"switch-account"_s), (QStringList{u"Ctrl+K"_s}));
QCOMPARE(config.shortcutForAction(u"hard-logout"_s), (QStringList{u"Ctrl+L"_s}));
QVERIFY(!QFile::exists(configFilePath(u"kazv/shortcutsrc"_s)));
}
void KazvConfigTest::testMigrateLastSession()
{
writeOldConfig(u"kazvsessionrc"_s, u"Sessions"_s,
{{u"lastSession"_s, u"session1"_s}});
KazvConfig config;
QCOMPARE(config.lastSession(), u"session1"_s);
QVERIFY(!QFile::exists(configFilePath(u"kazvsessionrc"_s)));
}
void KazvConfigTest::testMigrateLastSessionPreservesExistingNewConfig()
{
{
const KSharedConfigPtr newConfig = KSharedConfig::openConfig(
u"kazvsessionrc"_s, KConfig::FullConfig,
QStandardPaths::AppConfigLocation);
KConfigGroup newGroup{newConfig, u"Sessions"_s};
newGroup.writeEntry(u"lastSession"_s, u"newsession"_s);
QVERIFY(newConfig->sync());
}
writeOldConfig(u"kazvsessionrc"_s, u"Sessions"_s,
{{u"lastSession"_s, u"oldsession"_s}});
KazvConfig config;
QCOMPARE(config.lastSession(), u"newsession"_s);
QVERIFY(!QFile::exists(configFilePath(u"kazvsessionrc"_s)));
}
void KazvConfigTest::testNoOldConfig()
{
KazvConfig config;
- QCOMPARE(config.cacheDirectory(), QString());
+ QCOMPARE(config.cacheDirectory(), QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
QCOMPARE(config.shortcutForAction(u"switch-account"_s), QStringList());
QCOMPARE(config.lastSession(), QString());
}
QTEST_MAIN(KazvConfigTest)
#include "kazv-config-test.moc"

File Metadata

Mime Type
text/x-diff
Expires
Sun, Aug 30, 5:43 PM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1738096
Default Alt Text
(6 KB)

Event Timeline