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