In my continuing mission to make the frameworks green on Jenkins:

This makes the tests work even when not installed, even when kde4support
is installed to a separate prefix to the rest of frameworks (as it is on
Jenkins -- although this setup is dangerous for *real* users of
KStandardDirs).

The one bit that is still failing is testSetXdgDataDirs() and
testRestrictedResources(), which both fail for the same reason.

Basically, the test checks that
 CMAKE_INSTALL_PREFIX "/share/applications/"
is in the xdgdata-apps resource.  However, KStandardDirs puts
 CMAKE_INSTALL_PREFIX "/share/applications/kde5/"
in the xdgdata-apps resource.

Which is right: the test or KStandardDirs?

Alex
diff --git a/autotests/kstandarddirstest.cpp b/autotests/kstandarddirstest.cpp
index 3455b74..27c648d 100644
--- a/autotests/kstandarddirstest.cpp
+++ b/autotests/kstandarddirstest.cpp
@@ -45,16 +45,40 @@ QTEST_GUILESS_MAIN(KStandarddirsTest)
 #define EXT ""
 #endif
 
+void KStandarddirsTest::init()
+{
+    QVERIFY(m_configHome.contains(".kde-unit-test"));
+    QVERIFY(m_dataHome.contains(".kde-unit-test"));
+    // delete and recreate
+    QDir(m_configHome).removeRecursively();
+    QDir(m_dataHome).removeRecursively();
+    QDir::root().mkpath(m_configHome);
+    QDir::root().mkpath(m_dataHome);
+}
+
+void KStandarddirsTest::cleanup()
+{
+    QVERIFY(m_configHome.contains(".kde-unit-test"));
+    QVERIFY(m_dataHome.contains(".kde-unit-test"));
+    QDir(m_configHome).removeRecursively();
+    QDir(m_dataHome).removeRecursively();
+}
+
 void KStandarddirsTest::initTestCase()
 {
+    QDir::home().mkpath(QLatin1String(".kde-unit-test/xdg/config"));
     m_configHome = QDir::homePath() + QLatin1String("/.kde-unit-test/xdg/config");
     qputenv("XDG_CONFIG_HOME", QFile::encodeName(m_configHome));
 
+    QDir::home().mkpath(QLatin1String(".kde-unit-test/xdg/local"));
     m_dataHome = QDir::homePath() + QLatin1String("/.kde-unit-test/xdg/local");
     qputenv("XDG_DATA_HOME", QFile::encodeName(m_dataHome));
 
-    const QString configDirs = QDir::currentPath() + "/xdg";
-    qputenv("XDG_CONFIG_DIRS", QFile::encodeName(configDirs));
+    // make sure we have consistent values for the relevant environment variables
+    // note that the installation prefix will always be included, though
+    qputenv("XDG_CONFIG_DIRS", QFile::encodeName(QFINDTESTDATA("xdg")));
+    qputenv("XDG_DATA_DIRS", QFile::encodeName(QFINDTESTDATA("share")));
+    qputenv("KDEDIRS", QFile::encodeName(QFINDTESTDATA("kdedir")));
 
     QFile::remove(KGlobal::dirs()->saveLocation("config") + "kstandarddirstestrc");
 
@@ -62,8 +86,8 @@ void KStandarddirsTest::initTestCase()
     // data.
     KComponentData mainData("kstandarddirstest");
 
-    // Must initialize KStandardDirs only after all the setenv() calls.
-    QCOMPARE(KGlobal::dirs()->localxdgconfdir(), QString(m_configHome + '/'));
+    // Must initialize KStandardDirs only after all the qputenv() calls.
+    QCOMPARE_PATHS(KGlobal::dirs()->localxdgconfdir(), QString(m_configHome + '/'));
 }
 
 void KStandarddirsTest::testSaveLocation()
@@ -121,21 +145,35 @@ static bool isKde4supportInstalled()
     return QFile::exists(CMAKE_INSTALL_PREFIX "/bin/kf5-config");
 }
 
