mirror of https://github.com/cutefishos/settings
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.1 KiB
C++
74 lines
3.1 KiB
C++
#include "mimeapps.h"
|
|
#include "defaultapplications.h"
|
|
#include "applicationregistry.h"
|
|
#include <QFile>
|
|
#include <QSettings>
|
|
#include <QTemporaryDir>
|
|
#include <QtTest>
|
|
|
|
class MimeAppsTest : public QObject
|
|
{
|
|
Q_OBJECT
|
|
private slots:
|
|
|
|
void settingsWritesStandardAssociations()
|
|
{
|
|
QTemporaryDir dir;
|
|
QVERIFY(dir.isValid());
|
|
qputenv("XDG_CONFIG_HOME", dir.path().toUtf8());
|
|
qputenv("XDG_DATA_HOME", dir.path().toUtf8());
|
|
qputenv("XDG_DATA_DIRS", dir.path().toUtf8());
|
|
const QString path = dir.filePath("mimeapps.list");
|
|
{
|
|
QSettings legacy(path, QSettings::IniFormat);
|
|
legacy.beginGroup("Default Applications");
|
|
legacy.setValue("x-scheme-handler/http", "other.desktop;");
|
|
}
|
|
|
|
auto *registry = ApplicationRegistry::instance();
|
|
QTRY_VERIFY(!registry->loading());
|
|
DesktopEntryData browser;
|
|
DesktopEntryData email;
|
|
DesktopEntryData terminal;
|
|
QVERIFY(DesktopEntry::parse(
|
|
"browser", "/applications/browser.desktop",
|
|
"[Desktop Entry]\nType=Application\nName=Browser\nExec=browser %U\n"
|
|
"Categories=WebBrowser;\nMimeType=x-scheme-handler/http;\n", &browser));
|
|
QVERIFY(DesktopEntry::parse(
|
|
"email", "/applications/email.desktop",
|
|
"[Desktop Entry]\nType=Application\nName=Email\nExec=email %U\n"
|
|
"Categories=Email;\nMimeType=x-scheme-handler/mailto;\n", &email));
|
|
QVERIFY(DesktopEntry::parse(
|
|
"terminal", "/applications/terminal.desktop",
|
|
"[Desktop Entry]\nType=Application\nName=Terminal\nExec=terminal\n"
|
|
"Categories=TerminalEmulator;\n", &terminal));
|
|
registry->applyScan({browser, email, terminal});
|
|
DefaultApplications settings;
|
|
QCOMPARE(settings.browserList().size(), 1);
|
|
QCOMPARE(settings.emailList().size(), 1);
|
|
QCOMPARE(settings.terminalList().size(), 1);
|
|
settings.setDefaultBrowser(0);
|
|
settings.setDefaultEMail(0);
|
|
settings.setDefaultTerminal(0);
|
|
QCOMPARE(settings.browserIndex(), 0);
|
|
QCOMPARE(settings.emailIndex(), 0);
|
|
QCOMPARE(MimeApps::associations(path, "Default Applications", "x-scheme-handler/http"),
|
|
QStringList {"browser.desktop"});
|
|
QCOMPARE(MimeApps::associations(path, "Default Applications", "x-scheme-handler/https"),
|
|
QStringList {"browser.desktop"});
|
|
QCOMPARE(MimeApps::associations(path, "Default Applications", "x-scheme-handler/mailto"),
|
|
QStringList {"email.desktop"});
|
|
QFile file(path);
|
|
QVERIFY(file.open(QIODevice::ReadOnly));
|
|
QVERIFY(file.readAll().contains("x-scheme-handler/http=browser.desktop;"));
|
|
QCOMPARE(MimeApps::defaultTerminal(dir.filePath("xdg-terminals.list")),
|
|
QStringLiteral("terminal.desktop"));
|
|
DefaultApplications reopened;
|
|
QCOMPARE(reopened.browserIndex(), 0);
|
|
QCOMPARE(reopened.emailIndex(), 0);
|
|
QCOMPARE(reopened.terminalIndex(), 0);
|
|
}
|
|
};
|
|
QTEST_GUILESS_MAIN(MimeAppsTest)
|
|
#include "tst_mimeapps.moc"
|