From da7b6cb83d0eab8dea741b216c9a6f33c1917a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 4 May 2023 13:25:40 +0200 Subject: [PATCH] Add debug logging to macdeployqt test Preparation for debugging failures in the 6.2 branch Pick-to: 6.5 6.2 Task-number: QTBUG-112892 Change-Id: Ib6428fb86be834c84be361a848c0f1306bfc2637 Reviewed-by: Timur Pocheptsov --- .../tools/macdeployqt/tst_macdeployqt.cpp | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/tests/auto/tools/macdeployqt/tst_macdeployqt.cpp b/tests/auto/tools/macdeployqt/tst_macdeployqt.cpp index fbf09fbe89..b7deb8f2c4 100644 --- a/tests/auto/tools/macdeployqt/tst_macdeployqt.cpp +++ b/tests/auto/tools/macdeployqt/tst_macdeployqt.cpp @@ -4,6 +4,8 @@ #include #include +Q_LOGGING_CATEGORY(lcTests, "qt.tools.tests") + bool g_testDirectoryBuild = false; // toggle to keep build output for debugging. QTemporaryDir *g_temporaryDirectory; QString g_macdeployqtBinary; @@ -34,6 +36,24 @@ static bool runProcess(const QString &binary, process.setProcessEnvironment(env); if (!workingDir.isEmpty()) process.setWorkingDirectory(workingDir); + + const auto outputReader = qScopeGuard([&] { + QByteArray standardOutput = process.readAllStandardOutput(); + if (!standardOutput.trimmed().isEmpty()) + qCDebug(lcTests).nospace() << "Standard output:\n" << qUtf8Printable(standardOutput.trimmed()); + if (stdOut) + *stdOut = standardOutput; + QByteArray standardError = process.readAllStandardError(); + if (!standardError.trimmed().isEmpty()) + qCDebug(lcTests).nospace() << "Standard error:\n" << qUtf8Printable(standardError.trimmed()); + if (stdErr) + *stdErr = standardError; + }); + + qCDebug(lcTests).noquote() << "Running" << binary + << "with arguments" << arguments + << "in" << workingDir; + process.start(binary, arguments, QIODevice::ReadOnly); if (!process.waitForStarted()) { *errorMessage = msgProcessError(process, "Failed to start"); @@ -46,10 +66,7 @@ static bool runProcess(const QString &binary, process.kill(); return false; } - if (stdOut) - *stdOut = process.readAllStandardOutput(); - if (stdErr) - *stdErr= process.readAllStandardError(); + if (process.exitStatus() != QProcess::NormalExit) { *errorMessage = msgProcessError(process, "Crashed"); return false; @@ -148,26 +165,11 @@ bool deploy(const QString &name, const QStringList &options, QString *errorMessa QString bundle = name + ".app"; QString path = buildPath(name); QStringList args = QStringList() << bundle << options; + if (lcTests().isDebugEnabled()) + args << "-verbose=3"; return runProcess(g_macdeployqtBinary, args, errorMessage, path); } -bool debugDeploy(const QString &name, const QStringList &options, QString *errorMessage) -{ - QString bundle = name + ".app"; - QString path = buildPath(name); - QStringList args = QStringList() << bundle << options << "-verbose=3"; - QByteArray stdOut; - QByteArray stdErr; - bool exitOK = runProcess(g_macdeployqtBinary, args, errorMessage, path, QProcessEnvironment(), - 10000, &stdOut, &stdErr); - - qDebug() << "macdeployqt exit OK" << exitOK; - qDebug() << qPrintable(stdOut); - qDebug() << qPrintable(stdErr); - - return exitOK; -} - bool run(const QString &name, QString *errorMessage) { QString path = buildPath(name);