-void KStandarddirsTest::testFindResource()
+void KStandarddirsTest::testFindResourceInstalled()
 {
-    const QString bin = KGlobal::dirs()->findResource("exe", "kconf_update" EXT);
+    if (!isKde4supportInstalled()) {
+        // We cannot depend on any applications being installed but our own.
+        // In particular, other frameworks may be installed in other locations.
+        QSKIP("kde4support not installed yet");
+    }
+
+    const QString bin = KGlobal::dirs()->findResource("exe", "fileshareset" EXT);
     QVERIFY(!bin.isEmpty());
 #ifdef Q_OS_WIN
-    QVERIFY(bin.endsWith("bin/kconf_update.exe"));
+    QVERIFY2(bin.endsWith("bin/fileshareset.exe"), qPrintable(bin));
 #else
-    QVERIFY(bin.endsWith("kde5/libexec/kconf_update"));
+    QVERIFY2(bin.endsWith("kde5/libexec/fileshareset"), qPrintable(bin));
 #endif
-    QVERIFY(!QDir::isRelativePath(bin));
+    QVERIFY2(!QDir::isRelativePath(bin), qPrintable(bin));
+
+    const QString data = KGlobal::dirs()->findResource("data", "kssl/ca-bundle.crt");
+    QVERIFY(!data.isEmpty());
+    QVERIFY2(!QDir::isRelativePath(data), qPrintable(data));
+    QVERIFY2(data.endsWith("kssl/ca-bundle.crt"), qPrintable(data));
+}
 
-    const QString data = KGlobal::dirs()->findResource("data", "dbus-1/interfaces/org.kde.JobView.xml");
+void KStandarddirsTest::testFindResource()
+{
+    const QString data = KGlobal::dirs()->findResource("data", "testdir1/testdir1.1/testfile1");
     QVERIFY(!data.isEmpty());
-    QVERIFY(data.endsWith(QLatin1String("dbus-1/interfaces/org.kde.JobView.xml")));
-    QVERIFY(!QDir::isRelativePath(data));
+    QVERIFY2(!QDir::isRelativePath(data), qPrintable(data));
+    QCOMPARE_PATHS(data, QFINDTESTDATA("share/testdir1/testdir1.1/testfile1"));
 }
 
 static bool oneEndsWith(const QStringList &lst, const QString &str)
@@ -148,73 +186,89 @@ static bool oneEndsWith(const QStringList &lst, const QString &str)
     return false;
 }
 
-void KStandarddirsTest::testFindAllResources()
+void KStandarddirsTest::testFindAllResourcesInstalled()
 {
-    const QStringList dbusInterfaceFiles = KGlobal::dirs()->findAllResources("data", "dbus-1/interfaces/");
-    QVERIFY(!dbusInterfaceFiles.isEmpty());
-    QVERIFY(dbusInterfaceFiles.count() > 20);   // I have 21 here, installed by kdelibs.
+    if (!isKde4supportInstalled()) {
+        QSKIP("kde4support not installed yet");
+    }
+
+    const QStringList qimageioplugins = KGlobal::dirs()->findAllResources("data", "kde5/services/qimageioplugins/");
+    QVERIFY(!qimageioplugins.isEmpty());
+    QVERIFY2(qimageioplugins.count() >= 15, qPrintable(qimageioplugins.join(","))); // the number installed by kde4support
+    QVERIFY2(oneEndsWith(qimageioplugins, "kde5/services/qimageioplugins/jpeg.desktop"), qPrintable(qimageioplugins.join(",")));
+
+    const QStringList configFiles = KGlobal::dirs()->findAllResources("config");
+    QVERIFY(!configFiles.isEmpty());
+    QVERIFY2(oneEndsWith(configFiles, "etc/xdg/kdebugrc"), qPrintable(configFiles.join(",")));
+    QVERIFY2(oneEndsWith(configFiles, "etc/xdg/kdebug.areas"), qPrintable(configFiles.join(",")));
+    QVERIFY2(oneEndsWith(configFiles, "etc/xdg/ksslcalist"), qPrintable(configFiles.join(",")));
+    QVERIFY2(!oneEndsWith(configFiles, "etc/xdg/colors/Web.colors"), qPrintable(configFiles.join(","))); // recursive was false
+}
 
