Valgrind: Move to Utils::FilePath in some places

Change-Id: I54d03ccda62121055509fd24c5c98a13f7605964
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2019-07-23 08:30:25 +02:00
parent 5efa84b91f
commit b0e52f7ff6
6 changed files with 33 additions and 30 deletions

View File

@@ -81,8 +81,11 @@ void ValgrindToolRunner::start()
emit outputReceived(tr("Command line arguments: %1").arg(runnable().debuggeeArgs), DebugFormat);
#endif
m_runner.setValgrindExecutable(m_settings->valgrindExecutable());
m_runner.setValgrindArguments(genericToolArguments() + toolArguments());
CommandLine valgrind{FilePath::fromString(m_settings->valgrindExecutable())};
valgrind.addArgs(genericToolArguments());
valgrind.addArgs(toolArguments());
m_runner.setValgrindCommand(valgrind);
m_runner.setDevice(device());
m_runner.setDebuggee(runnable());

View File

@@ -477,9 +477,9 @@ void ValgrindMemcheckParserTest::testValgrindGarbage()
void ValgrindMemcheckParserTest::testParserStop()
{
ValgrindRunner runner;
runner.setValgrindExecutable(fakeValgrindExecutable());
runner.setValgrindArguments({QString("--xml-socket=127.0.0.1:%1").arg(m_server->serverPort()),
"-i", dataFile("memcheck-output-sample1.xml"), "--wait", "5" });
runner.setValgrindCommand({FilePath::fromString(fakeValgrindExecutable()),
{QString("--xml-socket=127.0.0.1:%1").arg(m_server->serverPort()),
"-i", dataFile("memcheck-output-sample1.xml"), "--wait", "5" }});
runner.setProcessChannelMode(QProcess::ForwardedChannels);
runner.setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice(
@@ -502,7 +502,7 @@ void ValgrindMemcheckParserTest::testRealValgrind()
debuggee.executable = FilePath::fromString(executable);
debuggee.environment = sysEnv;
ValgrindRunner runner;
runner.setValgrindExecutable("valgrind");
runner.setValgrindCommand({FilePath::fromString("valgrind"), {}});
runner.setDebuggee(debuggee);
runner.setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice(
ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE));
@@ -541,8 +541,7 @@ void ValgrindMemcheckParserTest::testValgrindStartError()
debuggeeExecutable.commandLineArguments = debuggeeArgs;
ValgrindRunner runner;
runner.setValgrindExecutable(valgrindExe);
runner.setValgrindArguments(valgrindArgs);
runner.setValgrindCommand({FilePath::fromString(valgrindExe), valgrindArgs});
runner.setDebuggee(debuggeeExecutable);
runner.setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice(
ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE));

View File

