ctest: Using --output-junit=<FILENAME> is silently ignored
USING: CMake v3.26.3
I stumbled over a weird behavior while using ctest
.
- It makes a difference if
ctest --some-option <VALUE>
orctest --some-option=<VALUE>
is used. - This is unexpected because most command-line processing tools support both cases.
EXAMPLE:
# -- PREPARE CMAKE-BUILD_DIR: Init/configure CMake project and build parts ...
$ export BUILD_DIR=build
$ cmake -G Ninja -S . -B $BUILD_DIR
$ cmake --build $BUILD_DIR
# -- GOOD CASE: use --output-junit <FILENAME> schema
$ ctest --test-dir $BUILD_DIR --output-junit $PWD/my_junit.xml
...
# POSTCONDITION: $PWD/my_junit.xml file exits (and contains test-run information)
# -- BAD CASE 1: use --output-junit=<FILENAME> schema
$ ctest --test-dir $BUILD_DIR --output-junit=$PWD/my_junit2.xml
...
# -- BAD CASE 2: use --output-file=<FILENAME> schema by using an UNKNOWN-CTEST-OPTION
$ ctest --test-dir $BUILD_DIR --output-file=$PWD/my_junit3.xml
...
OBSERVATIONS (with BAD CASES):
-
$PWD/my_junit2.xml
file is not created/generated if--output-junit=<VALUE>
scheme is used - No warnings in ctest-output that
--output-junit=...
is not handled - Option
--output-junit=...
is silently ignored - Unknown ctest option
ctest --output-file=...
is silently ignored
EXPECTED BEHAVIOR:
- Unknown command-line option(s) should at least cause a warning in ctest-output
- Rejected options should at least cause a warning in ctest-output
Edited by jenisys