From 7bb5a698adf61fe3aa00d0665501af8607b4baf9 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Thu, 19 Mar 2026 18:59:16 -0500 Subject: [PATCH 1/3] ENH: Reduce CTest verbosity to show output only for failing tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace -VV (extra verbose) with -V (verbose) in all CI pipeline invocations of `ctest -S`. This change applies to all 8 Azure DevOps pipeline YAML files and the GitHub Actions arm.yml workflow. Background: The -VV flag causes CTest to print the full stdout/stderr of every test, regardless of whether it passed or failed. With ITK's 3000+ tests, this generates hundreds of megabytes of CI log output, making it difficult to find the actual failure in a failing build. Every pipeline already sets the environment variable CTEST_OUTPUT_ON_FAILURE=1, which instructs CTest to print test output only when a test fails. However, this variable has been effectively dead code because -VV unconditionally prints all output, overriding the output-on-failure behavior. With this change: - -V (verbose) prints CTest progress: test names, pass/fail status, and timing — sufficient for monitoring build progress - CTEST_OUTPUT_ON_FAILURE=1 now takes effect, printing full test output only for tests that fail - CI logs are dramatically smaller and failures are easier to find Note: The CTEST_OUTPUT_ON_FAILURE environment variable works in both direct ctest invocations and ctest -S scripted/dashboard mode. The ctest_test() CMake command used internally by itk_common.cmake does not have an OUTPUT_ON_FAILURE keyword argument, but the environment variable is read by the CTest process regardless of invocation mode. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/arm.yml | 2 +- Testing/ContinuousIntegration/AzurePipelinesBatch.yml | 2 +- Testing/ContinuousIntegration/AzurePipelinesLinux.yml | 6 +++--- Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml | 2 +- Testing/ContinuousIntegration/AzurePipelinesMacOS.yml | 2 +- Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml | 2 +- Testing/ContinuousIntegration/AzurePipelinesWindows.yml | 2 +- .../ContinuousIntegration/AzurePipelinesWindowsPython.yml | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/arm.yml b/.github/workflows/arm.yml index 4e71c907ebd..4eb8e342f69 100644 --- a/.github/workflows/arm.yml +++ b/.github/workflows/arm.yml @@ -174,7 +174,7 @@ jobs: c++ --version cmake --version - ctest -S ${{ github.workspace }}/ITK-dashboard/dashboard.cmake -VV -j ${{ matrix.parallel-level }} ${{ matrix.ctest-options }} + ctest -S ${{ github.workspace }}/ITK-dashboard/dashboard.cmake -V -j ${{ matrix.parallel-level }} ${{ matrix.ctest-options }} env: CTEST_OUTPUT_ON_FAILURE: 1 - name: Save compiler cache diff --git a/Testing/ContinuousIntegration/AzurePipelinesBatch.yml b/Testing/ContinuousIntegration/AzurePipelinesBatch.yml index 87338fcd4b3..e0e202e9c8e 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesBatch.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesBatch.yml @@ -103,7 +103,7 @@ jobs: - script: | cmake --version call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 2 + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2 displayName: 'Build and test' env: CTEST_OUTPUT_ON_FAILURE: 1 diff --git a/Testing/ContinuousIntegration/AzurePipelinesLinux.yml b/Testing/ContinuousIntegration/AzurePipelinesLinux.yml index 387f65284b1..f4a8e21d18e 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesLinux.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesLinux.yml @@ -111,7 +111,7 @@ jobs: c++ --version cmake --version - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 2 + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2 displayName: 'Build and test' env: CTEST_OUTPUT_ON_FAILURE: 1 @@ -202,7 +202,7 @@ jobs: c++ --version cmake --version - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 2 + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2 displayName: 'Build and test' env: CTEST_OUTPUT_ON_FAILURE: 1 @@ -291,7 +291,7 @@ jobs: set -x c++ --version cmake --version - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 2 + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2 displayName: "Build and test" env: CTEST_OUTPUT_ON_FAILURE: 1 diff --git a/Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml b/Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml index f28d4eb5901..db1afb42022 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml @@ -118,7 +118,7 @@ jobs: c++ --version cmake --version - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 2 -L Python -E "(PythonExtrasTest)|(PythonFastMarching)|(PythonLazyLoadingImage)|(PythonThresholdSegmentationLevelSetWhiteMatterTest)|(PythonVerifyTTypeAPIConsistency)|(PythonWatershedSegmentation1Test)" + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2 -L Python -E "(PythonExtrasTest)|(PythonFastMarching)|(PythonLazyLoadingImage)|(PythonThresholdSegmentationLevelSetWhiteMatterTest)|(PythonVerifyTTypeAPIConsistency)|(PythonWatershedSegmentation1Test)" displayName: 'Build and test' env: CTEST_OUTPUT_ON_FAILURE: 1 diff --git a/Testing/ContinuousIntegration/AzurePipelinesMacOS.yml b/Testing/ContinuousIntegration/AzurePipelinesMacOS.yml index cb3e9c8c86b..9f769ef4d22 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesMacOS.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesMacOS.yml @@ -110,7 +110,7 @@ jobs: c++ --version cmake --version - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 3 + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 3 displayName: 'Build and test' env: CTEST_OUTPUT_ON_FAILURE: 1 diff --git a/Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml b/Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml index b236d8f87f9..677e296e49a 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml @@ -119,7 +119,7 @@ jobs: c++ --version cmake --version - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 3 + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 3 displayName: 'Build and test' env: CTEST_OUTPUT_ON_FAILURE: 1 diff --git a/Testing/ContinuousIntegration/AzurePipelinesWindows.yml b/Testing/ContinuousIntegration/AzurePipelinesWindows.yml index 6928a259b2e..88888617d1b 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesWindows.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesWindows.yml @@ -104,7 +104,7 @@ jobs: - script: | cmake --version call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 2 + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2 displayName: 'Build and test' env: CTEST_OUTPUT_ON_FAILURE: 1 diff --git a/Testing/ContinuousIntegration/AzurePipelinesWindowsPython.yml b/Testing/ContinuousIntegration/AzurePipelinesWindowsPython.yml index a471420b04b..e8241cb4105 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesWindowsPython.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesWindowsPython.yml @@ -114,7 +114,7 @@ jobs: - script: | cmake --version call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -VV -j 2 -L Python + ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2 -L Python displayName: 'Build and test' env: CTEST_OUTPUT_ON_FAILURE: 1 From 1a4fe60192ffdd7e060d4149f879114ffe850cfc Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Thu, 19 Mar 2026 20:18:28 -0500 Subject: [PATCH 2/3] ENH: Add CI step to report build warnings and errors from Build.xml ctest_build() captures compiler diagnostics in Build.xml for CDash submission but does not print them to the CI log. With -V (instead of -VV), build output scrolls past quickly and warnings are easy to miss entirely. Add report_build_diagnostics.py which parses the and elements from Build.xml and prints them in a clearly delimited section. Add a "Report build warnings and errors" step to every Azure DevOps and GitHub Actions pipeline, running after the build/test step with succeededOrFailed()/always() so diagnostics are reported even when the build fails. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/arm.yml | 5 ++ .../AzurePipelinesBatch.yml | 4 + .../AzurePipelinesLinux.yml | 13 +++ .../AzurePipelinesLinuxPython.yml | 4 + .../AzurePipelinesMacOS.yml | 4 + .../AzurePipelinesMacOSPython.yml | 4 + .../AzurePipelinesWindows.yml | 4 + .../AzurePipelinesWindowsPython.yml | 4 + .../report_build_diagnostics.py | 83 +++++++++++++++++++ 9 files changed, 125 insertions(+) create mode 100755 Testing/ContinuousIntegration/report_build_diagnostics.py diff --git a/.github/workflows/arm.yml b/.github/workflows/arm.yml index 4eb8e342f69..c683b3c52de 100644 --- a/.github/workflows/arm.yml +++ b/.github/workflows/arm.yml @@ -177,6 +177,11 @@ jobs: ctest -S ${{ github.workspace }}/ITK-dashboard/dashboard.cmake -V -j ${{ matrix.parallel-level }} ${{ matrix.ctest-options }} env: CTEST_OUTPUT_ON_FAILURE: 1 + + - name: Report build warnings and errors + if: always() + run: python3 ${{ github.workspace }}/Testing/ContinuousIntegration/report_build_diagnostics.py ${{ github.workspace }}/build + - name: Save compiler cache if: ${{ !cancelled() }} uses: actions/cache/save@v5 diff --git a/Testing/ContinuousIntegration/AzurePipelinesBatch.yml b/Testing/ContinuousIntegration/AzurePipelinesBatch.yml index e0e202e9c8e..76d0b723803 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesBatch.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesBatch.yml @@ -109,6 +109,10 @@ jobs: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + - script: python $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() diff --git a/Testing/ContinuousIntegration/AzurePipelinesLinux.yml b/Testing/ContinuousIntegration/AzurePipelinesLinux.yml index f4a8e21d18e..7d56c2727cd 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesLinux.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesLinux.yml @@ -117,6 +117,10 @@ jobs: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + - bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() @@ -208,6 +212,10 @@ jobs: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + - bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() @@ -296,6 +304,11 @@ jobs: env: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + + - bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() diff --git a/Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml b/Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml index db1afb42022..d6543c756fc 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml @@ -124,6 +124,10 @@ jobs: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + - bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() diff --git a/Testing/ContinuousIntegration/AzurePipelinesMacOS.yml b/Testing/ContinuousIntegration/AzurePipelinesMacOS.yml index 9f769ef4d22..b45fd75cd2d 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesMacOS.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesMacOS.yml @@ -116,6 +116,10 @@ jobs: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + - bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() diff --git a/Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml b/Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml index 677e296e49a..1835530274e 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesMacOSPython.yml @@ -125,6 +125,10 @@ jobs: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + - bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() diff --git a/Testing/ContinuousIntegration/AzurePipelinesWindows.yml b/Testing/ContinuousIntegration/AzurePipelinesWindows.yml index 88888617d1b..0667e116a10 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesWindows.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesWindows.yml @@ -110,6 +110,10 @@ jobs: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + - script: python $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() diff --git a/Testing/ContinuousIntegration/AzurePipelinesWindowsPython.yml b/Testing/ContinuousIntegration/AzurePipelinesWindowsPython.yml index e8241cb4105..fc5784941c9 100644 --- a/Testing/ContinuousIntegration/AzurePipelinesWindowsPython.yml +++ b/Testing/ContinuousIntegration/AzurePipelinesWindowsPython.yml @@ -120,6 +120,10 @@ jobs: CTEST_OUTPUT_ON_FAILURE: 1 CCACHE_MAXSIZE: 2.4G + - script: python $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build + condition: succeededOrFailed() + displayName: 'Report build warnings and errors' + - script: | ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml condition: succeededOrFailed() diff --git a/Testing/ContinuousIntegration/report_build_diagnostics.py b/Testing/ContinuousIntegration/report_build_diagnostics.py new file mode 100755 index 00000000000..107bb1c1b45 --- /dev/null +++ b/Testing/ContinuousIntegration/report_build_diagnostics.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +"""Extract and print build warnings/errors from CTest Build.xml. + +ctest_build() writes compiler diagnostics to Build.xml for CDash but +does not print them to stdout. This script reads Build.xml from the +most recent test run and prints the content of every +and element so diagnostics appear directly in CI logs. + +Usage: + python report_build_diagnostics.py +""" + +import os +import sys +import xml.etree.ElementTree as ET + + +def main(): + if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} ", file=sys.stderr) + sys.exit(1) + + build_dir = sys.argv[1] + + # CTest writes a TAG file whose first line is the timestamp directory. + tag_file = os.path.join(build_dir, "Testing", "TAG") + if not os.path.isfile(tag_file): + print(f"No TAG file found at {tag_file} — skipping.", file=sys.stderr) + return + + with open(tag_file) as f: + tag_dir = f.readline().strip() + + build_xml = os.path.join(build_dir, "Testing", tag_dir, "Build.xml") + if not os.path.isfile(build_xml): + print(f"No Build.xml found at {build_xml} — skipping.", file=sys.stderr) + return + + tree = ET.parse(build_xml) + root = tree.getroot() + + # Find all and elements under . + warnings = [] + errors = [] + for build_elem in root.iter("Build"): + for warning in build_elem.findall("Warning"): + text = warning.findtext("Text", "").strip() + src = warning.findtext("SourceFile", "").strip() + line = warning.findtext("SourceLineNumber", "").strip() + if text: + warnings.append((src, line, text)) + for error in build_elem.findall("Error"): + text = error.findtext("Text", "").strip() + src = error.findtext("SourceFile", "").strip() + line = error.findtext("SourceLineNumber", "").strip() + if text: + errors.append((src, line, text)) + + if not warnings and not errors: + print("No build warnings or errors found.") + return + + if errors: + print(f"========== BUILD ERRORS ({len(errors)}) ==========") + for src, line, text in errors: + print(f" {text}") + print() + + if warnings: + print(f"========== BUILD WARNINGS ({len(warnings)}) ==========") + for src, line, text in warnings: + print(f" {text}") + print() + + print("====================================================") + + # Exit with non-zero status only if there are errors (warnings are + # informational). This lets CI pipelines treat the step as a + # soft-fail for warnings but hard-fail for errors if desired. + + +if __name__ == "__main__": + main() From 34cf43bc26d8ef6d3e4989c061be48e4e554b0bb Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Thu, 19 Mar 2026 19:07:15 -0500 Subject: [PATCH 3/3] WIP: Add deliberate warning and test failure to verify CI verbosity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DO NOT MERGE — this commit intentionally introduces: 1. An unused variable in itkObject.cxx to generate a compiler warning (-Wunused-variable) that should appear in CDash warning counts. 2. A deliberate EXIT_FAILURE in itkPointGeometryTest to verify that CTEST_OUTPUT_ON_FAILURE=1 produces visible test output in CI logs when using -V instead of -VV. This is a test artifact for PR #5971 (reduce CTest verbosity). If the CI logs show the "DELIBERATE FAILURE" message in the test output section, the new verbosity scheme is working correctly. Co-Authored-By: Claude Opus 4.6 --- Modules/Core/Common/src/itkObject.cxx | 4 ++++ Modules/Core/Common/test/itkPointGeometryTest.cxx | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Modules/Core/Common/src/itkObject.cxx b/Modules/Core/Common/src/itkObject.cxx index 01c01d61c88..41807b7919e 100644 --- a/Modules/Core/Common/src/itkObject.cxx +++ b/Modules/Core/Common/src/itkObject.cxx @@ -33,6 +33,10 @@ namespace itk { +// WIP: Deliberate unused variable to generate a compiler warning. +// This is a test artifact for PR #5971 and must NOT be merged. +static int deliberately_unused_variable_for_ci_test = 42; + /** * Initialize static member that controls warning display. */ diff --git a/Modules/Core/Common/test/itkPointGeometryTest.cxx b/Modules/Core/Common/test/itkPointGeometryTest.cxx index e5bb6b24c02..2fefe5fc0b2 100644 --- a/Modules/Core/Common/test/itkPointGeometryTest.cxx +++ b/Modules/Core/Common/test/itkPointGeometryTest.cxx @@ -297,5 +297,12 @@ itkPointGeometryTest(int, char *[]) std::cout << "Test for Barycentric combination of a VectorContainer of Points PASSED" << std::endl; } - return EXIT_SUCCESS; + // WIP: Deliberate test failure to verify CTEST_OUTPUT_ON_FAILURE + // works with -V instead of -VV. This is a test artifact for PR #5971 + // and must NOT be merged. + std::cerr << "DELIBERATE FAILURE: This output should appear in CI logs" << std::endl; + std::cerr << "because CTEST_OUTPUT_ON_FAILURE=1 is set and -V (not -VV)" << std::endl; + std::cerr << "is used. If you can read this in the CI log, the new" << std::endl; + std::cerr << "verbosity scheme is working correctly." << std::endl; + return EXIT_FAILURE; }