24Process::Process() : m_expectFail(false), m_timedOut(false) {}
26QString Process::execute(
const QString &program,
const QStringList &arguments,
29 Q_ASSERT(m_process.state() == QProcess::NotRunning);
31 m_arguments = arguments;
32 m_expectFail = expectedResult == ExpectFail;
33 m_process.start(program, arguments);
34 m_timedOut = !m_process.waitForFinished();
35 return m_process.readAllStandardOutput();
38bool Process::hasError()
41 || m_process.error() != QProcess::UnknownError
42 || m_process.exitStatus() != QProcess::NormalExit
43 || (m_process.exitCode() != 0) != m_expectFail;
46QString Process::fmtErrorMessage()
54 reasons.append(
"Timed out");
55 }
else if (m_process.exitStatus() != QProcess::NormalExit) {
56 reasons.append(
"Process crashed");
57 }
else if (m_expectFail && (m_process.exitCode() == 0)) {
58 reasons.append(
"Did not fail while it was expected to");
60 if (m_process.error() != QProcess::UnknownError) {
61 reasons.append(m_process.errorString());
63 const QString errorOut = m_process.readAllStandardError();
64 if (!errorOut.isEmpty()) {
65 reasons.append(errorOut);
69 return QString(
"Failed to execute `%1 %2`: %3")
71 .arg(QStringList(m_arguments).replaceInStrings(QRegExp(
"^|$"),
"\"").join(
" "))
72 .arg(reasons.join(
": "));