File indexing completed on 2024-05-12 05:52:03
0001 /* 0002 SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullmann@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "session_manager_test.h" 0008 #include "kateapp.h" 0009 #include "katesessionmanager.h" 0010 0011 #include <KConfig> 0012 #include <KLocalizedString> 0013 0014 #include <QCommandLineParser> 0015 #include <QTemporaryDir> 0016 #include <QtTestWidgets> 0017 0018 QTEST_MAIN(KateSessionManagerTest) 0019 0020 KateSessionManagerTest::KateSessionManagerTest() 0021 { 0022 // ensure ui file can be found and the translation domain is set to avoid warnings 0023 qApp->setApplicationName(QStringLiteral("kate")); 0024 KLocalizedString::setApplicationDomain(QByteArrayLiteral("kate")); 0025 0026 m_tempdir = new QTemporaryDir; 0027 QVERIFY(m_tempdir->isValid()); 0028 0029 // ensure we use some dummy config 0030 KConfig::setMainConfigName(m_tempdir->path() + QStringLiteral("/testconfigfilerc")); 0031 0032 // create KWrite variant to avoid plugin loading! 0033 static QCommandLineParser parser; 0034 m_app = new KateApp(parser, KateApp::ApplicationKWrite, m_tempdir->path()); 0035 m_app->sessionManager()->activateAnonymousSession(); 0036 m_manager = m_app->sessionManager(); 0037 } 0038 0039 KateSessionManagerTest::~KateSessionManagerTest() 0040 { 0041 delete m_app; 0042 delete m_tempdir; 0043 } 0044 0045 void KateSessionManagerTest::basic() 0046 { 0047 QCOMPARE(m_manager->sessionsDir(), m_tempdir->path()); 0048 QCOMPARE(m_manager->sessionList().size(), 0); 0049 QVERIFY(m_manager->activateAnonymousSession()); 0050 QVERIFY(m_manager->activeSession()); 0051 } 0052 0053 void KateSessionManagerTest::activateNewNamedSession() 0054 { 0055 const QString sessionName = QStringLiteral("hello_world"); 0056 0057 QVERIFY(m_manager->activateSession(sessionName, false, false)); 0058 QCOMPARE(m_manager->sessionList().size(), 1); 0059 0060 KateSession::Ptr s = m_manager->activeSession(); 0061 QCOMPARE(s->name(), sessionName); 0062 QCOMPARE(s->isAnonymous(), false); 0063 0064 const QString sessionFile = m_tempdir->path() + QLatin1Char('/') + sessionName + QLatin1String(".katesession"); 0065 QCOMPARE(s->config()->name(), sessionFile); 0066 0067 // cleanup again for next test 0068 QVERIFY(m_manager->activateAnonymousSession()); 0069 QVERIFY(m_manager->deleteSession(s)); 0070 QCOMPARE(m_manager->sessionList().size(), 0); 0071 } 0072 0073 void KateSessionManagerTest::anonymousSessionFile() 0074 { 0075 const QString anonfile = QDir().cleanPath(m_tempdir->path() + QLatin1String("/../anonymous.katesession")); 0076 QVERIFY(m_manager->activateAnonymousSession()); 0077 QVERIFY(m_manager->activeSession()->isAnonymous()); 0078 QCOMPARE(m_manager->activeSession()->config()->name(), anonfile); 0079 } 0080 0081 void KateSessionManagerTest::urlizeSessionFile() 0082 { 0083 const QString sessionName = QStringLiteral("hello world/#"); 0084 0085 m_manager->activateSession(sessionName, false, false); 0086 KateSession::Ptr s = m_manager->activeSession(); 0087 0088 const QString sessionFile = m_tempdir->path() + QLatin1String("/hello%20world%2F%23.katesession"); 0089 QCOMPARE(s->config()->name(), sessionFile); 0090 0091 // cleanup again for next test 0092 QVERIFY(m_manager->activateAnonymousSession()); 0093 QVERIFY(m_manager->deleteSession(s)); 0094 QCOMPARE(m_manager->sessionList().size(), 0); 0095 } 0096 0097 void KateSessionManagerTest::renameSession() 0098 { 0099 m_manager->activateSession(QStringLiteral("foo")); 0100 KateSession::Ptr s = m_manager->activeSession(); 0101 0102 QCOMPARE(m_manager->sessionList().size(), 1); 0103 0104 const QString newName = QStringLiteral("bar"); 0105 m_manager->renameSession(s, newName); // non-collision path 0106 QCOMPARE(s->name(), newName); 0107 QCOMPARE(m_manager->sessionList().size(), 1); 0108 QCOMPARE(m_manager->sessionList().first(), s); 0109 0110 // cleanup again for next test 0111 QVERIFY(m_manager->activateAnonymousSession()); 0112 QVERIFY(m_manager->deleteSession(s)); 0113 QCOMPARE(m_manager->sessionList().size(), 0); 0114 } 0115 0116 #include "moc_session_manager_test.cpp"