From 56e319ce4ad7367c87380128c44728c8474fef53 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 5 Mar 2024 19:58:41 -0500 Subject: ctest: Fall back to CMake options for TLS server verification Use `CMAKE_TLS_VERIFY` if `CTEST_TLS_VERIFY` is not set. --- Help/variable/CTEST_TLS_VERIFY.rst | 3 +++ Modules/CTestTargets.cmake | 3 +++ Source/CTest/cmCTestSubmitCommand.cxx | 15 +++++++++++++-- Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 2 +- .../ctest_submit/FailDrop-TLSVerify-OFF-stdout.txt | 2 +- Tests/RunCMake/ctest_submit/RunCMakeTest.cmake | 2 +- 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Help/variable/CTEST_TLS_VERIFY.rst b/Help/variable/CTEST_TLS_VERIFY.rst index 22133bd..bce4969 100644 --- a/Help/variable/CTEST_TLS_VERIFY.rst +++ b/Help/variable/CTEST_TLS_VERIFY.rst @@ -8,3 +8,6 @@ Specify the CTest ``TLSVerify`` setting in a :manual:`ctest(1)` before including the :module:`CTest` module. The value is a boolean indicating whether to verify the server certificate when submitting to a dashboard via ``https://`` URLs. + +If ``CTEST_TLS_VERIFY`` is not set, :variable:`CMAKE_TLS_VERIFY` is +used instead. diff --git a/Modules/CTestTargets.cmake b/Modules/CTestTargets.cmake index 2e11d64..3fcf702 100644 --- a/Modules/CTestTargets.cmake +++ b/Modules/CTestTargets.cmake @@ -21,6 +21,9 @@ mark_as_advanced(CMAKE_CTEST_COMMAND) # configure files block() + if(NOT DEFINED CTEST_TLS_VERIFY AND DEFINED CMAKE_TLS_VERIFY) + set(CTEST_TLS_VERIFY "${CMAKE_TLS_VERIFY}") + endif() if(CTEST_NEW_FORMAT) configure_file( ${CMAKE_ROOT}/Modules/DartConfiguration.tcl.in diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx index 616ad4a..ec5f702 100644 --- a/Source/CTest/cmCTestSubmitCommand.cxx +++ b/Source/CTest/cmCTestSubmitCommand.cxx @@ -57,8 +57,19 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() this->CTest->SetCTestConfigurationFromCMakeVariable( this->Makefile, "TLSVersion", "CTEST_TLS_VERSION", this->Quiet); - this->CTest->SetCTestConfigurationFromCMakeVariable( - this->Makefile, "TLSVerify", "CTEST_TLS_VERIFY", this->Quiet); + if (!this->CTest->SetCTestConfigurationFromCMakeVariable( + this->Makefile, "TLSVerify", "CTEST_TLS_VERIFY", this->Quiet)) { + if (cmValue tlsVerifyVar = + this->Makefile->GetDefinition("CMAKE_TLS_VERIFY")) { + cmCTestOptionalLog( + this->CTest, HANDLER_VERBOSE_OUTPUT, + "SetCTestConfiguration from CMAKE_TLS_VERIFY:TLSVerify:" + << *tlsVerifyVar << std::endl, + this->Quiet); + this->CTest->SetCTestConfiguration("TLSVerify", *tlsVerifyVar, + this->Quiet); + } + } this->CTest->SetCTestConfigurationFromCMakeVariable( this->Makefile, "CurlOptions", "CTEST_CURL_OPTIONS", this->Quiet); this->CTest->SetCTestConfigurationFromCMakeVariable( diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index 27a6fab..c3e573a 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -498,7 +498,7 @@ function(run_FailDrop case) endfunction() run_FailDrop(TLSVersion-1.1 -DCTEST_TLS_VERSION=1.1) run_FailDrop(TLSVerify-ON -DCTEST_TLS_VERIFY=ON) -run_FailDrop(TLSVerify-OFF -DCTEST_TLS_VERIFY=OFF) +run_FailDrop(TLSVerify-OFF -DCMAKE_TLS_VERIFY=OFF) # Test fallback to CMake variable. run_cmake_command(EmptyDirCoverage-ctest ${CMAKE_CTEST_COMMAND} -C Debug -M Experimental -T Coverage diff --git a/Tests/RunCMake/ctest_submit/FailDrop-TLSVerify-OFF-stdout.txt b/Tests/RunCMake/ctest_submit/FailDrop-TLSVerify-OFF-stdout.txt index 9053f6c..4f5120e 100644 --- a/Tests/RunCMake/ctest_submit/FailDrop-TLSVerify-OFF-stdout.txt +++ b/Tests/RunCMake/ctest_submit/FailDrop-TLSVerify-OFF-stdout.txt @@ -1,4 +1,4 @@ -SetCTestConfigurationFromCMakeVariable:TLSVerify:CTEST_TLS_VERIFY +SetCTestConfiguration from CMAKE_TLS_VERIFY:TLSVerify:OFF SetCTestConfiguration:TLSVerify:OFF .* Set CURLOPT_SSL_VERIFYPEER to off diff --git a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake index 5ac568f..46b0ba8 100644 --- a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake @@ -61,6 +61,6 @@ block() run_ctest(FailDrop-TLSVersion-1.1 -VV) set(CASE_TEST_PREFIX_CODE "set(CTEST_TLS_VERIFY ON)") run_ctest(FailDrop-TLSVerify-ON -VV) - set(CASE_TEST_PREFIX_CODE "set(CTEST_TLS_VERIFY OFF)") + set(CASE_TEST_PREFIX_CODE "set(CMAKE_TLS_VERIFY OFF)") # Test fallback to CMake variable. run_ctest(FailDrop-TLSVerify-OFF -VV) endblock() -- cgit v0.12