diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake index 5deb6fd..fac381d 100644 --- a/cmake/CPM.cmake +++ b/cmake/CPM.cmake @@ -28,7 +28,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) -set(CURRENT_CPM_VERSION 0.27) +set(CURRENT_CPM_VERSION 0.27.1) if(CPM_DIRECTORY) if(NOT CPM_DIRECTORY STREQUAL CMAKE_CURRENT_LIST_DIR) @@ -317,7 +317,7 @@ function(CPMAddPackage) # Enable shallow clone when GIT_TAG is not a commit hash. # Our guess may not be accurate, but it should guarantee no commit hash get mis-detected. if (NOT DEFINED CPM_ARGS_GIT_SHALLOW) - cpm_is_git_tag_commit_hash(${CPM_ARGS_GIT_TAG} IS_HASH) + cpm_is_git_tag_commit_hash("${CPM_ARGS_GIT_TAG}" IS_HASH) if (NOT ${IS_HASH}) list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS GIT_SHALLOW TRUE) endif() @@ -491,7 +491,7 @@ endfunction() # guesses if the git tag is a commit hash or an actual tag or a branch nane. function(cpm_is_git_tag_commit_hash GIT_TAG RESULT) - string(LENGTH ${GIT_TAG} length) + string(LENGTH "${GIT_TAG}" length) # full hash has 40 characters, and short hash has at least 7 characters. if (length LESS 7 OR length GREATER 40) SET(${RESULT} 0 PARENT_SCOPE) diff --git a/test/unit/cache.cmake b/test/unit/cache.cmake index 10f7fae..3fe07ef 100644 --- a/test/unit/cache.cmake +++ b/test/unit/cache.cmake @@ -4,7 +4,7 @@ include(${CPM_PATH}/testing.cmake) include(CMakePackageConfigHelpers) set(CPM_SOURCE_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/CPM") -set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/cache) +set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/remote_dependency) function(clear_cache) message(STATUS "clearing CPM cache") @@ -14,8 +14,8 @@ endfunction() function(update_cmake_lists) configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/cache/CMakeLists.txt.in" - "${CMAKE_CURRENT_LIST_DIR}/cache/CMakeLists.txt" + "${CMAKE_CURRENT_LIST_DIR}/remote_dependency/CMakeLists.txt.in" + "${CMAKE_CURRENT_LIST_DIR}/remote_dependency/CMakeLists.txt" INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk ) endfunction() @@ -34,7 +34,7 @@ reset_test() execute_process( COMMAND - ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/cache" "-B${TEST_BUILD_DIR}" "-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" + ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" "-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" RESULT_VARIABLE ret ) @@ -85,7 +85,7 @@ reset_test() execute_process( COMMAND - ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/cache" "-B${TEST_BUILD_DIR}" + ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" RESULT_VARIABLE ret ) @@ -96,7 +96,7 @@ ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci") execute_process( COMMAND - ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/cache" "-B${TEST_BUILD_DIR}-2" + ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}-2" RESULT_VARIABLE ret ) @@ -108,7 +108,7 @@ reset_test() execute_process( COMMAND - ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CMAKE_CURRENT_BINARY_DIR}/junk" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/cache" "-B${TEST_BUILD_DIR}" "-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" + ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CMAKE_CURRENT_BINARY_DIR}/junk" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" "-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" RESULT_VARIABLE ret ) @@ -118,12 +118,28 @@ ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci") ## Use NO_CACHE option set(FIBONACCI_PACKAGE_ARGS "NO_CACHE YES") +set(FIBONACCI_VERSION 1.0) update_cmake_lists() reset_test() execute_process( COMMAND - ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/cache" "-B${TEST_BUILD_DIR}" + ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" + RESULT_VARIABLE ret +) + +ASSERT_EQUAL(${ret} "0") +ASSERT_NOT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci") + +## Use commit hash after version + +set(FIBONACCI_PACKAGE_ARGS "NO_CACHE YES GIT_TAG e9ebf168ca0fffaa4ef8c6fefc6346aaa22f6ed5") +set(FIBONACCI_VERSION 1.1) +update_cmake_lists() + +execute_process( + COMMAND + ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" RESULT_VARIABLE ret ) diff --git a/test/unit/test_project/.gitignore b/test/unit/local_dependency/.gitignore similarity index 100% rename from test/unit/test_project/.gitignore rename to test/unit/local_dependency/.gitignore diff --git a/test/unit/test_project/ModuleCMakeLists.txt.in b/test/unit/local_dependency/ModuleCMakeLists.txt.in similarity index 100% rename from test/unit/test_project/ModuleCMakeLists.txt.in rename to test/unit/local_dependency/ModuleCMakeLists.txt.in diff --git a/test/unit/test_project/OverrideCMakeLists.txt.in b/test/unit/local_dependency/OverrideCMakeLists.txt.in similarity index 100% rename from test/unit/test_project/OverrideCMakeLists.txt.in rename to test/unit/local_dependency/OverrideCMakeLists.txt.in diff --git a/test/unit/test_project/PackageLockCMakeLists.txt.in b/test/unit/local_dependency/PackageLockCMakeLists.txt.in similarity index 100% rename from test/unit/test_project/PackageLockCMakeLists.txt.in rename to test/unit/local_dependency/PackageLockCMakeLists.txt.in diff --git a/test/unit/test_project/dependency/CMakeLists.txt b/test/unit/local_dependency/dependency/CMakeLists.txt similarity index 100% rename from test/unit/test_project/dependency/CMakeLists.txt rename to test/unit/local_dependency/dependency/CMakeLists.txt diff --git a/test/unit/modules.cmake b/test/unit/modules.cmake index b207df2..09c22e5 100644 --- a/test/unit/modules.cmake +++ b/test/unit/modules.cmake @@ -6,14 +6,14 @@ set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/modules) function(initProjectWithDependency TEST_DEPENDENCY_NAME) configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/test_project/ModuleCMakeLists.txt.in" - "${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt" + "${CMAKE_CURRENT_LIST_DIR}/local_dependency/ModuleCMakeLists.txt.in" + "${CMAKE_CURRENT_LIST_DIR}/local_dependency/CMakeLists.txt" INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk ) execute_process( COMMAND - ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/test_project" "-B${TEST_BUILD_DIR}" + ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/local_dependency" "-B${TEST_BUILD_DIR}" RESULT_VARIABLE ret ) diff --git a/test/unit/package-lock.cmake b/test/unit/package-lock.cmake index f7d4abc..d5ca2ad 100644 --- a/test/unit/package-lock.cmake +++ b/test/unit/package-lock.cmake @@ -10,20 +10,20 @@ function(configureWithDeclare DECLARE_DEPENDENCY) if (DECLARE_DEPENDENCY) set(PREPARE_CODE "CPMDeclarePackage(Dependency NAME Dependency - SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/test_project/dependency + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/local_dependency/dependency )") else() set(PREPARE_CODE "") endif() configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/test_project/PackageLockCMakeLists.txt.in" - "${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt" + "${CMAKE_CURRENT_LIST_DIR}/local_dependency/PackageLockCMakeLists.txt.in" + "${CMAKE_CURRENT_LIST_DIR}/local_dependency/CMakeLists.txt" INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk ) execute_process( - COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/test_project -B${TEST_BUILD_DIR} -DCPM_INCLUDE_ALL_IN_PACKAGE_LOCK=1 + COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/local_dependency -B${TEST_BUILD_DIR} -DCPM_INCLUDE_ALL_IN_PACKAGE_LOCK=1 RESULT_VARIABLE ret ) @@ -39,11 +39,11 @@ function(updatePackageLock) ASSERT_EQUAL(${ret} "0") endfunction() -execute_process(COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/test_project/package-lock.cmake) +execute_process(COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake) configureWithDeclare(YES) -ASSERT_NOT_EXISTS(${CMAKE_CURRENT_LIST_DIR}/test_project/package-lock.cmake) +ASSERT_NOT_EXISTS(${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake) updatePackageLock() -ASSERT_EXISTS(${CMAKE_CURRENT_LIST_DIR}/test_project/package-lock.cmake) +ASSERT_EXISTS(${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake) configureWithDeclare(NO) -execute_process(COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/test_project/package-lock.cmake) +execute_process(COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake) diff --git a/test/unit/package-override.cmake b/test/unit/package-override.cmake index 3ab7b6d..d43a744 100644 --- a/test/unit/package-override.cmake +++ b/test/unit/package-override.cmake @@ -7,13 +7,13 @@ set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/project-override) execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf ${TEST_BUILD_DIR}) configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/test_project/OverrideCMakeLists.txt.in" - "${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt" + "${CMAKE_CURRENT_LIST_DIR}/local_dependency/OverrideCMakeLists.txt.in" + "${CMAKE_CURRENT_LIST_DIR}/local_dependency/CMakeLists.txt" INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk ) execute_process( - COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/test_project -B${TEST_BUILD_DIR} -DCPM_Dependency_SOURCE=${CMAKE_CURRENT_LIST_DIR}/test_project/dependency + COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/local_dependency -B${TEST_BUILD_DIR} -DCPM_Dependency_SOURCE=${CMAKE_CURRENT_LIST_DIR}/local_dependency/dependency RESULT_VARIABLE ret ) diff --git a/test/unit/cache/.gitignore b/test/unit/remote_dependency/.gitignore similarity index 100% rename from test/unit/cache/.gitignore rename to test/unit/remote_dependency/.gitignore diff --git a/test/unit/cache/CMakeLists.txt.in b/test/unit/remote_dependency/CMakeLists.txt.in similarity index 100% rename from test/unit/cache/CMakeLists.txt.in rename to test/unit/remote_dependency/CMakeLists.txt.in diff --git a/test/unit/cache/main.cpp b/test/unit/remote_dependency/main.cpp similarity index 100% rename from test/unit/cache/main.cpp rename to test/unit/remote_dependency/main.cpp diff --git a/test/unit/source_dir.cmake b/test/unit/source_dir.cmake index c78294e..66be79e 100644 --- a/test/unit/source_dir.cmake +++ b/test/unit/source_dir.cmake @@ -7,14 +7,14 @@ set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/source_dir) set(TEST_DEPENDENCY_NAME Dependency) configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/test_project/ModuleCMakeLists.txt.in" - "${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt" + "${CMAKE_CURRENT_LIST_DIR}/local_dependency/ModuleCMakeLists.txt.in" + "${CMAKE_CURRENT_LIST_DIR}/local_dependency/CMakeLists.txt" INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk ) execute_process( COMMAND - ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/test_project" "-B${TEST_BUILD_DIR}" + ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/local_dependency" "-B${TEST_BUILD_DIR}" RESULT_VARIABLE ret )