diff options
author | David Faure <faure@kde.org> | 2015-05-02 00:16:55 +0200 |
---|---|---|
committer | David Faure <faure@kde.org> | 2015-05-02 00:16:55 +0200 |
commit | 76e5b4412782b9c1757c8cdb3984f99566a57b96 (patch) | |
tree | ba93b16698e3da2a494d04e7130a35d64f7871a3 | |
parent | 87a661450b152206ab6768d1fc8e63db15dee400 (diff) | |
download | kconfig-76e5b4412782b9c1757c8cdb3984f99566a57b96.tar.gz kconfig-76e5b4412782b9c1757c8cdb3984f99566a57b96.tar.bz2 |
Fix kconf_update for spaces in paths
(CI says it happens on OSX)
Unittest it on Linux by exporting XDG_DATA_HOME with a space in it.
CCMAIL: kde-mac@kde.org
-rw-r--r-- | autotests/test_kconf_update.cpp | 6 | ||||
-rw-r--r-- | autotests/test_kconf_update.h | 1 | ||||
-rw-r--r-- | src/kconf_update/kconf_update.cpp | 9 |
3 files changed, 12 insertions, 4 deletions
diff --git a/autotests/test_kconf_update.cpp b/autotests/test_kconf_update.cpp index 86553a21..baa4dc56 100644 --- a/autotests/test_kconf_update.cpp +++ b/autotests/test_kconf_update.cpp @@ -33,6 +33,12 @@ QTEST_GUILESS_MAIN(TestKConfUpdate) +void TestKConfUpdate::initTestCase() +{ + // Ensure it all works with spaces in paths (as happens more commonly on OSX where it's ~/Library/Application Support/) + qputenv("XDG_DATA_HOME", "/tmp/a b"); +} + static void writeFile(const QString &path, const QString &content) { QFile file(path); diff --git a/autotests/test_kconf_update.h b/autotests/test_kconf_update.h index 1b3151f1..ca8fe3ba 100644 --- a/autotests/test_kconf_update.h +++ b/autotests/test_kconf_update.h @@ -27,6 +27,7 @@ class TestKConfUpdate : public QObject { Q_OBJECT private Q_SLOTS: + void initTestCase(); void test_data(); void test(); void testScript_data(); diff --git a/src/kconf_update/kconf_update.cpp b/src/kconf_update/kconf_update.cpp index 309bc3c2..7659e7b2 100644 --- a/src/kconf_update/kconf_update.cpp +++ b/src/kconf_update/kconf_update.cpp @@ -777,6 +777,7 @@ void KonfUpdate::gotScript(const QString &_script) log() << m_currentFilename << ": Running script '" << script << "'" << endl; } + QStringList args; QString cmd; if (interpreter.isEmpty()) { cmd = path; @@ -787,12 +788,12 @@ void KonfUpdate::gotScript(const QString &_script) m_skip = true; return; } - cmd = interpreterPath + ' ' + path; + cmd = interpreterPath; + args << path; } if (!m_arguments.isNull()) { - cmd += ' '; - cmd += m_arguments; + args += m_arguments; } QTemporaryFile scriptIn; @@ -834,7 +835,7 @@ void KonfUpdate::gotScript(const QString &_script) log() << "Script contents is:" << endl << scriptFile.readAll() << endl; } } - proc.start(cmd); + proc.start(cmd, args); if (!proc.waitForFinished(60000)) { logFileError() << "update script did not terminate within 60 seconds: " << cmd << endl; m_skip = true; |