-    // Create a local config file, the file will be used as expected result
-    const QString localConfigFile = m_configHome + "/foorc";
+QString KStandarddirsTest::createLocalConfig(const QString &name)
+{
+    const QString localConfigFile = m_configHome + "/" + name;
     QFile::remove(localConfigFile);
-    KConfig foorc("foorc");
-    KConfigGroup dummyGroup(&foorc, "Dummy");
+    KConfig config(name);
+    KConfigGroup dummyGroup(&config, "Dummy");
     dummyGroup.writeEntry("someEntry", true);
     dummyGroup.sync();
+    return localConfigFile;
+}
+
+void KStandarddirsTest::testFindAllResources()
+{
+    const QStringList testdir1Files = KGlobal::dirs()->findAllResources("data", "testdir1/testdir1.1/");
+    QVERIFY(!testdir1Files.isEmpty());
+    QVERIFY2(testdir1Files.contains(QFINDTESTDATA("share/testdir1/testdir1.1/testfile1")), qPrintable(testdir1Files.join(",")));
+    QVERIFY2(testdir1Files.contains(QFINDTESTDATA("share/testdir1/testdir1.1/testfile2")), qPrintable(testdir1Files.join(",")));
+
+    const QString localConfigFile = createLocalConfig("foorc");
     QVERIFY2(QFile::exists(localConfigFile), qPrintable(localConfigFile));
 
-    const QStringList configFiles = KGlobal::dirs()->findAllResources("config");
-    QVERIFY(!configFiles.isEmpty());
-    QVERIFY(configFiles.count() > 5);   // I have 9 here
-    QVERIFY(oneEndsWith(configFiles, "etc/xdg/kdebugrc"));
-    QVERIFY(oneEndsWith(configFiles, "kde-unit-test/xdg/config/foorc"));
-    QVERIFY(!oneEndsWith(configFiles, "etc/xdg/colors/Web.colors"));     // recursive was false
+    {
+        const QStringList configFiles = KGlobal::dirs()->findAllResources("config");
+        QVERIFY(!configFiles.isEmpty());
+        QVERIFY2(configFiles.contains(QFINDTESTDATA("xdg/test1rc")), qPrintable(configFiles.join(",")));
+        QVERIFY2(configFiles.contains(QFINDTESTDATA("xdg/testcnf1")), qPrintable(configFiles.join(",")));
+        QVERIFY2(!configFiles.contains(QFINDTESTDATA("xdg/testcnfdir/test2rc")), qPrintable(configFiles.join(","))); // recursive was false
+        QVERIFY2(!configFiles.contains(QFINDTESTDATA("xdg/testcnfdir/testcnf2")), qPrintable(configFiles.join(","))); // recursive was false
+        QVERIFY2(configFiles.contains(localConfigFile), qPrintable(configFiles.join(",")));
+    }
 
     {
         const QStringList configFilesRecursive = KGlobal::dirs()->findAllResources("config", QString(),
                 KStandardDirs::Recursive);
         QVERIFY(!configFilesRecursive.isEmpty());
-        QVERIFY(configFilesRecursive.count() > 5);   // I have 15 here
-        QVERIFY(oneEndsWith(configFilesRecursive, "etc/xdg/kdebugrc"));
-        QVERIFY(oneEndsWith(configFilesRecursive, "etc/xdg/colors/Web.colors"));     // proves that recursive worked
+        QVERIFY2(configFilesRecursive.contains(QFINDTESTDATA("xdg/test1rc")), qPrintable(configFilesRecursive.join(",")));
+        QVERIFY2(configFilesRecursive.contains(QFINDTESTDATA("xdg/testcnf1")), qPrintable(configFilesRecursive.join(",")));
+        QVERIFY2(configFilesRecursive.contains(QFINDTESTDATA("xdg/testcnfdir/test2rc")), qPrintable(configFilesRecursive.join(",")));
+        QVERIFY2(configFilesRecursive.contains(QFINDTESTDATA("xdg/testcnfdir/testcnf2")), qPrintable(configFilesRecursive.join(",")));
+        QVERIFY2(configFilesRecursive.contains(localConfigFile), qPrintable(configFilesRecursive.join(",")));
     }
 
     {
         const QStringList configFilesRecursiveWithFilter = KGlobal::dirs()->findAllResources("config", "*rc",
                 KStandardDirs::Recursive);
         QVERIFY(!configFilesRecursiveWithFilter.isEmpty());
-        //qDebug() << configFilesRecursiveWithFilter;
-        QVERIFY(configFilesRecursiveWithFilter.count() >= 3);   // foorc, kdebugrc, ui/ui_standards.rc
-        QVERIFY(oneEndsWith(configFilesRecursiveWithFilter, "kde-unit-test/xdg/config/foorc"));
-        QVERIFY(oneEndsWith(configFilesRecursiveWithFilter, "etc/xdg/kdebugrc"));
-        QVERIFY(oneEndsWith(configFilesRecursiveWithFilter, "etc/xdg/ui/ui_standards.rc"));
-        QVERIFY(!oneEndsWith(configFilesRecursiveWithFilter, "etc/xdg/colors/Web.colors"));     // didn't match the filter
+        QVERIFY2(configFilesRecursiveWithFilter.contains(QFINDTESTDATA("xdg/test1rc")), qPrintable(configFilesRecursiveWithFilter.join(",")));
+        QVERIFY2(!configFilesRecursiveWithFilter.contains(QFINDTESTDATA("xdg/testcnf1")), qPrintable(configFilesRecursiveWithFilter.join(","))); // did not match
+        QVERIFY2(configFilesRecursiveWithFilter.contains(QFINDTESTDATA("xdg/testcnfdir/test2rc")), qPrintable(configFilesRecursiveWithFilter.join(",")));
+        QVERIFY2(!configFilesRecursiveWithFilter.contains(QFINDTESTDATA("xdg/testcnfdir/testcnf2")), qPrintable(configFilesRecursiveWithFilter.join(","))); // did not match
+        QVERIFY2(configFilesRecursiveWithFilter.contains(localConfigFile), qPrintable(configFilesRecursiveWithFilter.join(",")));
     }
 
     {
         QStringList fileNames;
         const QStringList configFilesWithFilter = KGlobal::dirs()->findAllResources("config", "*rc", KStandardDirs::NoDuplicates, fileNames);
         QVERIFY(!configFilesWithFilter.isEmpty());
-        QVERIFY2(configFilesWithFilter.count() >= 2, qPrintable(configFilesWithFilter.join(",")));
-        QVERIFY(oneEndsWith(configFilesWithFilter, "kde-unit-test/xdg/config/foorc"));
-        QVERIFY(oneEndsWith(configFilesWithFilter, "kdebugrc"));     // either global (etc/xdg/) or local (XDG_HOME)
-        QVERIFY(!oneEndsWith(configFilesWithFilter, "etc/xdg/ui/ui_standards.rc"));     // recursive not set
-        QVERIFY(!oneEndsWith(configFilesWithFilter, "etc/xdg/accept-languages.codes"));     // didn't match the filter
-        QCOMPARE(fileNames.count(), configFilesWithFilter.count());
-        QVERIFY(fileNames.contains("kdebugrc"));
-    }
-
-#if 0
-    list = t.findAllResources("html", "en/*/index.html", false);
-    for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it) {
-        kDebug() << "docs " << (*it).toLatin1().constData();
-    }
-
-    list = t.findAllResources("html", "*/*/*.html", false);
-    for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it) {
-        kDebug() << "docs " << (*it).toLatin1().constData();
+        QVERIFY2(configFilesWithFilter.contains(QFINDTESTDATA("xdg/test1rc")), qPrintable(configFilesWithFilter.join(",")));
+        QVERIFY2(!configFilesWithFilter.contains(QFINDTESTDATA("xdg/testcnf1")), qPrintable(configFilesWithFilter.join(","))); // did not match
+        QVERIFY2(!configFilesWithFilter.contains(QFINDTESTDATA("xdg/testcnfdir/test2rc")), qPrintable(configFilesWithFilter.join(","))); // no recursion
+        QVERIFY2(!configFilesWithFilter.contains(QFINDTESTDATA("xdg/testcnfdir/testcnf2")), qPrintable(configFilesWithFilter.join(","))); // did not match
+        QCOMPARE_PATHS(fileNames.count(), configFilesWithFilter.count());
+        QVERIFY2(fileNames.contains("test1rc"), qPrintable(fileNames.join(",")));
     }
