diff --git a/src/plugins/autotest/gtest/gtestoutputreader.cpp b/src/plugins/autotest/gtest/gtestoutputreader.cpp index 8dfa0c0ef41..997e7d2ddc2 100644 --- a/src/plugins/autotest/gtest/gtestoutputreader.cpp +++ b/src/plugins/autotest/gtest/gtestoutputreader.cpp @@ -179,7 +179,7 @@ void GTestOutputReader::processOutputLine(const QByteArray &outputLine) testResult->setResult(type); testResult->setLine(match.captured(3).toInt()); const Utils::FilePath file = constructSourceFilePath(m_buildDir, match.captured(2)); - if (!file.isEmpty()) + if (file.exists()) testResult->setFileName(file); testResult->setDescription(match.captured(4)); reportResult(testResult); @@ -247,7 +247,7 @@ void GTestOutputReader::handleDescriptionAndReportResult(TestResultPtr testResul testResult->setResult(ResultType::MessageLocation); testResult->setLine(innerMatch.captured(2).toInt()); const Utils::FilePath file = constructSourceFilePath(m_buildDir, innerMatch.captured(1)); - if (!file.isEmpty()) + if (file.exists()) testResult->setFileName(file); resultDescription << output; } diff --git a/src/plugins/autotest/testoutputreader.cpp b/src/plugins/autotest/testoutputreader.cpp index 403f086de5f..ada972d094a 100644 --- a/src/plugins/autotest/testoutputreader.cpp +++ b/src/plugins/autotest/testoutputreader.cpp @@ -39,11 +39,10 @@ namespace Autotest { Utils::FilePath TestOutputReader::constructSourceFilePath(const Utils::FilePath &path, - const QString &filePath) + const QString &file) { - if (!filePath.isEmpty() && filePath.at(0) != '.') - return Utils::FilePath::fromFileInfo(QFileInfo(filePath)); - return (path / filePath).canonicalPath(); + const Utils::FilePath filePath = path.resolvePath(file); + return filePath.exists() ? filePath : Utils::FilePath(); } TestOutputReader::TestOutputReader(const QFutureInterface &futureInterface, @@ -177,9 +176,8 @@ void TestOutputReader::checkForSanitizerOutput(const QByteArray &line) if (m_sanitizerOutputMode == SanitizerOutputMode::Ubsan) { const Utils::FilePath path = constructSourceFilePath(m_buildDir, match.captured(1)); // path may be empty if not existing - so, provide at least what we have - m_sanitizerResult->setFileName(path.isEmpty() - ? Utils::FilePath::fromString(match.captured(1)) - : path); + m_sanitizerResult->setFileName( + path.exists() ? path : Utils::FilePath::fromString(match.captured(1))); m_sanitizerResult->setLine(match.captured(2).toInt()); } }