ctest: Fall back to CMake environment variable for TLS server verification

Use `ENV{CMAKE_TLS_VERIFY}` if `CTEST_TLS_VERIFY` or `CMAKE_TLS_VERIFY`
is not set.

Issue: #23608
stage/master/nightly/2024/03/31^2
Brad King 2024-03-29 12:48:11 -04:00
parent c295df53c6
commit 7139944264
19 changed files with 56 additions and 4 deletions

View File

@ -9,5 +9,5 @@ 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.
If ``CTEST_TLS_VERIFY`` is not set, the :variable:`CMAKE_TLS_VERIFY` variable
or :envvar:`CMAKE_TLS_VERIFY` environment variable is used instead.

View File

@ -28,8 +28,12 @@ block()
set(CTEST_TLS_VERSION "$ENV{CMAKE_TLS_VERSION}")
endif()
endif()
if(NOT DEFINED CTEST_TLS_VERIFY AND DEFINED CMAKE_TLS_VERIFY)
set(CTEST_TLS_VERIFY "${CMAKE_TLS_VERIFY}")
if(NOT DEFINED CTEST_TLS_VERIFY)
if(DEFINED CMAKE_TLS_VERIFY)
set(CTEST_TLS_VERIFY "${CMAKE_TLS_VERIFY}")
elseif(DEFINED ENV{CMAKE_TLS_VERIFY})
set(CTEST_TLS_VERIFY "$ENV{CMAKE_TLS_VERIFY}")
endif()
endif()
if(CTEST_NEW_FORMAT)
configure_file(

View File

@ -88,6 +88,15 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler()
this->Quiet);
this->CTest->SetCTestConfiguration("TLSVerify", *tlsVerifyVar,
this->Quiet);
} else if (cm::optional<std::string> tlsVerifyEnv =
cmSystemTools::GetEnvVar("CMAKE_TLS_VERIFY")) {
cmCTestOptionalLog(
this->CTest, HANDLER_VERBOSE_OUTPUT,
"SetCTestConfiguration from ENV{CMAKE_TLS_VERIFY}:TLSVerify:"
<< *tlsVerifyEnv << std::endl,
this->Quiet);
this->CTest->SetCTestConfiguration("TLSVerify", *tlsVerifyEnv,
this->Quiet);
}
}
this->CTest->SetCTestConfigurationFromCMakeVariable(

View File

@ -0,0 +1,2 @@
Error message was: ([Cc]ould *n.t resolve host:? '?badhostname.invalid'?|The requested URL returned error:|Protocol "https" (not supported or disabled|not supported|disabled)|.* was built with SSL disabled).*
Problems when submitting via HTTP

View File

@ -0,0 +1 @@
Set CURLOPT_SSL_VERIFYPEER to off

View File

@ -0,0 +1 @@
include(FailDrop-common.cmake)

View File

@ -0,0 +1,2 @@
Error message was: ([Cc]ould *n.t resolve host:? '?badhostname.invalid'?|The requested URL returned error:|Protocol "https" (not supported or disabled|not supported|disabled)|.* was built with SSL disabled).*
Problems when submitting via HTTP

View File

@ -0,0 +1 @@
Set CURLOPT_SSL_VERIFYPEER to on

View File

@ -0,0 +1 @@
include(FailDrop-common.cmake)

View File

@ -491,6 +491,7 @@ run_ctest(check-configuration-type)
function(run_FailDrop case)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/FailDrop-${case}-build)
run_cmake_with_options(FailDrop-${case} ${ARGN})
unset(ENV{CMAKE_TLS_VERIFY}) # Test that env variable is saved in ctest config file.
unset(ENV{CMAKE_TLS_VERSION}) # Test that env variable is saved in ctest config file.
set(RunCMake_TEST_NO_CLEAN 1)
run_cmake_command(FailDrop-${case}-ctest
@ -504,8 +505,14 @@ run_FailDrop(TLSVersion-1.1-env)
unset(ENV{CMAKE_TLS_VERSION})
run_FailDrop(TLSVerify-ON -DCTEST_TLS_VERIFY=ON)
run_FailDrop(TLSVerify-ON-cmake -DCMAKE_TLS_VERIFY=ON) # Test fallback to CMake variable.
set(ENV{CMAKE_TLS_VERIFY} 1) # Test fallback to env variable.
run_FailDrop(TLSVerify-ON-env)
unset(ENV{CMAKE_TLS_VERIFY})
run_FailDrop(TLSVerify-OFF -DCTEST_TLS_VERIFY=OFF)
run_FailDrop(TLSVerify-OFF-cmake -DCMAKE_TLS_VERIFY=OFF) # Test fallback to CMake variable.
set(ENV{CMAKE_TLS_VERIFY} 0) # Test fallback to env variable.
run_FailDrop(TLSVerify-OFF-env)
unset(ENV{CMAKE_TLS_VERIFY})
run_cmake_command(EmptyDirCoverage-ctest
${CMAKE_CTEST_COMMAND} -C Debug -M Experimental -T Coverage

View File

@ -0,0 +1 @@
(-1|255)

View File

@ -0,0 +1,2 @@
Error message was: ([Cc]ould *n.t resolve host:? '?badhostname.invalid'?|The requested URL returned error:|Protocol "https" (not supported or disabled|not supported|disabled)|.* was built with SSL disabled).*
Problems when submitting via HTTP

View File

@ -0,0 +1,4 @@
SetCTestConfiguration from ENV{CMAKE_TLS_VERIFY}:TLSVerify:OFF
SetCTestConfiguration:TLSVerify:OFF
.*
Set CURLOPT_SSL_VERIFYPEER to off

View File

@ -0,0 +1 @@
(-1|255)

View File

@ -0,0 +1,2 @@
Error message was: ([Cc]ould *n.t resolve host:? '?badhostname.invalid'?|The requested URL returned error:|Protocol "https" (not supported or disabled|not supported|disabled)|.* was built with SSL disabled).*
Problems when submitting via HTTP

View File

@ -0,0 +1,4 @@
SetCTestConfiguration from ENV{CMAKE_TLS_VERIFY}:TLSVerify:ON
SetCTestConfiguration:TLSVerify:ON
.*
Set CURLOPT_SSL_VERIFYPEER to on

View File

@ -69,8 +69,16 @@ block()
run_ctest(FailDrop-TLSVerify-ON -VV)
set(CASE_TEST_PREFIX_CODE "set(CMAKE_TLS_VERIFY ON)") # Test fallback to CMake variable.
run_ctest(FailDrop-TLSVerify-ON-cmake -VV)
set(ENV{CMAKE_TLS_VERIFY} ON) # Test fallback to env variable.
set(CASE_TEST_PREFIX_CODE "")
run_ctest(FailDrop-TLSVerify-ON-env -VV)
unset(ENV{CMAKE_TLS_VERIFY})
set(CASE_TEST_PREFIX_CODE "set(CTEST_TLS_VERIFY OFF)")
run_ctest(FailDrop-TLSVerify-OFF -VV)
set(CASE_TEST_PREFIX_CODE "set(CMAKE_TLS_VERIFY OFF)") # Test fallback to CMake variable.
run_ctest(FailDrop-TLSVerify-OFF-cmake -VV)
set(ENV{CMAKE_TLS_VERIFY} OFF) # Test fallback to env variable.
set(CASE_TEST_PREFIX_CODE "")
run_ctest(FailDrop-TLSVerify-OFF-env -VV)
unset(ENV{CMAKE_TLS_VERIFY})
endblock()