From 0b85f8f137716fd415e2ede7d1ac0167d4d5f3e2 Mon Sep 17 00:00:00 2001 From: Benjamin Buch Date: Sat, 22 Mar 2025 19:46:51 +0100 Subject: [PATCH] Tests: Add cases for CMAKE_PARENT_LIST_FILE with include() and find_package() Issue: #25026 Co-authored-by: Brad King --- Tests/RunCMake/find_package/ParentVariable-stdout.txt | 5 +++++ Tests/RunCMake/find_package/ParentVariable.cmake | 4 ++++ .../find_package/ParentVariable/PrimaryConfig.cmake | 3 +++ .../find_package/ParentVariable/SecondaryConfig.cmake | 1 + Tests/RunCMake/find_package/RunCMakeTest.cmake | 1 + Tests/RunCMake/include/CMakeLists.txt | 6 ++++++ Tests/RunCMake/include/ParentVariableRoot-stdout.txt | 5 +++++ Tests/RunCMake/include/ParentVariableRoot/include1.cmake | 3 +++ Tests/RunCMake/include/ParentVariableRoot/include2.cmake | 1 + Tests/RunCMake/include/ParentVariableScript-stdout.txt | 5 +++++ Tests/RunCMake/include/ParentVariableScript.cmake | 6 ++++++ Tests/RunCMake/include/ParentVariableScript/include1.cmake | 3 +++ Tests/RunCMake/include/ParentVariableScript/include2.cmake | 1 + Tests/RunCMake/include/ParentVariableSubDir-stdout.txt | 7 +++++++ Tests/RunCMake/include/ParentVariableSubDir.cmake | 1 + Tests/RunCMake/include/ParentVariableSubDir/CMakeLists.txt | 3 +++ .../include/ParentVariableSubDir/Inc/CMakeLists.txt | 1 + .../include/ParentVariableSubDir/Inc/include2.cmake | 1 + Tests/RunCMake/include/ParentVariableSubDir/include1.cmake | 5 +++++ Tests/RunCMake/include/RunCMakeTest.cmake | 3 +++ 20 files changed, 65 insertions(+) create mode 100644 Tests/RunCMake/find_package/ParentVariable-stdout.txt create mode 100644 Tests/RunCMake/find_package/ParentVariable.cmake create mode 100644 Tests/RunCMake/find_package/ParentVariable/PrimaryConfig.cmake create mode 100644 Tests/RunCMake/find_package/ParentVariable/SecondaryConfig.cmake create mode 100644 Tests/RunCMake/include/ParentVariableRoot-stdout.txt create mode 100644 Tests/RunCMake/include/ParentVariableRoot/include1.cmake create mode 100644 Tests/RunCMake/include/ParentVariableRoot/include2.cmake create mode 100644 Tests/RunCMake/include/ParentVariableScript-stdout.txt create mode 100644 Tests/RunCMake/include/ParentVariableScript.cmake create mode 100644 Tests/RunCMake/include/ParentVariableScript/include1.cmake create mode 100644 Tests/RunCMake/include/ParentVariableScript/include2.cmake create mode 100644 Tests/RunCMake/include/ParentVariableSubDir-stdout.txt create mode 100644 Tests/RunCMake/include/ParentVariableSubDir.cmake create mode 100644 Tests/RunCMake/include/ParentVariableSubDir/CMakeLists.txt create mode 100644 Tests/RunCMake/include/ParentVariableSubDir/Inc/CMakeLists.txt create mode 100644 Tests/RunCMake/include/ParentVariableSubDir/Inc/include2.cmake create mode 100644 Tests/RunCMake/include/ParentVariableSubDir/include1.cmake diff --git a/Tests/RunCMake/find_package/ParentVariable-stdout.txt b/Tests/RunCMake/find_package/ParentVariable-stdout.txt new file mode 100644 index 0000000000..a5aeac33aa --- /dev/null +++ b/Tests/RunCMake/find_package/ParentVariable-stdout.txt @@ -0,0 +1,5 @@ +-- ParentVariable\.cmake: '[^']*/Tests/RunCMake/find_package/CMakeLists\.txt' +-- ParentVariable/PrimaryConfig\.cmake: '[^']*/Tests/RunCMake/find_package/ParentVariable\.cmake' +-- ParentVariable/SecondaryConfig\.cmake: '[^']*/Tests/RunCMake/find_package/ParentVariable/PrimaryConfig\.cmake' +-- ParentVariable/PrimaryConfig\.cmake: '[^']*/Tests/RunCMake/find_package/ParentVariable/PrimaryConfig\.cmake' +-- ParentVariable\.cmake: '[^']*/Tests/RunCMake/find_package/ParentVariable\.cmake' diff --git a/Tests/RunCMake/find_package/ParentVariable.cmake b/Tests/RunCMake/find_package/ParentVariable.cmake new file mode 100644 index 0000000000..3c4fb2e1e7 --- /dev/null +++ b/Tests/RunCMake/find_package/ParentVariable.cmake @@ -0,0 +1,4 @@ +message(STATUS "ParentVariable\.cmake: '${CMAKE_PARENT_LIST_FILE}'") +set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ParentVariable) +find_package(Primary QUIET CONFIG REQUIRED) +message(STATUS "ParentVariable\.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/find_package/ParentVariable/PrimaryConfig.cmake b/Tests/RunCMake/find_package/ParentVariable/PrimaryConfig.cmake new file mode 100644 index 0000000000..91c1ae7acb --- /dev/null +++ b/Tests/RunCMake/find_package/ParentVariable/PrimaryConfig.cmake @@ -0,0 +1,3 @@ +message(STATUS "ParentVariable/PrimaryConfig\.cmake: '${CMAKE_PARENT_LIST_FILE}'") +find_package(Secondary QUIET CONFIG REQUIRED) +message(STATUS "ParentVariable/PrimaryConfig\.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/find_package/ParentVariable/SecondaryConfig.cmake b/Tests/RunCMake/find_package/ParentVariable/SecondaryConfig.cmake new file mode 100644 index 0000000000..3ffa3662d0 --- /dev/null +++ b/Tests/RunCMake/find_package/ParentVariable/SecondaryConfig.cmake @@ -0,0 +1 @@ +message(STATUS "ParentVariable/SecondaryConfig\.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/find_package/RunCMakeTest.cmake b/Tests/RunCMake/find_package/RunCMakeTest.cmake index ad71e5f49b..5affd8a163 100644 --- a/Tests/RunCMake/find_package/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_package/RunCMakeTest.cmake @@ -87,6 +87,7 @@ run_cmake(REGISTRY_VIEW-no-view) run_cmake(REGISTRY_VIEW-wrong-view) run_cmake(REGISTRY_VIEW-propagated) run_cmake(DebugRoot) +run_cmake(ParentVariable) if(CMAKE_HOST_WIN32 AND MINGW) run_cmake(MSYSTEM_PREFIX) diff --git a/Tests/RunCMake/include/CMakeLists.txt b/Tests/RunCMake/include/CMakeLists.txt index bf2ef1506e..3dd7323fb6 100644 --- a/Tests/RunCMake/include/CMakeLists.txt +++ b/Tests/RunCMake/include/CMakeLists.txt @@ -1,3 +1,9 @@ cmake_minimum_required(VERSION 3.10) project(${RunCMake_TEST} NONE) +if(RunCMake_TEST STREQUAL "ParentVariableRoot") + message(STATUS "CMakeLists.txt: '${CMAKE_PARENT_LIST_FILE}'") + include(ParentVariableRoot/include1.cmake) + message(STATUS "CMakeLists.txt: '${CMAKE_PARENT_LIST_FILE}'") + return() +endif() include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/include/ParentVariableRoot-stdout.txt b/Tests/RunCMake/include/ParentVariableRoot-stdout.txt new file mode 100644 index 0000000000..a76f52353d --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableRoot-stdout.txt @@ -0,0 +1,5 @@ +-- CMakeLists\.txt: '[^']*/Tests/RunCMake/include/CMakeLists\.txt' +-- ParentVariableRoot/include1\.cmake: '[^']*/Tests/RunCMake/include/CMakeLists\.txt' +-- ParentVariableRoot/include2\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableRoot/include1\.cmake' +-- ParentVariableRoot/include1\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableRoot/include1\.cmake' +-- CMakeLists\.txt: '[^']*/Tests/RunCMake/include/CMakeLists\.txt' diff --git a/Tests/RunCMake/include/ParentVariableRoot/include1.cmake b/Tests/RunCMake/include/ParentVariableRoot/include1.cmake new file mode 100644 index 0000000000..5ca32f0ebc --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableRoot/include1.cmake @@ -0,0 +1,3 @@ +message(STATUS "ParentVariableRoot/include1.cmake: '${CMAKE_PARENT_LIST_FILE}'") +include(ParentVariableRoot/include2.cmake) +message(STATUS "ParentVariableRoot/include1.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/ParentVariableRoot/include2.cmake b/Tests/RunCMake/include/ParentVariableRoot/include2.cmake new file mode 100644 index 0000000000..3eb20031b8 --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableRoot/include2.cmake @@ -0,0 +1 @@ +message(STATUS "ParentVariableRoot/include2.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/ParentVariableScript-stdout.txt b/Tests/RunCMake/include/ParentVariableScript-stdout.txt new file mode 100644 index 0000000000..3b1030efa0 --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableScript-stdout.txt @@ -0,0 +1,5 @@ +-- ParentVariableScript\.cmake: '' +-- ParentVariableScript/include1\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableScript\.cmake' +-- ParentVariableScript/include2\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableScript/include1\.cmake' +-- ParentVariableScript/include1\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableScript/include1\.cmake' +-- ParentVariableScript\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableScript\.cmake' diff --git a/Tests/RunCMake/include/ParentVariableScript.cmake b/Tests/RunCMake/include/ParentVariableScript.cmake new file mode 100644 index 0000000000..a6d949a9a7 --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableScript.cmake @@ -0,0 +1,6 @@ +if(DEFINED CMAKE_PARENT_LIST_FILE) + message(SEND_ERROR "`CMAKE_PARENT_LIST_FILE` is not expected to be set here") +endif() +message(STATUS "ParentVariableScript.cmake: '${CMAKE_PARENT_LIST_FILE}'") +include("${CMAKE_CURRENT_LIST_DIR}/ParentVariableScript/include1.cmake") +message(STATUS "ParentVariableScript.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/ParentVariableScript/include1.cmake b/Tests/RunCMake/include/ParentVariableScript/include1.cmake new file mode 100644 index 0000000000..6e588ef4a0 --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableScript/include1.cmake @@ -0,0 +1,3 @@ +message(STATUS "ParentVariableScript/include1\.cmake: '${CMAKE_PARENT_LIST_FILE}'") +include("${CMAKE_CURRENT_LIST_DIR}/include2.cmake") +message(STATUS "ParentVariableScript/include1\.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/ParentVariableScript/include2.cmake b/Tests/RunCMake/include/ParentVariableScript/include2.cmake new file mode 100644 index 0000000000..e2de82583f --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableScript/include2.cmake @@ -0,0 +1 @@ +message(STATUS "ParentVariableScript/include2.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/ParentVariableSubDir-stdout.txt b/Tests/RunCMake/include/ParentVariableSubDir-stdout.txt new file mode 100644 index 0000000000..f42cc8da17 --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableSubDir-stdout.txt @@ -0,0 +1,7 @@ +-- ParentVariableSubDir/CMakeLists\.txt: '[^']*/Tests/RunCMake/include/ParentVariableSubDir/CMakeLists\.txt' +-- ParentVariableSubDir/include1\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableSubDir/CMakeLists\.txt' +-- ParentVariableSubDir/Inc/include2.cmake: '[^']*/Tests/RunCMake/include/ParentVariableSubDir/include1\.cmake' +-- ParentVariableSubDir/include1\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableSubDir/include1\.cmake' +-- ParentVariableSubDir/Inc/CMakeLists\.txt: '[^']*/Tests/RunCMake/include/ParentVariableSubDir/include1\.cmake' +-- ParentVariableSubDir/include1\.cmake: '[^']*/Tests/RunCMake/include/ParentVariableSubDir/include1\.cmake' +-- ParentVariableSubDir/CMakeLists\.txt: '[^']*/Tests/RunCMake/include/ParentVariableSubDir/CMakeLists\.txt' diff --git a/Tests/RunCMake/include/ParentVariableSubDir.cmake b/Tests/RunCMake/include/ParentVariableSubDir.cmake new file mode 100644 index 0000000000..57c0da4632 --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableSubDir.cmake @@ -0,0 +1 @@ +add_subdirectory(ParentVariableSubDir) diff --git a/Tests/RunCMake/include/ParentVariableSubDir/CMakeLists.txt b/Tests/RunCMake/include/ParentVariableSubDir/CMakeLists.txt new file mode 100644 index 0000000000..0f2c11454d --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableSubDir/CMakeLists.txt @@ -0,0 +1,3 @@ +message(STATUS "ParentVariableSubDir/CMakeLists.txt: '${CMAKE_PARENT_LIST_FILE}'") +include("include1.cmake") +message(STATUS "ParentVariableSubDir/CMakeLists.txt: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/ParentVariableSubDir/Inc/CMakeLists.txt b/Tests/RunCMake/include/ParentVariableSubDir/Inc/CMakeLists.txt new file mode 100644 index 0000000000..9aabcab7f7 --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableSubDir/Inc/CMakeLists.txt @@ -0,0 +1 @@ +message(STATUS "ParentVariableSubDir/Inc/CMakeLists.txt: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/ParentVariableSubDir/Inc/include2.cmake b/Tests/RunCMake/include/ParentVariableSubDir/Inc/include2.cmake new file mode 100644 index 0000000000..8da759e3b5 --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableSubDir/Inc/include2.cmake @@ -0,0 +1 @@ +message(STATUS "ParentVariableSubDir/Inc/include2.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/ParentVariableSubDir/include1.cmake b/Tests/RunCMake/include/ParentVariableSubDir/include1.cmake new file mode 100644 index 0000000000..952cd6ee5d --- /dev/null +++ b/Tests/RunCMake/include/ParentVariableSubDir/include1.cmake @@ -0,0 +1,5 @@ +message(STATUS "ParentVariableSubDir/include1.cmake: '${CMAKE_PARENT_LIST_FILE}'") +include("Inc/include2.cmake") +message(STATUS "ParentVariableSubDir/include1.cmake: '${CMAKE_PARENT_LIST_FILE}'") +include("Inc/CMakeLists.txt") +message(STATUS "ParentVariableSubDir/include1.cmake: '${CMAKE_PARENT_LIST_FILE}'") diff --git a/Tests/RunCMake/include/RunCMakeTest.cmake b/Tests/RunCMake/include/RunCMakeTest.cmake index f7481797ae..47fcf1ee2e 100644 --- a/Tests/RunCMake/include/RunCMakeTest.cmake +++ b/Tests/RunCMake/include/RunCMakeTest.cmake @@ -6,6 +6,9 @@ run_cmake(CMP0024-NEW) run_cmake(ExportExportInclude) run_cmake(IncludeIsDirectory) run_cmake(IncludeMalformed) +run_cmake(ParentVariableRoot) +run_cmake(ParentVariableSubDir) +run_cmake_script(ParentVariableScript) run_cmake(CMP0146-OLD) run_cmake(CMP0146-WARN)