-#endif
 }
 
 void KStandarddirsTest::testFindAllResourcesNewDir()
@@ -232,70 +286,68 @@ void KStandarddirsTest::testFindAllResourcesNewDir()
     file.close();
 
     const int newCount = KGlobal::dirs()->findAllResources("data", "cmake/modules/").count();
-    QCOMPARE(newCount, origCount + 1);
+    QCOMPARE_PATHS(newCount, origCount + 1);
     file.remove();
     QDir().rmpath(dir);
 }
 
 void KStandarddirsTest::testFindDirs()
 {
-    const QString t = KStandardDirs::locateLocal("data", "kconf_update/");
-    QCOMPARE(t, QString(m_dataHome + "/kconf_update/"));
-    const QStringList dirs = KGlobal::dirs()->findDirs("data", "kconf_update");
+    QDir localDataDir(m_dataHome);
+    localDataDir.mkdir("testdir1");
+    QString localTestDir1 = m_dataHome + "/testdir1/";
+    const QString t = KStandardDirs::locateLocal("data", "testdir1/");
+    QCOMPARE_PATHS(t, localTestDir1);
+    const QStringList dirs = KGlobal::dirs()->findDirs("data", "testdir1");
     QVERIFY(!dirs.isEmpty());
-    QVERIFY2(dirs.count() >= 2, qPrintable(dirs.join(","))); // at least local and global
+    QVERIFY2(dirs.contains(localTestDir1), qPrintable(dirs.join(",")));
+    QVERIFY2(dirs.contains(QFINDTESTDATA("share/testdir1/")), qPrintable(dirs.join(",")));
     //qDebug() << dirs;
 }
 
 void KStandarddirsTest::testFindResourceDir()
 {
+    createLocalConfig("foorc");
     const QString configDir = KGlobal::dirs()->findResourceDir("config", "foorc");
     QVERIFY(!configDir.isEmpty());
     QVERIFY2(configDir.endsWith(QLatin1String("/xdg/config/")), qPrintable(configDir));
 }
 
