mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2026-02-06 14:55:57 +08:00
@@ -31,7 +31,9 @@ class Basics < IntegrationTest
|
||||
assert_same_path File.join(prj.bin_dir, 'cpm-package-lock.cmake'), check_and_get('CPM_PACKAGE_LOCK_FILE')
|
||||
|
||||
assert_equal 'OFF', check_and_get('CPM_DONT_UPDATE_MODULE_PATH', 'BOOL')
|
||||
assert_same_path File.join(prj.bin_dir, 'CPM_modules'), check_and_get('CPM_MODULE_PATH')
|
||||
if @cache.entries['CMAKE_FIND_PACKAGE_REDIRECTS_DIR'].nil?
|
||||
assert_same_path File.join(prj.bin_dir, 'CPM_modules'), check_and_get('CPM_MODULE_PATH')
|
||||
end
|
||||
end
|
||||
|
||||
# Test when env CPM_SOURCE_CACHE is set
|
||||
|
||||
@@ -8,6 +8,10 @@ option(ENABLE_TEST_COVERAGE "Enable test coverage" OFF)
|
||||
|
||||
# ---- Dependencies ----
|
||||
|
||||
if (@TEST_FORCE_MODULE_MODE@)
|
||||
unset(CMAKE_FIND_PACKAGE_REDIRECTS_DIR CACHE)
|
||||
endif()
|
||||
|
||||
include(@CPM_PATH@/CPM.cmake)
|
||||
|
||||
CPMAddPackage(
|
||||
@@ -15,21 +19,23 @@ CPMAddPackage(
|
||||
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependency
|
||||
)
|
||||
|
||||
# ---- check if generated modules override find_package ----
|
||||
|
||||
if (@test_check_find_package@)
|
||||
find_package(@TEST_DEPENDENCY_NAME@ REQUIRED)
|
||||
endif()
|
||||
|
||||
# ---- Call dependency method to validate correct addition of directory ----
|
||||
|
||||
dependency_function()
|
||||
|
||||
# ---- Check parameters ----
|
||||
|
||||
# ---- Check newly added ----
|
||||
include(@CPM_PATH@/testing.cmake)
|
||||
|
||||
ASSERT_TRUTHY(@TEST_DEPENDENCY_NAME@_ADDED)
|
||||
|
||||
# ---- Check if generated modules override find_package ----
|
||||
|
||||
if (@TEST_FIND_PACKAGE@)
|
||||
find_package(@TEST_DEPENDENCY_NAME@ @TEST_FIND_PACKAGE_CONFIG@ REQUIRED)
|
||||
find_package(@TEST_CANT_FIND_PACKAGE_NAME@ @TEST_FIND_PACKAGE_CONFIG@ QUIET)
|
||||
ASSERT_FALSY(@TEST_CANT_FIND_PACKAGE_NAME@_FOUND)
|
||||
endif()
|
||||
|
||||
# ---- Check parameters ----
|
||||
ASSERT_DEFINED(@TEST_DEPENDENCY_NAME@_SOURCE_DIR)
|
||||
ASSERT_DEFINED(@TEST_DEPENDENCY_NAME@_BINARY_DIR)
|
||||
ASSERT_EQUAL("${CPM_LAST_PACKAGE_NAME}" "@TEST_DEPENDENCY_NAME@")
|
||||
|
||||
@@ -3,7 +3,8 @@ include(${CPM_PATH}/testing.cmake)
|
||||
|
||||
set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/modules)
|
||||
|
||||
function(init_project_with_dependency TEST_DEPENDENCY_NAME)
|
||||
function(init_project_with_dependency TEST_DEPENDENCY_NAME TEST_CANT_FIND_PACKAGE_NAME)
|
||||
set(TEST_FIND_PACKAGE ON)
|
||||
configure_package_config_file(
|
||||
"${CMAKE_CURRENT_LIST_DIR}/local_dependency/ModuleCMakeLists.txt.in"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/local_dependency/CMakeLists.txt"
|
||||
@@ -18,11 +19,17 @@ function(init_project_with_dependency TEST_DEPENDENCY_NAME)
|
||||
assert_equal(${ret} "0")
|
||||
endfunction()
|
||||
|
||||
init_project_with_dependency(A)
|
||||
assert_exists(${TEST_BUILD_DIR}/CPM_modules)
|
||||
assert_exists(${TEST_BUILD_DIR}/CPM_modules/FindA.cmake)
|
||||
assert_not_exists(${TEST_BUILD_DIR}/CPM_modules/FindB.cmake)
|
||||
init_project_with_dependency(A B)
|
||||
init_project_with_dependency(B A)
|
||||
|
||||
init_project_with_dependency(B)
|
||||
assert_not_exists(${TEST_BUILD_DIR}/CPM_modules/FindA.cmake)
|
||||
assert_exists(${TEST_BUILD_DIR}/CPM_modules/FindB.cmake)
|
||||
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.24.0")
|
||||
set(TEST_FIND_PACKAGE_CONFIG CONFIG)
|
||||
init_project_with_dependency(A B)
|
||||
init_project_with_dependency(B A)
|
||||
|
||||
# Test the fallback path for CMake <3.24 works
|
||||
set(TEST_FIND_PACKAGE_CONFIG)
|
||||
set(TEST_FORCE_MODULE_MODE ON)
|
||||
init_project_with_dependency(A B)
|
||||
init_project_with_dependency(B A)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user