diff options
author | Brad King <brad.king@kitware.com> | 2016-11-17 16:36:04 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-11-18 14:43:22 (GMT) |
commit | 80ebc55a7ce934ee357c30713bcb96b209e97963 (patch) | |
tree | d57f5b3f499669d4d0290a09e7f4a535e7933a9c /Source | |
parent | ce1abfa4149ae0b3920626bef2dd15e8ee8b1940 (diff) | |
download | CMake-80ebc55a7ce934ee357c30713bcb96b209e97963.zip CMake-80ebc55a7ce934ee357c30713bcb96b209e97963.tar.gz CMake-80ebc55a7ce934ee357c30713bcb96b209e97963.tar.bz2 |
cmake: Report if the <LANG>_CLANG_TIDY tool exits with non-zero
When using `<LANG>_CLANG_TIDY` our internal launcher for the tool must
capture its return code and stderr and report them on failure.
Otherwise incorrect command lines silently fail.
Closes: #16435
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmcmd.cxx | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index dca5ffc..f1ce75a 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -358,14 +358,21 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args) // Run the tidy command line. Capture its stdout and hide its stderr. std::string stdOut; - if (!cmSystemTools::RunSingleCommand(tidy_cmd, &stdOut, CM_NULLPTR, - &ret, CM_NULLPTR, + std::string stdErr; + if (!cmSystemTools::RunSingleCommand(tidy_cmd, &stdOut, &stdErr, &ret, + CM_NULLPTR, cmSystemTools::OUTPUT_NONE)) { - std::cerr << "Error running '" << tidy_cmd[0] << "'\n"; + std::cerr << "Error running '" << tidy_cmd[0] << "': " << stdErr + << "\n"; return 1; } // Output the stdout from clang-tidy to stderr std::cerr << stdOut; + // If clang-tidy exited with an error do the same. + if (ret != 0) { + std::cerr << stdErr; + return ret; + } } if (!lwyu.empty()) { // Construct the ldd -r -u (link what you use lwyu) command line |