summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2022-06-28 18:15:19 (GMT)
committerKyle Edwards <kyle.edwards@kitware.com>2022-06-29 19:05:32 (GMT)
commit3fee5398bd381e3721972220a8415b62bc96b172 (patch)
treef21184e4b70cc267d07ada41c5c64704fe344d8d /Tests
parenta8bd06dfd47a56e09e660de5e58f26579105d2d4 (diff)
downloadCMake-3fee5398bd381e3721972220a8415b62bc96b172.zip
CMake-3fee5398bd381e3721972220a8415b62bc96b172.tar.gz
CMake-3fee5398bd381e3721972220a8415b62bc96b172.tar.bz2
install(EXPORT): Check for missing file sets at generate time
Missing file sets were originally checked at configure time in install(TARGETS ... EXPORT), but were not checked at generate time. If a file set was added after install(TARGETS ... EXPORT) was called, an abortion error was thrown. Check again at generate time to gracefully display an error message instead of crashing. Fixes: #23680
Diffstat (limited to 'Tests')
-rw-r--r--Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport-result.txt1
-rw-r--r--Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport-stderr.txt6
-rw-r--r--Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport.cmake6
-rw-r--r--Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall-result.txt1
-rw-r--r--Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall-stderr.txt6
-rw-r--r--Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall.cmake6
-rw-r--r--Tests/RunCMake/target_sources/RunCMakeTest.cmake2
7 files changed, 28 insertions, 0 deletions
diff --git a/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport-result.txt b/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport-stderr.txt b/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport-stderr.txt
new file mode 100644
index 0000000..b8d35af
--- /dev/null
+++ b/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport-stderr.txt
@@ -0,0 +1,6 @@
+^CMake Error in CMakeLists\.txt:
+ File set "a" is listed in interface file sets of lib1 but has not been
+ exported
+
+
+CMake Generate step failed\. Build files cannot be regenerated correctly\.$
diff --git a/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport.cmake b/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport.cmake
new file mode 100644
index 0000000..72fab47
--- /dev/null
+++ b/Tests/RunCMake/target_sources/FileSetExportMissingSetsInterfacePostExport.cmake
@@ -0,0 +1,6 @@
+enable_language(C)
+
+add_library(lib1 STATIC empty.c)
+install(TARGETS lib1 EXPORT a)
+target_sources(lib1 INTERFACE FILE_SET a TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} FILES h1.h)
+export(EXPORT a)
diff --git a/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall-result.txt b/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall-stderr.txt b/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall-stderr.txt
new file mode 100644
index 0000000..b8d35af
--- /dev/null
+++ b/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall-stderr.txt
@@ -0,0 +1,6 @@
+^CMake Error in CMakeLists\.txt:
+ File set "a" is listed in interface file sets of lib1 but has not been
+ exported
+
+
+CMake Generate step failed\. Build files cannot be regenerated correctly\.$
diff --git a/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall.cmake b/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall.cmake
new file mode 100644
index 0000000..4e1edff
--- /dev/null
+++ b/Tests/RunCMake/target_sources/FileSetInstallMissingSetsInterfacePostInstall.cmake
@@ -0,0 +1,6 @@
+enable_language(C)
+
+add_library(lib1 STATIC empty.c)
+install(TARGETS lib1 EXPORT a)
+target_sources(lib1 INTERFACE FILE_SET a TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} FILES h1.h)
+install(EXPORT a DESTINATION lib/cmake/test)
diff --git a/Tests/RunCMake/target_sources/RunCMakeTest.cmake b/Tests/RunCMake/target_sources/RunCMakeTest.cmake
index e78ee9d..6a3c7b9 100644
--- a/Tests/RunCMake/target_sources/RunCMakeTest.cmake
+++ b/Tests/RunCMake/target_sources/RunCMakeTest.cmake
@@ -33,6 +33,8 @@ run_cmake(FileSetWrongBaseDirsRelative)
run_cmake(FileSetOverlappingBaseDirs)
run_cmake(FileSetInstallMissingSetsPrivate)
run_cmake(FileSetInstallMissingSetsInterface)
+run_cmake(FileSetInstallMissingSetsInterfacePostInstall)
+run_cmake(FileSetExportMissingSetsInterfacePostExport)
run_cmake(FileSetReadOnlyPrivate)
run_cmake(FileSetReadOnlyInterface)
run_cmake(FileSetNoExistInstall)