From 139d3cacba96b273d28ff628c1cd29f16bd0fd61 Mon Sep 17 00:00:00 2001 From: Lars Melchior Date: Thu, 4 Jun 2020 14:22:57 +0200 Subject: [PATCH] Add NO_CACHE option (#128) * add NO_CACHE option * add unit test --- cmake/CPM.cmake | 5 ++-- test/unit/cache.cmake | 39 +++++++++++++++---------------- test/unit/cache/CMakeLists.txt.in | 1 + 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake index 6575dac..b7d27fa 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.26.2) +set(CURRENT_CPM_VERSION 0.27) if(CPM_DIRECTORY) if(NOT CPM_DIRECTORY STREQUAL CMAKE_CURRENT_LIST_DIR) @@ -190,6 +190,7 @@ function(CPMAddPackage) SOURCE_DIR DOWNLOAD_COMMAND FIND_PACKAGE_ARGUMENTS + NO_CACHE ) set(multiValueArgs @@ -296,7 +297,7 @@ function(CPMAddPackage) list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS DOWNLOAD_COMMAND ${CPM_ARGS_DOWNLOAD_COMMAND}) elseif (DEFINED CPM_ARGS_SOURCE_DIR) list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS SOURCE_DIR ${CPM_ARGS_SOURCE_DIR}) - elseif (CPM_SOURCE_CACHE) + elseif (CPM_SOURCE_CACHE AND NOT CPM_ARGS_NO_CACHE) string(TOLOWER ${CPM_ARGS_NAME} lower_case_name) set(origin_parameters ${CPM_ARGS_UNPARSED_ARGUMENTS}) list(SORT origin_parameters) diff --git a/test/unit/cache.cmake b/test/unit/cache.cmake index 64d03d8..10f7fae 100644 --- a/test/unit/cache.cmake +++ b/test/unit/cache.cmake @@ -3,17 +3,13 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) 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) function(clear_cache) message(STATUS "clearing CPM cache") FILE(REMOVE_RECURSE ${CPM_SOURCE_CACHE_DIR}) - - if (EXISTS "${CPM_SOURCE_CACHE_DIR}") - ASSERTION_FAILED("cache not cleared") - endif() + ASSERT_NOT_EXISTS("${CPM_SOURCE_CACHE_DIR}") endfunction() function(update_cmake_lists) @@ -43,10 +39,7 @@ execute_process( ) ASSERT_EQUAL(${ret} "0") - -if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci") - ASSERTION_FAILED("fibonacci not in cache") -endif() +ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci") FILE(GLOB FIBONACCI_VERSIONs "${CPM_SOURCE_CACHE_DIR}/fibonacci/*") list(LENGTH FIBONACCI_VERSIONs FIBONACCI_VERSION_count) @@ -84,10 +77,7 @@ execute_process( ) ASSERT_EQUAL(${ret} "0") - -if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci") - ASSERTION_FAILED("fibonacci not in cache") -endif() +ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci") ## Read CPM_SOURCE_CACHE from environment @@ -100,10 +90,7 @@ execute_process( ) ASSERT_EQUAL(${ret} "0") - -if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci") - ASSERTION_FAILED("fibonacci not in cache") -endif() +ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci") ## Reuse cached packages for other build @@ -126,7 +113,19 @@ execute_process( ) ASSERT_EQUAL(${ret} "0") +ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci") -if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci") - ASSERTION_FAILED("fibonacci not in cache") -endif() +## Use NO_CACHE option + +set(FIBONACCI_PACKAGE_ARGS "NO_CACHE YES") +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}" + RESULT_VARIABLE ret +) + +ASSERT_EQUAL(${ret} "0") +ASSERT_NOT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci") diff --git a/test/unit/cache/CMakeLists.txt.in b/test/unit/cache/CMakeLists.txt.in index c47225c..1eb31f1 100644 --- a/test/unit/cache/CMakeLists.txt.in +++ b/test/unit/cache/CMakeLists.txt.in @@ -14,6 +14,7 @@ CPMAddPackage( NAME fibonacci GIT_REPOSITORY https://github.com/TheLartians/Fibonacci.git VERSION @FIBONACCI_VERSION@ + @FIBONACCI_PACKAGE_ARGS@ ) # ---- Create binary ----