mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-17 06:37:43 -05:00
* use semicolon as empty command and add test * remove platform specific test coverage * only run actions for pushes and prs into master (avoid duplication) * remove cache test as it's already part of the test suite * update version * test cache reuse
133 lines
3.2 KiB
CMake
133 lines
3.2 KiB
CMake
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()
|
|
endfunction()
|
|
|
|
function(update_cmake_lists)
|
|
configure_package_config_file(
|
|
"${CMAKE_CURRENT_LIST_DIR}/cache/CMakeLists.txt.in"
|
|
"${CMAKE_CURRENT_LIST_DIR}/cache/CMakeLists.txt"
|
|
INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk
|
|
)
|
|
endfunction()
|
|
|
|
function(reset_test)
|
|
clear_cache()
|
|
FILE(REMOVE_RECURSE ${TEST_BUILD_DIR})
|
|
update_cmake_lists()
|
|
endfunction()
|
|
|
|
set(FIBONACCI_VERSION 1.0)
|
|
|
|
## Read CPM_SOURCE_CACHE from arguments
|
|
|
|
reset_test()
|
|
|
|
execute_process(
|
|
COMMAND
|
|
${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/cache" "-B${TEST_BUILD_DIR}" "-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}"
|
|
RESULT_VARIABLE ret
|
|
)
|
|
|
|
ASSERT_EQUAL(${ret} "0")
|
|
|
|
if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
|
ASSERTION_FAILED("fibonacci not in cache")
|
|
endif()
|
|
|
|
FILE(GLOB FIBONACCI_VERSIONs "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
|
list(LENGTH FIBONACCI_VERSIONs FIBONACCI_VERSION_count)
|
|
ASSERT_EQUAL(${FIBONACCI_VERSION_count} "1")
|
|
|
|
FILE(GLOB fibonacci_versions "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
|
list(LENGTH fibonacci_versions fibonacci_version_count)
|
|
ASSERT_EQUAL(${fibonacci_version_count} "1")
|
|
|
|
## Update dependency and keep CPM_SOURCE_CACHE
|
|
|
|
set(FIBONACCI_VERSION 2.0)
|
|
update_cmake_lists()
|
|
|
|
execute_process(
|
|
COMMAND
|
|
${CMAKE_COMMAND} ${TEST_BUILD_DIR}
|
|
RESULT_VARIABLE ret
|
|
)
|
|
|
|
ASSERT_EQUAL(${ret} "0")
|
|
|
|
FILE(GLOB FIBONACCI_VERSIONs "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
|
list(LENGTH FIBONACCI_VERSIONs FIBONACCI_VERSION_count)
|
|
ASSERT_EQUAL(${FIBONACCI_VERSION_count} "2")
|
|
|
|
## Clear cache and update
|
|
|
|
clear_cache()
|
|
|
|
execute_process(
|
|
COMMAND
|
|
${CMAKE_COMMAND} ${TEST_BUILD_DIR}
|
|
RESULT_VARIABLE ret
|
|
)
|
|
|
|
ASSERT_EQUAL(${ret} "0")
|
|
|
|
if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
|
ASSERTION_FAILED("fibonacci not in cache")
|
|
endif()
|
|
|
|
## Read CPM_SOURCE_CACHE from environment
|
|
|
|
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")
|
|
|
|
if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
|
ASSERTION_FAILED("fibonacci not in cache")
|
|
endif()
|
|
|
|
## Reuse cached packages for other build
|
|
|
|
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"
|
|
RESULT_VARIABLE ret
|
|
)
|
|
|
|
ASSERT_EQUAL(${ret} "0")
|
|
|
|
## Overwrite CPM_SOURCE_CACHE with argument
|
|
|
|
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}"
|
|
RESULT_VARIABLE ret
|
|
)
|
|
|
|
ASSERT_EQUAL(${ret} "0")
|
|
|
|
if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
|
ASSERTION_FAILED("fibonacci not in cache")
|
|
endif()
|