-void KStandarddirsTest::testFindExeLibExec()
+void KStandarddirsTest::testFindExe()
 {
-#ifndef Q_OS_UNIX
-    QSKIP("non-UNIX system");
-#endif
     if (!isKde4supportInstalled()) {
-        // KStandardDirs::findExe only finds libexec executables in the installed location
         QSKIP("kde4support not installed");
     }
 
-    // findExe with a result in libexec
-    const QString libexe = KGlobal::dirs()->findExe("fileshareset");
-    QVERIFY(!libexe.isEmpty());
-    QVERIFY(libexe.endsWith(LIB_INSTALL_DIR "/kde5/libexec/fileshareset" EXT, PATH_SENSITIVITY));
-}
-
-void KStandarddirsTest::testFindExe()
-{
     // findExe with a result in bin
-    const QString binexe = KGlobal::dirs()->findExe("kconfig_compiler");
+    const QString binexe = KGlobal::dirs()->findExe("kf5-config");
     QVERIFY(!binexe.isEmpty());
 #ifdef Q_OS_MAC
-    QVERIFY2(binexe.endsWith("kconfig_compiler", PATH_SENSITIVITY), qPrintable(binexe));
+    QVERIFY2(binexe.endsWith("kf5-config", PATH_SENSITIVITY), qPrintable(binexe));
 #else
-    QVERIFY2(binexe.endsWith("bin/kconfig_compiler" EXT, PATH_SENSITIVITY), qPrintable(binexe));
+    QVERIFY2(binexe.endsWith("bin/kf5-config" EXT, PATH_SENSITIVITY), qPrintable(binexe));
 #endif
 
 #ifndef Q_OS_MAC // kconfig_compiler is a bundle on Mac, so the below doesn't work
     // Check the "exe" resource too
     QString binexePath1 = KStandardDirs::realFilePath(binexe);
-    QString binexePath2 = KGlobal::dirs()->locate("exe", "kconfig_compiler");
+    QString binexePath2 = KGlobal::dirs()->locate("exe", "kf5-config");
     QCOMPARE_PATHS(binexePath1, binexePath2);
 
     // Check realFilePath behavior with complete command lines, like KRun does
     const QString cmd = binexe + " -c foo -x bar";
     const QString fromKStdDirs = KStandardDirs::realFilePath(cmd);
-    QCOMPARE(fromKStdDirs, cmd);
+    QCOMPARE_PATHS(fromKStdDirs, cmd);
     const QString fromQFileInfo = QFileInfo(cmd).canonicalFilePath();
     QVERIFY(fromQFileInfo.isEmpty()); // !! different result, since this doesn't exist as a file
 #endif
 
 #ifdef Q_OS_UNIX
+    // findExe with a result in libexec
+    const QString libexe = KGlobal::dirs()->findExe("fileshareset");
+    QVERIFY(!libexe.isEmpty());
+    QVERIFY(libexe.endsWith(LIB_INSTALL_DIR "/kde5/libexec/fileshareset" EXT, PATH_SENSITIVITY));
+
     // locate("exe") with a result in libexec
     const QString locateLibExe = KGlobal::dirs()->locate("exe", "fileshareset");
     QVERIFY(locateLibExe.endsWith(LIB_INSTALL_DIR "/kde5/libexec/fileshareset" EXT, PATH_SENSITIVITY));
@@ -340,26 +392,14 @@ void KStandarddirsTest::testFindExe()
 
 void KStandarddirsTest::testLocate()
 {
-    QString textPlain = "text/x-patch.xml";
-    Q_FOREACH (const QString &path, KGlobal::dirs()->resourceDirs("xdgdata-mime")) {
-        if (QFile::exists(path + textPlain)) {
-            textPlain = path + textPlain;
-            break;
-        }
-    }
-    if (textPlain == "text/x-patch.xml") {
-        QSKIP("xdg-share-mime not installed");
-    }
-
-    const QString res = KGlobal::dirs()->locate("xdgdata-mime", "text/x-patch.xml");
-    QCOMPARE_PATHS(res, textPlain);
+    const QString res = KGlobal::dirs()->locate("xdgdata-mime", "text/x-kstddirsunittest.xml");
+    QCOMPARE_PATHS(res, QFINDTESTDATA("share/mime/text/x-kstddirsunittest.xml"));
 }
 
 void KStandarddirsTest::testRelativeLocation()
 {
-    const QString file = "kdebugrc";
-    QString located = KGlobal::dirs()->locate("config", file);
-    QCOMPARE_PATHS(KGlobal::dirs()->relativeLocation("config", located), file);
+    QCOMPARE_PATHS(KGlobal::dirs()->relativeLocation("config", QFINDTESTDATA("xdg/test1rc")), "test1rc");
+    QCOMPARE_PATHS(KGlobal::dirs()->relativeLocation("config", QFINDTESTDATA("xdg/testcnfdir/test2rc")), "testcnfdir/test2rc");
 }
 
 void KStandarddirsTest::testAddResourceType()
@@ -368,26 +408,25 @@ void KStandarddirsTest::testAddResourceType()
         QSKIP("kde4support not installed");
     }
 
