diff options
-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; |