summaryrefslogtreecommitdiff
path: root/src/plugins/qmljstools/qmljsplugindumper.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-03-08 15:44:58 +0100
committerFawzi Mohamed <fawzi.mohamed@digia.com>2013-03-18 11:17:44 +0100
commit409ff7c3acb15cf59eecd0d19c2a6fc6cd6b32ab (patch)
treed327d2694e5928caeb4e97191ea3b0564c8fae3e /src/plugins/qmljstools/qmljsplugindumper.cpp
parentcb9ac60609979d71f1093e18bb4e94635bdfd1bf (diff)
downloadqt-creator-409ff7c3acb15cf59eecd0d19c2a6fc6cd6b32ab.tar.gz
Improve error reporting when running qmlplugindump.
Output error message, binary and arguments. Change-Id: I413d2fcb234ae2444bf2c354b6aed1140aad61c5 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src/plugins/qmljstools/qmljsplugindumper.cpp')
-rw-r--r--src/plugins/qmljstools/qmljsplugindumper.cpp44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/plugins/qmljstools/qmljsplugindumper.cpp b/src/plugins/qmljstools/qmljsplugindumper.cpp
index 766024d981..68a5dc0f22 100644
--- a/src/plugins/qmljstools/qmljsplugindumper.cpp
+++ b/src/plugins/qmljstools/qmljsplugindumper.cpp
@@ -261,6 +261,46 @@ static void printParseWarnings(const QString &libraryPath, const QString &warnin
"%2").arg(libraryPath, warning));
}
+static QString qmlPluginDumpErrorMessage(QProcess *process)
+{
+ QString errorMessage;
+#if QT_VERSION >= 0x050000
+ const QString binary = QDir::toNativeSeparators(process->program());
+#else
+ const QString binary = QLatin1String("qmlplugindump");
+#endif
+ switch (process->error()) {
+ case QProcess::FailedToStart:
+ errorMessage = PluginDumper::tr("\"%1\" failed to start: %2").arg(binary, process->errorString());
+ break;
+ case QProcess::Crashed:
+ errorMessage = PluginDumper::tr("\"%1\" crashed.").arg(binary);
+ break;
+ case QProcess::Timedout:
+ errorMessage = PluginDumper::tr("\"%1\" timed out.").arg(binary);
+ break;
+ case QProcess::ReadError:
+ case QProcess::WriteError:
+ errorMessage = PluginDumper::tr("I/O error running \"%1\".").arg(binary);
+ break;
+ case QProcess::UnknownError:
+ if (process->exitCode())
+ errorMessage = PluginDumper::tr("\"%1\" returned exit code %2.").arg(binary).arg(process->exitCode());
+ break;
+ }
+#if QT_VERSION >= 0x050000
+ errorMessage += QLatin1Char('\n') + PluginDumper::tr("Arguments: %1").arg(process->arguments().join(QLatin1Char(' ')));
+#endif
+ if (process->error() != QProcess::FailedToStart) {
+ const QString stdErr = QString::fromLocal8Bit(process->readAllStandardError());
+ if (!stdErr.isEmpty()) {
+ errorMessage += QLatin1Char('\n');
+ errorMessage += stdErr;
+ }
+ }
+ return errorMessage;
+}
+
void PluginDumper::qmlPluginTypeDumpDone(int exitCode)
{
QProcess *process = qobject_cast<QProcess *>(sender());
@@ -276,7 +316,7 @@ void PluginDumper::qmlPluginTypeDumpDone(int exitCode)
if (exitCode != 0) {
Core::MessageManager *messageManager = Core::MessageManager::instance();
- const QString errorMessages = QString::fromLocal8Bit(process->readAllStandardError());
+ const QString errorMessages = qmlPluginDumpErrorMessage(process);
messageManager->printToOutputPane(qmldumpErrorMessage(libraryPath, errorMessages));
libraryInfo.setPluginTypeInfoStatus(LibraryInfo::DumpError, qmldumpFailedMessage(libraryPath, errorMessages));
}
@@ -316,7 +356,7 @@ void PluginDumper::qmlPluginTypeDumpError(QProcess::ProcessError)
return;
Core::MessageManager *messageManager = Core::MessageManager::instance();
- const QString errorMessages = QString::fromLocal8Bit(process->readAllStandardError());
+ const QString errorMessages = qmlPluginDumpErrorMessage(process);
messageManager->printToOutputPane(qmldumpErrorMessage(libraryPath, errorMessages));
if (!libraryPath.isEmpty()) {