-    QString ret = KStandardDirs::locate("dtd", "customization/catalog.xml");
-    QCOMPARE(ret, QString()); // normal, there's no "dtd" resource in kstandarddirs by default
+    QDir(m_dataHome).mkpath("testdir1");
 
-    KGlobal::dirs()->addResourceType("dtd", "data", "ksgmltools2/");
-    ret = KStandardDirs::locate("dtd", "customization/catalog.xml");
+    QString ret = KStandardDirs::locate("testd", "testdir1.1/testfile1");
+    QCOMPARE(ret, QString()); // normal, there's no "testd" resource in kstandarddirs by default
+
+    KGlobal::dirs()->addResourceType("testd", "data", "testdir1/");
+    ret = KStandardDirs::locate("testd", "testdir1.1/testfile1");
     QVERIFY(!ret.isEmpty());
 
-    ret = KStandardDirs::locate("dtd", "customization/kde-chunk.xsl");
+    ret = KStandardDirs::locate("testd", "testdir1.1/testfile2");
     QVERIFY(!ret.isEmpty());
 
-    const QStringList files = KGlobal::dirs()->findAllResources("dtd", "customization/*", KStandardDirs::NoDuplicates);
-    QVERIFY(files.count() > 2);
+    const QStringList files = KGlobal::dirs()->findAllResources("testd", "testdir1.1/*", KStandardDirs::NoDuplicates);
+    QCOMPARE(files.count(), 2);
 
-    KGlobal::dirs()->addResourceType("xdgdata-ontology", 0, "ontology");
-    const QStringList ontologyDirs = KGlobal::dirs()->resourceDirs("xdgdata-ontology");
-    QCOMPARE(ontologyDirs.first(), KStandardDirs::realPath(QString(qgetenv("XDG_DATA_HOME")) + "/ontology/"));
-    if (QFile::exists("/usr/share/ontology") &&
-            QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).contains("/usr/share")) {
-        QVERIFY(ontologyDirs.contains("/usr/share/ontology/"));
-    }
+    const QStringList dirs = KGlobal::dirs()->resourceDirs("testd");
+    QVERIFY(!dirs.isEmpty());
+    QVERIFY2(dirs.contains(QFINDTESTDATA("share/testdir1/")), qPrintable(dirs.join(",")));
+    QVERIFY2(dirs.contains(m_dataHome + "/testdir1/"), qPrintable(dirs.join(",")));
 }
 
 void KStandarddirsTest::testAddResourceDir()
