Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85651320
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
Mode
rK kazv
Attached
Detach File
Event Timeline
Log In to Comment