@@ -63,8 +63,7 @@ public:
ApplicationLauncher m_findPID;
QString m_valgrindExecutable;
QStringList m_valgrindArguments;
CommandLine m_valgrindCommand;
QHostAddress localServerAddress;
QProcess::ProcessChannelMode channelMode = QProcess::SeparateChannels;
@@ -82,7 +81,7 @@ public:
bool ValgrindRunner::Private::run()
{
CommandLine cmd{FilePath::fromString(m_valgrindExecutable)};
CommandLine cmd{m_valgrindCommand.executable(), {}};
if (!localServerAddress.isNull()) {
if (!q->startServers())
@@ -112,7 +111,7 @@ bool ValgrindRunner::Private::run()
if (enableXml)
cmd.addArg("--xml=yes");
}
cmd.addArgs(m_valgrindArguments);
cmd.addArgs(m_valgrindCommand.arguments(), CommandLine::Raw);
m_valgrindProcess.setProcessChannelMode(channelMode);
// consider appending our options last so they override any interfering user-supplied options
@@ -187,7 +186,8 @@ void ValgrindRunner::Private::remoteProcessStarted()
// hence we need to do something more complex...
// plain path to exe, m_valgrindExe contains e.g. env vars etc. pp.
const QString proc = m_valgrindExecutable.split(' ').last();
// FIXME: Really?
const QString proc = m_valgrindCommand.executable().toString().split(' ').last();
Runnable findPid;
findPid.executable = FilePath::fromString("/bin/sh");
@@ -227,7 +227,7 @@ void ValgrindRunner::Private::findPidOutputReceived(const QString &out)
void ValgrindRunner::Private::closed(bool success)
{
Q_UNUSED(success);
Q_UNUSED(success)
// QTC_ASSERT(m_remote.m_process, return);
// m_remote.m_errorString = m_remote.m_process->errorString();
@@ -263,14 +263,9 @@ ValgrindRunner::~ValgrindRunner()
d = nullptr;
}
void ValgrindRunner::setValgrindExecutable(const QString &executable)
void ValgrindRunner::setValgrindCommand(const Utils::CommandLine &command)
{
d->m_valgrindExecutable = executable;
}
void ValgrindRunner::setValgrindArguments(const QStringList &toolArguments)
{
d->m_valgrindArguments = toolArguments;
d->m_valgrindCommand = command;
}
void ValgrindRunner::setDebuggee(const Runnable &debuggee)

View File

@@ -44,8 +44,7 @@ public:
explicit ValgrindRunner(QObject *parent = nullptr);
~ValgrindRunner() override;
void setValgrindExecutable(const QString &executable);
void setValgrindArguments(const QStringList &toolArguments);
void setValgrindCommand(const Utils::CommandLine &command);
void setDebuggee(const ProjectExplorer::Runnable &debuggee);
void setProcessChannelMode(QProcess::ProcessChannelMode mode);
void setLocalServerAddress(const QHostAddress &localServerAddress);

View File

@@ -46,7 +46,9 @@
#define HEADER_LENGTH 25
using namespace ProjectExplorer;
using namespace Valgrind::XmlProtocol;
using namespace Utils;
namespace Valgrind {
namespace Test {
@@ -77,15 +79,21 @@ QString ValgrindTestRunnerTest::runTestBinary(const QString &binary, const QStri
const QFileInfo binPathFileInfo(appBinDir, binary);
if (!binPathFileInfo.isExecutable())
return QString();
ProjectExplorer::Runnable debuggee;
Runnable debuggee;
const QString &binPath = binPathFileInfo.canonicalFilePath();
debuggee.executable = Utils::FilePath::fromString(binPath);
debuggee.environment = Utils::Environment::systemEnvironment();
CommandLine valgrind{FilePath::fromString("valgrind")};
valgrind.addArgs({"--num-callers=50", "--track-origins=yes"});
valgrind.addArgs(vArgs);
m_runner->setLocalServerAddress(QHostAddress::LocalHost);
m_runner->setValgrindArguments(QStringList() << "--num-callers=50" << "--track-origins=yes" << vArgs);
m_runner->setValgrindCommand(valgrind);
m_runner->setDebuggee(debuggee);
m_runner->setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice(
Core::Id(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)));
m_runner->setDevice(DeviceManager::instance()->defaultDevice(
ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE));
m_runner->start();
m_runner->waitForFinished();
return binPath;
@@ -131,7 +139,6 @@ void ValgrindTestRunnerTest::init()
Q_ASSERT(!m_runner);
m_runner = new ValgrindRunner;
m_runner->setValgrindExecutable("valgrind");
m_runner->setProcessChannelMode(QProcess::ForwardedChannels);
connect(m_runner, &ValgrindRunner::logMessageReceived,
this, &ValgrindTestRunnerTest::logMessageReceived);

View File

@@ -44,8 +44,8 @@ int main(int argc, char *argv[])
qRegisterMetaType<Error>();
ValgrindRunner runner;
runner.setValgrindExecutable(VALGRIND_FAKE_PATH);
runner.setValgrindArguments({"-i", PARSERTESTS_DATA_DIR "/memcheck-output-sample1.xml"});
runner.setValgrindCommand({Utils::FilePath::fromString(VALGRIND_FAKE_PATH),
{"-i", PARSERTESTS_DATA_DIR "/memcheck-output-sample1.xml"}});
ModelDemo demo(&runner);
QObject::connect(&runner, &ValgrindRunner::finished,