@@ -510,18 +549,18 @@ void KStandarddirsTest::testSymlinkResolution()
     // The issue at this point is that saveLoc does not actually exist yet.
     QVERIFY(QDir(saveLoc).canonicalPath().isEmpty()); // this is why we can't use canonicalPath
     QVERIFY(!QFile::exists(saveLoc));
-    QCOMPARE(saveLoc, KStandardDirs::realPath(saveLoc)); // must be resolved
-    QCOMPARE(saveLoc, expected);
+    QCOMPARE_PATHS(saveLoc, KStandardDirs::realPath(saveLoc)); // must be resolved
+    QCOMPARE_PATHS(saveLoc, expected);
     QVERIFY(QDir(baseDir).mkpath("real/test")); // KConfig calls mkdir on its own, we simulate that here
     const QString sameSaveLoc = KGlobal::dirs()->resourceDirs("david").first();
-    QCOMPARE(sameSaveLoc, saveLoc);
-    QCOMPARE(sameSaveLoc, KGlobal::dirs()->saveLocation("david"));
+    QCOMPARE_PATHS(sameSaveLoc, saveLoc);
+    QCOMPARE_PATHS(sameSaveLoc, KGlobal::dirs()->saveLocation("david"));
 
     // While we're here...
-    QCOMPARE(KStandardDirs::realPath(QString()), QString());
-    QCOMPARE(KStandardDirs::realPath(QString("/")), QString("/"));
+    QCOMPARE_PATHS(KStandardDirs::realPath(QString()), QString());
+    QCOMPARE_PATHS(KStandardDirs::realPath(QString("/")), QString("/"));
 
-    QCOMPARE(KStandardDirs::realPath(QString("/does_not_exist/")), QString("/does_not_exist/"));
+    QCOMPARE_PATHS(KStandardDirs::realPath(QString("/does_not_exist/")), QString("/does_not_exist/"));
 #endif
 }
 
diff --git a/autotests/kstandarddirstest.h b/autotests/kstandarddirstest.h
index fb1058d..4417257 100644
--- a/autotests/kstandarddirstest.h
+++ b/autotests/kstandarddirstest.h
@@ -26,18 +26,21 @@ class KStandarddirsTest : public QObject
     Q_OBJECT
 private Q_SLOTS:
     void initTestCase();
+    void init();
+    void cleanup();
     void testSaveLocation();
     void testLocateLocal();
     void testResourceDirs();
     void testAppData();
     void testChangeSaveLocation();
+    void testFindResourceInstalled();
     void testFindResource();
     void testFindAllResources();
+    void testFindAllResourcesInstalled();
     void testFindAllResourcesNewDir();
     void testFindDirs();
     void testFindResourceDir();
     void testFindExe();
-    void testFindExeLibExec();
     void testLocate();
     void testRelativeLocation();
     void testAddResourceType();
@@ -48,6 +51,8 @@ private Q_SLOTS:
     void testThreads();
 
 private:
+    QString createLocalConfig(const QString &name);
+
     QString m_configHome;
     QString m_dataHome;
 };
