ENH: Auto-enable CTest.UpdateCVS test on Windows
The test needs to create a cvs repository with 'cvs init', but the CVSNT client on Windows needs 'cvs init -n' to avoid administrator access. Previously we required users to explicitly enable CTEST_TEST_UPDATE_CVS to activate the test on Windows. This teaches the test to use the '-n' option when necessary. Now we can enable the test in all cases except when trying to use a cygwin cvs.exe without cygwin paths.
This commit is contained in:
parent
d3679610c6
commit
db024f444e
|
@ -897,25 +897,20 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
|
||||||
ENDIF(Subversion_FOUND)
|
ENDIF(Subversion_FOUND)
|
||||||
|
|
||||||
# Test CTest Update with CVS
|
# Test CTest Update with CVS
|
||||||
IF(UNIX)
|
|
||||||
# The test is expected to work by default on UNIX-like systems.
|
|
||||||
SET(CTEST_TEST_UPDATE_CVS 1)
|
|
||||||
ELSE(UNIX)
|
|
||||||
# Special CVS configuration is needed for test to pass on Windows.
|
|
||||||
OPTION(CTEST_TEST_UPDATE_CVS
|
|
||||||
"Enable CTest.UpdateCVS test. Requires extra CVS setup on windows."
|
|
||||||
OFF)
|
|
||||||
MARK_AS_ADVANCED(CTEST_TEST_UPDATE_CVS)
|
|
||||||
ENDIF(UNIX)
|
|
||||||
IF(CTEST_TEST_UPDATE_CVS)
|
|
||||||
IF(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
|
IF(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
|
||||||
FIND_PACKAGE(CVS QUIET)
|
FIND_PACKAGE(CVS QUIET)
|
||||||
ELSE(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
|
ELSE(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
|
||||||
FIND_PROGRAM(CVS_EXECUTABLE NAMES cvs)
|
FIND_PROGRAM(CVS_EXECUTABLE NAMES cvs)
|
||||||
SET(CVS_FOUND ${CVS_EXECUTABLE})
|
SET(CVS_FOUND ${CVS_EXECUTABLE})
|
||||||
ENDIF(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
|
ENDIF(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
|
||||||
ENDIF(CTEST_TEST_UPDATE_CVS)
|
SET(CTEST_TEST_UPDATE_CVS ${CVS_FOUND})
|
||||||
IF(CTEST_TEST_UPDATE_CVS AND CVS_FOUND)
|
IF(CTEST_TEST_UPDATE_CVS AND NOT UNIX)
|
||||||
|
IF("${CVS_EXECUTABLE}" MATCHES "cygwin")
|
||||||
|
MESSAGE(STATUS "No CTest.UpdateCVS test with cygwin cvs.exe outside cygwin!")
|
||||||
|
SET(CTEST_TEST_UPDATE_CVS 0)
|
||||||
|
ENDIF("${CVS_EXECUTABLE}" MATCHES "cygwin")
|
||||||
|
ENDIF(CTEST_TEST_UPDATE_CVS AND NOT UNIX)
|
||||||
|
IF(CTEST_TEST_UPDATE_CVS)
|
||||||
SET(CTestUpdateCVS_DIR "CTest UpdateCVS")
|
SET(CTestUpdateCVS_DIR "CTest UpdateCVS")
|
||||||
CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestUpdateCVS.cmake.in"
|
CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestUpdateCVS.cmake.in"
|
||||||
"${CMake_BINARY_DIR}/Tests/CTestUpdateCVS.cmake" @ONLY)
|
"${CMake_BINARY_DIR}/Tests/CTestUpdateCVS.cmake" @ONLY)
|
||||||
|
@ -923,7 +918,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
|
||||||
-P "${CMake_BINARY_DIR}/Tests/CTestUpdateCVS.cmake"
|
-P "${CMake_BINARY_DIR}/Tests/CTestUpdateCVS.cmake"
|
||||||
)
|
)
|
||||||
LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateCVS_DIR}")
|
LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateCVS_DIR}")
|
||||||
ENDIF(CTEST_TEST_UPDATE_CVS AND CVS_FOUND)
|
ENDIF(CTEST_TEST_UPDATE_CVS)
|
||||||
|
|
||||||
# Test CTest Update with BZR
|
# Test CTest Update with BZR
|
||||||
FIND_PROGRAM(BZR_EXECUTABLE NAMES bzr)
|
FIND_PROGRAM(BZR_EXECUTABLE NAMES bzr)
|
||||||
|
|
|
@ -18,6 +18,19 @@ message(" cvs = ${CVS}")
|
||||||
set(REPO ${TOP}/repo)
|
set(REPO ${TOP}/repo)
|
||||||
set(CVSCMD ${CVS} -d${REPO})
|
set(CVSCMD ${CVS} -d${REPO})
|
||||||
|
|
||||||
|
# CVSNT requires an extra option to 'cvs init'.
|
||||||
|
set(CVS_INIT_OPT)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CVS} --version
|
||||||
|
RESULT_VARIABLE RESULT
|
||||||
|
OUTPUT_VARIABLE OUTPUT
|
||||||
|
ERROR_VARIABLE OUTPUT
|
||||||
|
)
|
||||||
|
if("${RESULT}" STREQUAL "0" AND "${OUTPUT}" MATCHES "\\(CVSNT\\)")
|
||||||
|
set(CVS_INIT_OPT -n)
|
||||||
|
message(" cvs init needs -n")
|
||||||
|
endif()
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Initialize the testing directory.
|
# Initialize the testing directory.
|
||||||
message("Creating test directory...")
|
message("Creating test directory...")
|
||||||
|
@ -28,7 +41,7 @@ init_testing()
|
||||||
message("Creating repository...")
|
message("Creating repository...")
|
||||||
file(MAKE_DIRECTORY ${TOP}/repo)
|
file(MAKE_DIRECTORY ${TOP}/repo)
|
||||||
run_child(
|
run_child(
|
||||||
COMMAND ${CVSCMD} init
|
COMMAND ${CVSCMD} init ${CVS_INIT_OPT}
|
||||||
)
|
)
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue