summaryrefslogtreecommitdiffstats
path: root/Source/CTest/cmProcess.cxx
Commit message (Collapse)AuthorAgeFilesLines
* IWYU: Update for Debian 12 CI jobBrad King2023-07-281-0/+1
| | | | | | `include-what-you-use` diagnostics, in practice, are specific to the environment's compiler and standard library. Update includes to satisfy IWYU for our CI job under Debian 12.
* ctest: Optionally terminate tests with a custom signal on timeoutBrad King2023-06-021-0/+23
| | | | | | | | CTest normally terminates test processes on timeout using `SIGKILL`. Offer tests a chance to exit gracefully, on platforms supporting POSIX signals, by setting `TIMEOUT_SIGNAL_{NAME,GRACE_PERIOD}` properties. Fixes: #17288
* cmCTestRunTest: Adopt decision for starting cmProcess timerBrad King2023-05-041-7/+3
|
* Replace the only non-standard _snprintf with snprintfSean McBride2021-10-251-1/+1
|
* clang-tidy: fix `readability-qualified-auto` warningsBen Boeckel2021-01-271-5/+5
|
* clang-tidy: fix `readability-make-member-function-const` warningsBen Boeckel2021-01-271-2/+2
|
* Code style: add missed explicit 'this->'Oleksandr Koval2021-01-051-1/+1
| | | | | CMake uses explicit 'this->' style. Using custom clang-tidy check we can detect and fix places where 'this->' was missed.
* CTest: Prefer normative terms to express subprocess failuresRobert Maynard2020-07-271-3/+3
| | | | Issue: #21004
* Refactoring: Third-parties public headers are under cm3p prefixMarc Chevrier2020-05-071-1/+1
| | | | Fixes: #20666
* Merge branch 'backport-ctest-timeout-report' into ctest-timeout-reportBrad King2020-03-261-8/+13
|\
| * CTest: Fix reported duration on timeout when grindchild keeps pipes openBrad King2020-03-261-8/+13
| | | | | | | | | | | | | | | | | | | | Since commit d1976cd1f2 (CTest: Fix timeout when grandchild keeps pipes open, 2020-01-13, v3.17.0-rc1~169^2) we no longer hang, but the test duration we report after the timeout is the amount of time the immediate child ran before exiting. Fix the logic to instead report the actual amount of time we spent monitoring the test before the timeout. Fixes: #20509
* | cmCTestRunTest: modernize memory managementMarc Chevrier2020-03-111-14/+14
|/
* CTest: Fix timeout when grandchild keeps pipes openBrad King2020-01-141-3/+0
| | | | | | | | | | | When a test's process creates its own child and exits, the grandchild may keep pipes open. Fix CTest logic to correctly timeout if the grandchild does not exit and close the pipes before the timeout expires. This was broken by commit b5e21d7d2e (CTest: Re-implement test process handling using libuv, 2017-12-10, v3.11.0-rc1~117^2) which added an unnecessary condition to the timeout handling. Fixes: #20116
* Refactoring: use append functions from cmext/algorithmMarc Chevrier2019-12-171-2/+3
|
* Revise include order using clang-format-6.0Kitware Robot2019-10-011-5/+6
| | | | | Run the `clang-format.bash` script to update our C and C++ code to a new include order `.clang-format`. Use `clang-format` version 6.0.
* clang-tidy: modernize-deprecated-headersRegina Pfeifer2019-09-161-1/+1
|
* Source sweep: Use cmStrCat for string concatenationSebastian Holtermann2019-08-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is generated by a python script that uses regular expressions to search for string concatenation patterns of the kind ``` std::string str = <ARG0>; str += <ARG1>; str += <ARG2>; ... ``` and replaces them with a single `cmStrCat` call ``` std::string str = cmStrCat(<ARG0>, <ARG1>, <ARG2>, ...); ``` If any `<ARGX>` is itself a concatenated string of the kind ``` a + b + c + ...; ``` then `<ARGX>` is split into multiple arguments for the `cmStrCat` call. If there's a sequence of literals in the `<ARGX>`, then all literals in the sequence are concatenated and merged into a single literal argument for the `cmStrCat` call. Single character strings are converted to single char arguments for the `cmStrCat` call. `std::to_string(...)` wrappings are removed from `cmStrCat` arguments, because it supports numeric types as well as string types. `arg.substr(x)` arguments to `cmStrCat` are replaced with `cm::string_view(arg).substr(x)`
* Use cmAppend to append ranges to std::vector instancesSebastian Holtermann2019-05-231-1/+2
|
* Refactor: Move/rename cmProcessGetPipes() to cmGetPipes()Kyle Edwards2019-04-251-44/+2
|
* ctest: refactor some codeGregor Jasny2019-03-051-1/+6
|
* CTest: Represent process exit codes as 64-bit signed integerZsolt Parragi2019-02-081-3/+6
| | | | | | | Exit code constants on Windows, such as `STATUS_NO_MEMORY` do not fit in a 32-bit signed integer type. They do fit in an unsigned 32-bit type, but for compatibility with UNIX semantics we treat exit codes as signed. Use a 64-bit signed integer to handle both.
* Prefer front/back/data over dereferencing begin/rbegin iterArtur Ryt2019-02-061-2/+2
| | | | Changed for sequenced containers: vector, list, string and array
* clang-tidy: Use `= default`Regina Pfeifer2019-01-251-3/+1
| | | | | | Suppress some cases in `Source/cmGeneratorExpressionNode.cxx` and `Source/cmUVHandlePtr.h` where a few older compilers require a user-defined default constructor (with `{}`).
* IWYU: Update CMake code for IWYU built with Clang 6Brad King2019-01-151-1/+1
| | | | | IWYU now correctly requires `<utility>` for `std::move`. It also requires a container header when used via a range-based for loop.
* CTest: Restore inheritance of stdin by test processesBrad King2018-11-151-1/+2
| | | | | | | | | | | Since commit v3.11.0-rc1~117^2 (CTest: Re-implement test process handling using libuv, 2017-12-10) we do not give the child test processes any stdin. Prior to that change we let the child test processes inherit stdin from ctest itself. Tests that run serially might be able to use the real stdin meaningfully, so restore that behavior and add a test case. Fixes: #18591
* Revise C++ coding style using clang-format-6.0Kitware Robot2018-06-011-92/+93
| | | | | | | | | | | | Run the `clang-format.bash` script to update all our C and C++ code to a new style defined by `.clang-format`. Use `clang-format` version 6.0. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* CTest: Add options to control test process affinity to CPUsBrad King2018-03-051-1/+17
| | | | | | | | | | In commit v2.8.0~170 (ENH: Added ctest test options PROCESSORS and RUN_SERIAL, 2009-09-07) CTest learned to track the number of processors allocated to running tests in order to balance it against the desired level of parallelism. Extend this idea by introducing a new `PROCESSOR_AFFINITY` test property to ask that CTest run a test with the CPU affinity mask set. This will allow a set of tests that are running concurrently to use disjoint CPU resources.
* CTest: introduce cmDurationWouter Klouwen2018-01-231-5/+5
| | | | | | | | This commit introduces cmDuration as a typedef for std::chrono::duration<double, std::ratio<1>>. It is less verbose and provides for a point to put future common functionality for durations. No functional change intended.
* CTest: Fix process output read error casesBrad King2018-01-171-0/+5
| | | | | | | The libuv documentation states that the stream read callback may be called with `nread == 0` for EAGAIN. Handle this gracefully. It also states that the callee is responsible for closing the stream on error. Always close the stream for `nread < 0`.
* CTest: Fix decoding of MBCS character split by bufferingBrad King2018-01-171-8/+7
| | | | | | Use a single `cmProcessOutput` instance persistently to decode all output of a test process so that partial character bytes can be buffered.
* CTest: Re-implement test process handling using libuvBryon Bean2018-01-101-86/+583
| | | | Co-Author: Brad King <brad.king@kitware.com>
* cmProcess: Use explicit enum for process exit exceptionBryon Bean2018-01-101-2/+16
| | | | Translate the values from KWSys Process.
* cmProcess: Use explicit enum for process stateBryon Bean2018-01-101-5/+21
| | | | Translate the values from KWSys Process.
* cmProcess: Remove unused ReportStatus methodBryon Bean2018-01-101-59/+0
|
* CTest: Simplify std::chrono::duration<double> conversion to doubleBrad King2017-12-081-16/+3
| | | | | | | | | The ratio of ticks to seconds for this type is 1, so we can just use its `count()` directly. This also avoids converting through the integer representation of `std::chrono::milliseconds`, which has a much smaller allowed range. Drop our `cmsysProcess_SetTimeout` wrapper as it is now very thin.
* CTest: convert timeouts to std::chrono::durationWouter Klouwen2017-12-041-13/+25
| | | | | | | | | This commit continues the refactoring of CTest to adopt std::chrono. After the last sets of changes that introduced std::chrono::steady_clock and std::chrono::system_clock respectively, it makes sense to have all the timeouts be stored as std::chrono::duration. No functional change intended.
* IWYU: Add mappings for std::enable_if on chrono durationsBrad King2017-11-281-1/+0
| | | | | | | | IWYU incorrectly classifies this internal STL type as not internal, and suggests including `<type_traits>` for it. Work around the problem by mapping the offending names to a file that we always include. See include-what-you-use issue 434.
* CTest: use std::chrono::steady_clock for time keepingWouter Klouwen2017-11-141-5/+9
| | | | | | | | | | | | It was reported in issue #17345 that CTest does not use monotonic time to report test duration. Monotonic clocks are not affected by large NTP adjustments or things like daylight savings time. As CMake 3.10 requires C++11, which introduced std::chrono, this commit moves the time keeping in CTest from cmSystemTools::GetTime() to std::chrono::steady_clock. Fixes: #17345
* Meta: modernize old-fashioned loops to range-based `for` (CTest).Pavel Solodovnikov2017-09-141-3/+2
| | | | | | Changes done via `clang-tidy` with some manual fine-tuning for the variable naming and `auto` type deduction where appropriate.
* IWYU: Mark cmConfigure.h with pragma: keepDaniel Pfeifer2017-08-261-1/+0
| | | | Also remove `#include "cmConfigure.h"` from most source files.
* Use C++11 nullptrDaniel Pfeifer2017-08-241-2/+2
|
* CTest: Report more detail about system exceptions in testsBill Hoffman2017-07-121-0/+5
| | | | | This passes the system exception string up to CDash and to the command line instead of just printing "other".
* Use quotes for non-system includesDaniel Pfeifer2017-04-111-3/+3
| | | | | | | | | | | | | Automate with: git grep -l '#include <cm_' -- Source \ | xargs sed -i 's/#include <\(cm_.*\)>/#include "\1"/g' git grep -l '#include <cmsys/' -- Source \ | xargs sed -i 's/#include <\(cmsys\/.*\)>/#include "\1"/g' git grep -l '#include <cm[A-Z]' -- Source \ | xargs sed -i 's/#include <\(cm[A-Z].*\)>/#include "\1"/g'
* Windows: Use UTF-8 for pipes in CMake, CTest and CPackDāvis Mosāns2016-11-291-1/+1
| | | | | Applications which process CMake output will need to decode it as UTF-8 instead of console's codepage.
* Windows: Encode child process output to internally-used encodingDāvis Mosāns2016-11-141-1/+9
| | | | | | Typically Windows applications (eg. MSVC compiler) use current console's codepage for output to pipes so we need to encode that to our internally-used encoding (`KWSYS_ENCODING_DEFAULT_CODEPAGE`).
* CTest: report time spent after matching outputZack Galbreath2016-10-171-0/+1
| | | | | When using the TIMEOUT_AFTER_MATCH test property, only report the time spent by the test after the matching output was found.
* Simplify CMake per-source license noticesBrad King2016-09-271-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* CTest: fix include-what-you-use violationsDaniel Pfeifer2016-08-251-2/+3
|
* CTest: don't use else after returnDaniel Pfeifer2016-08-181-3/+3
|
* use CM_NULLPTRDaniel Pfeifer2016-06-281-2/+2
|