diff --git a/autotests/share/dbus-1/interfaces/org.kde.JobView.xml b/autotests/share/dbus-1/interfaces/org.kde.JobView.xml
new file mode 100644
index 0000000..f64d232
--- /dev/null
+++ b/autotests/share/dbus-1/interfaces/org.kde.JobView.xml
@@ -0,0 +1,50 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>
+<node>
+  <interface name="org.kde.JobView">
+    <method name="terminate">
+      <arg name="errorMessage" type="s" direction="in"/>
+      <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
+    </method>
+    <method name="setSuspended">
+      <arg name="suspended" type="b" direction="in"/>
+      <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
+    </method>
+    <method name="setTotalAmount">
+      <arg name="amount" type="t" direction="in"/>
+      <arg name="unit" type="s" direction="in"/>
+      <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
+    </method>
+    <method name="setProcessedAmount">
+      <arg name="amount" type="t" direction="in"/>
+      <arg name="unit" type="s" direction="in"/>
+      <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
+    </method>
+    <method name="setPercent">
+      <arg name="percent" type="u" direction="in"/>
+      <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
+    </method>
+    <method name="setSpeed">
+      <arg name="bytesPerSecond" type="t" direction="in"/>
+      <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
+    </method>
+    <method name="setInfoMessage">
+      <arg name="message" type="s" direction="in"/>
+      <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
+    </method>
+    <method name="setDescriptionField">
+      <arg name="number" type="u" direction="in"/>
+      <arg name="name" type="s" direction="in"/>
+      <arg name="value" type="s" direction="in"/>
+      <arg name="res" type="b" direction="out"/>
+    </method>
+    <method name="clearDescriptionField">
+      <arg name="number" type="u" direction="in"/>
+      <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
+    </method>
+
+    <signal name="suspendRequested"/>
+    <signal name="resumeRequested"/>
+    <signal name="cancelRequested"/>
+  </interface>
+</node>
diff --git a/autotests/share/dbus-1/interfaces/org.kde.KMediaPlayer.xml b/autotests/share/dbus-1/interfaces/org.kde.KMediaPlayer.xml
new file mode 100644
index 0000000..40b11c4
--- /dev/null
+++ b/autotests/share/dbus-1/interfaces/org.kde.KMediaPlayer.xml
@@ -0,0 +1,26 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>
+<node>
+  <interface name="org.kde.KMediaPlayer">
+    <method name="openUrl">
+      <arg name="file" type="s" direction="in"/>
+      <arg type="b" direction="out"/>
+    </method>
+    <method name="pause"/>
+    <method name="play"/>
+    <method name="stop"/>
+    <method name="seek">
+      <arg name="msec" type="x" direction="in"/>
+    </method>
+    <property name="seekable" type="b" access="read">
+      <annotation name="com.trolltech.QtDBus.propertyGetter" value="isSeekable"/>
+    </property>
+    <property name="position" type="x" access="read"/>
+    <property name="hasLength" type="b" access="read"/>
+    <property name="length" type="x" access="read"/>
+    <property name="looping" type="b" access="readwrite">
+      <annotation name="com.trolltech.QtDBus.propertyGetter" value="isLooping"/>
+    </property>
+    <property name="state" type="i" access="readwrite"/>
+  </interface>
+</node>
diff --git a/autotests/share/mime/text/x-kstddirsunittest.xml b/autotests/share/mime/text/x-kstddirsunittest.xml
new file mode 100644
index 0000000..88a7921
--- /dev/null
+++ b/autotests/share/mime/text/x-kstddirsunittest.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info"; type="text/x-kstddirsunittest">
+</mime-type>
diff --git a/autotests/share/testdir1/testdir1.1/testfile1 b/autotests/share/testdir1/testdir1.1/testfile1
new file mode 100644
index 0000000..e9373cd
--- /dev/null
+++ b/autotests/share/testdir1/testdir1.1/testfile1
@@ -0,0 +1 @@
+testfile1
diff --git a/autotests/share/testdir1/testdir1.1/testfile2 b/autotests/share/testdir1/testdir1.1/testfile2
new file mode 100644
index 0000000..7d57647
--- /dev/null
+++ b/autotests/share/testdir1/testdir1.1/testfile2
@@ -0,0 +1 @@
+testfile2
diff --git a/autotests/xdg/test1rc b/autotests/xdg/test1rc
new file mode 100644
index 0000000..4d6cf3d
--- /dev/null
+++ b/autotests/xdg/test1rc
@@ -0,0 +1,2 @@
+[Dummy]
+someEntry=true
diff --git a/autotests/xdg/testcnf1 b/autotests/xdg/testcnf1
new file mode 100644
index 0000000..4d6cf3d
--- /dev/null
+++ b/autotests/xdg/testcnf1
@@ -0,0 +1,2 @@
+[Dummy]
+someEntry=true
diff --git a/autotests/xdg/testcnfdir/test2rc b/autotests/xdg/testcnfdir/test2rc
new file mode 100644
index 0000000..4d6cf3d
--- /dev/null
+++ b/autotests/xdg/testcnfdir/test2rc
@@ -0,0 +1,2 @@
+[Dummy]
+someEntry=true
diff --git a/autotests/xdg/testcnfdir/testcnf2 b/autotests/xdg/testcnfdir/testcnf2
new file mode 100644
index 0000000..4d6cf3d
--- /dev/null
+++ b/autotests/xdg/testcnfdir/testcnf2
@@ -0,0 +1,2 @@
+[Dummy]
+someEntry=true
_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to