From 76e5b4412782b9c1757c8cdb3984f99566a57b96 Mon Sep 17 00:00:00 2001 From: David Faure Date: Sat, 2 May 2015 00:16:55 +0200 Subject: 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 --- autotests/test_kconf_update.cpp | 6 ++++++ autotests/test_kconf_update.h | 1 + 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; -- cgit v1.2.1