diff options
-rw-r--r-- | autotests/test_kconf_update.cpp | 32 | ||||
-rw-r--r-- | src/kconf_update/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/kconf_update/config-kconf.h.cmake | 2 | ||||
-rw-r--r-- | src/kconf_update/kconf_update.cpp | 3 |
4 files changed, 34 insertions, 8 deletions
diff --git a/autotests/test_kconf_update.cpp b/autotests/test_kconf_update.cpp index 90faf989..d4f5c52d 100644 --- a/autotests/test_kconf_update.cpp +++ b/autotests/test_kconf_update.cpp @@ -49,7 +49,12 @@ static QString readFile(const QString &path) bool ok = file.open(QIODevice::ReadOnly); Q_UNUSED(ok) // silence warnings Q_ASSERT(ok); - return QString::fromUtf8(file.readAll()); + QString ret = QString::fromUtf8(file.readAll()); +#ifdef Q_OS_WIN + // KConfig always writes files with the native line ending, the test comparison uses \n + ret.replace("\r\n", "\n"); +#endif + return ret; } static QTemporaryFile *writeUpdFile(const QString &content) @@ -65,9 +70,8 @@ static QTemporaryFile *writeUpdFile(const QString &content) static void runKConfUpdate(const QString &updPath) { - QString exePath = KCONF_UPDATE_BINARY_DIR "/kconf_update"; - QVERIFY(QFile::exists(exePath)); - QProcess::execute(exePath, QStringList() << "--debug" << updPath); + QVERIFY(QFile::exists(KCONF_UPDATE_EXECUTABLE)); + QCOMPARE(0, QProcess::execute(KCONF_UPDATE_EXECUTABLE, QStringList() << "--debug" << updPath)); } void TestKConfUpdate::test_data() @@ -265,6 +269,7 @@ void TestKConfUpdate::test() QFile::remove(newConfPath); writeFile(oldConfPath, oldConfContent); + QCOMPARE(readFile(oldConfPath), oldConfContent); QSharedPointer<QTemporaryFile> updFile(writeUpdFile(updContent)); runKConfUpdate(updFile->fileName()); @@ -285,6 +290,12 @@ void TestKConfUpdate::test() void TestKConfUpdate::testScript_data() { +#ifdef Q_OS_WIN + // add sh.exe and sed.exe to PATH on Windows + // uncomment and adapt path to run all tests + // qputenv("PATH", qgetenv("PATH") + ";C:\\kde\\msys\\bin"); +#endif + QTest::addColumn<QString>("updContent"); QTest::addColumn<QString>("updScript"); QTest::addColumn<QString>("oldConfContent"); @@ -474,7 +485,10 @@ void TestKConfUpdate::testScript_data() "new=value3\n" ; - QTest::newRow("filter") + if (QStandardPaths::findExecutable("sed").isEmpty()) { + qWarning("sed executable not found, cannot run all tests!"); + } else { + QTest::newRow("filter") << "File=testrc\n" "Script=test.sh,sh\n" @@ -519,10 +533,16 @@ void TestKConfUpdate::testScript_data() "changed=VALUE\n" "unchanged=value\n" ; + } } void TestKConfUpdate::testScript() { + if (QStandardPaths::findExecutable("sh").isEmpty()) { + QSKIP("Could not find sh executable, cannot run test"); + return; + } + QFETCH(QString, updContent); QFETCH(QString, updScript); QFETCH(QString, oldConfContent); @@ -537,9 +557,11 @@ void TestKConfUpdate::testScript() QVERIFY(QDir().mkpath(scriptDir)); QString scriptPath = scriptDir + "/test.sh"; writeFile(scriptPath, updScript); + QCOMPARE(readFile(scriptPath), updScript); QString confPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + QLatin1Char('/') + "testrc"; writeFile(confPath, oldConfContent); + QCOMPARE(readFile(confPath), oldConfContent); runKConfUpdate(updFile->fileName()); diff --git a/src/kconf_update/CMakeLists.txt b/src/kconf_update/CMakeLists.txt index f75c31c8..fbee74a7 100644 --- a/src/kconf_update/CMakeLists.txt +++ b/src/kconf_update/CMakeLists.txt @@ -2,8 +2,6 @@ find_package(Qt5Core 5.2.0 REQUIRED NO_MODULE) remove_definitions(-DQT_NO_CAST_FROM_ASCII) -configure_file(config-kconf.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kconf.h ) - ########### next target ############### set(kconf_update_SRCS @@ -17,6 +15,9 @@ target_link_libraries(kconf_update Qt5::Core KF5::ConfigCore) include(ECMMarkNonGuiExecutable) ecm_mark_nongui_executable(kconf_update) +get_target_property(KCONF_UPDATE_EXECUTABLE kconf_update LOCATION) +configure_file(config-kconf.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kconf.h ) + # Although this is mostly an internal binary (hence installing it in # KF5_LIBEXEC_INSTALL_DIR), it is used by kded, and so we export its location install(TARGETS kconf_update EXPORT KF5ConfigTargets DESTINATION ${KF5_LIBEXEC_INSTALL_DIR}) diff --git a/src/kconf_update/config-kconf.h.cmake b/src/kconf_update/config-kconf.h.cmake index 0f70f8c8..a71608d2 100644 --- a/src/kconf_update/config-kconf.h.cmake +++ b/src/kconf_update/config-kconf.h.cmake @@ -1,4 +1,4 @@ #define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" #define LIBEXEC_INSTALL_DIR "${LIBEXEC_INSTALL_DIR}" #define LIB_INSTALL_DIR "${LIB_INSTALL_DIR}" -#define KCONF_UPDATE_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" +#define KCONF_UPDATE_EXECUTABLE "${KCONF_UPDATE_EXECUTABLE}" diff --git a/src/kconf_update/kconf_update.cpp b/src/kconf_update/kconf_update.cpp index e82520c7..1bcbf7da 100644 --- a/src/kconf_update/kconf_update.cpp +++ b/src/kconf_update/kconf_update.cpp @@ -174,6 +174,7 @@ QTextStream & KonfUpdate::log() { if (!m_textStream) { +#if 0 QString dir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1Char('/') + "kconf_update/log"; QDir().mkpath(dir); QString file = dir + "/update.log"; @@ -184,6 +185,8 @@ KonfUpdate::log() // Error m_textStream = new QTextStream(stderr, QIODevice::WriteOnly); } +#endif + m_textStream = new QTextStream(stderr, QIODevice::WriteOnly); } (*m_textStream) << QDateTime::currentDateTime().toString(Qt::ISODate) << " "; |