diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 7863ebeeda..c9fe89eb13 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -157,24 +157,38 @@ if(BUILD_TESTING) # Look for git to use for tests. find_program(GIT_EXECUTABLE NAMES git) - # Look for rpmbuild to use for tests. - # The tool does not work with spaces in the path. - if(NOT CMAKE_CURRENT_BINARY_DIR MATCHES " ") - find_program(RPMBUILD_EXECUTABLE NAMES rpmbuild) - else() - set(RPMBUILD_EXECUTABLE "RPMBUILD_EXECUTABLE-NOTFOUND") + if(NOT DEFINED CMake_TEST_CPACK_RPM) + # Look for rpmbuild to use for tests. + # The tool does not work with spaces in the path. + if(NOT CMAKE_CURRENT_BINARY_DIR MATCHES " ") + find_program(RPMBUILD_EXECUTABLE NAMES rpmbuild) + else() + set(RPMBUILD_EXECUTABLE "RPMBUILD_EXECUTABLE-NOTFOUND") + endif() + if(RPMBUILD_EXECUTABLE) + set(CMake_TEST_CPACK_RPM 1) + else() + set(CMake_TEST_CPACK_RPM 0) + endif() endif() - if(RPMBUILD_EXECUTABLE) + if(CMake_TEST_CPACK_RPM) set(CPACK_BINARY_RPM ON) else() set(CPACK_BINARY_RPM OFF) endif() - # Look for dpkg to use for tests. - find_program(DPKG_EXECUTABLE NAMES dpkg) + if(NOT DEFINED CMake_TEST_CPACK_DEB) + # Look for dpkg to use for tests. + find_program(DPKG_EXECUTABLE NAMES dpkg) + if(DPKG_EXECUTABLE) + set(CMake_TEST_CPACK_DEB 1) + else() + set(CMake_TEST_CPACK_DEB 0) + endif() + endif() - if(DPKG_EXECUTABLE) + if(CMake_TEST_CPACK_DEB) set(CPACK_BINARY_DEB ON) else() set(CPACK_BINARY_DEB OFF) @@ -1205,7 +1219,7 @@ if(BUILD_TESTING) endforeach() # debian specific - if(DPKG_EXECUTABLE) + if(CMake_TEST_CPACK_DEB) unset(CPackRun_CPackDEBConfiguration_ALL_CONFIGS) set(DEB_TEST_NAMES "CPackComponentsDEB") set(DEB_CONFIGURATIONS_TO_TEST "components-lintian-dpkgdeb-checks" diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 7535772676..eceaaf59e1 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -1321,6 +1321,14 @@ if(CMake_TEST_CPACK_APPIMAGE) ) endif() +if(CMake_TEST_CPACK_DEB) + add_RunCMake_test(CPack_DEB) +endif() + +if(CMake_TEST_CPACK_RPM) + add_RunCMake_test(CPack_RPM) +endif() + if(CMake_TEST_CPACK_WIX3 OR CMake_TEST_CPACK_WIX4) add_RunCMake_test(CPack_WIX -DCMake_TEST_CPACK_WIX3=${CMake_TEST_CPACK_WIX3} diff --git a/Tests/RunCMake/CPack_AppImage/RunCMakeTest.cmake b/Tests/RunCMake/CPack_AppImage/RunCMakeTest.cmake index 2273e9c1d3..18a0451e02 100644 --- a/Tests/RunCMake/CPack_AppImage/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack_AppImage/RunCMakeTest.cmake @@ -1,4 +1,4 @@ -include(RunCPack) +include(RunCPack) # Uses sample projects from `../RunCPack/*` set(RunCPack_GENERATORS AppImage) diff --git a/Tests/RunCMake/CPack_DEB/Basic-cpack-DEB-stdout.txt b/Tests/RunCMake/CPack_DEB/Basic-cpack-DEB-stdout.txt new file mode 100644 index 0000000000..00831bfe87 --- /dev/null +++ b/Tests/RunCMake/CPack_DEB/Basic-cpack-DEB-stdout.txt @@ -0,0 +1,8 @@ +CPack: Create package using DEB +CPack: Install projects( +CPack: - Run preinstall target for: Basic)? +CPack: - Install project: Basic \[Release\] +CPack: Create package +-- CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies\. +CPack: - package: [^ +]*/Tests/RunCMake/CPack_DEB/Basic-build/Basic-1\.2\.3-[A-Za-z]+\.deb generated\. diff --git a/Tests/RunCMake/CPack_DEB/Basic-verify-stdout.txt b/Tests/RunCMake/CPack_DEB/Basic-verify-stdout.txt new file mode 100644 index 0000000000..299f02e6cd --- /dev/null +++ b/Tests/RunCMake/CPack_DEB/Basic-verify-stdout.txt @@ -0,0 +1,14 @@ +-- Basic-1\.2\.3-[A-Za-z]+\.deb +-- dpkg-deb --info( + [^ +]+)* + Maintainer: somebody@cmake\.org( + [^ +]+)* +-- dpkg-deb --contents +d[rwx-]+ root/root 0 [0-9-]+ [0-9:]+ \./usr/ +d[rwx-]+ root/root 0 [0-9-]+ [0-9:]+ \./usr/share/ +d[rwx-]+ root/root 0 [0-9-]+ [0-9:]+ \./usr/share/doc/ +d[rwx-]+ root/root 0 [0-9-]+ [0-9:]+ \./usr/share/doc/basic/ +-[rwx-]+ root/root 0 [0-9-]+ [0-9:]+ \./usr/share/doc/basic/basic\.txt +-- diff --git a/Tests/RunCMake/CPack_DEB/RunCMakeTest.cmake b/Tests/RunCMake/CPack_DEB/RunCMakeTest.cmake new file mode 100644 index 0000000000..143d19b960 --- /dev/null +++ b/Tests/RunCMake/CPack_DEB/RunCMakeTest.cmake @@ -0,0 +1,7 @@ +include(RunCPack) + +set(RunCPack_GENERATORS DEB) +set(RunCPack_GLOB *.deb) +set(RunCPack_VERIFY ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_LIST_DIR}/verify.cmake --) + +run_cpack(Basic) diff --git a/Tests/RunCMake/CPack_DEB/verify.cmake b/Tests/RunCMake/CPack_DEB/verify.cmake new file mode 100644 index 0000000000..7084c1eb01 --- /dev/null +++ b/Tests/RunCMake/CPack_DEB/verify.cmake @@ -0,0 +1,4 @@ +message(STATUS "dpkg-deb --info") +execute_process(COMMAND dpkg-deb --info ${CMAKE_ARGV4}) +message(STATUS "dpkg-deb --contents") +execute_process(COMMAND dpkg-deb --contents ${CMAKE_ARGV4}) diff --git a/Tests/RunCMake/CPack_NuGet/RunCMakeTest.cmake b/Tests/RunCMake/CPack_NuGet/RunCMakeTest.cmake index 7daa457460..a992171696 100644 --- a/Tests/RunCMake/CPack_NuGet/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack_NuGet/RunCMakeTest.cmake @@ -1,4 +1,4 @@ -include(RunCPack) +include(RunCPack) # Uses sample projects from `../RunCPack/*` set(env_PATH "$ENV{PATH}") diff --git a/Tests/RunCMake/CPack_RPM/Basic-cpack-RPM-stderr.txt b/Tests/RunCMake/CPack_RPM/Basic-cpack-RPM-stderr.txt new file mode 100644 index 0000000000..1219e6d09b --- /dev/null +++ b/Tests/RunCMake/CPack_RPM/Basic-cpack-RPM-stderr.txt @@ -0,0 +1,2 @@ +CPackRPM: Will use GENERATED spec file: [^ +]*/Tests/RunCMake/CPack_RPM/Basic-build/_CPack_Packages/[A-Za-z]+/RPM/SPECS/basic\.spec diff --git a/Tests/RunCMake/CPack_RPM/Basic-cpack-RPM-stdout.txt b/Tests/RunCMake/CPack_RPM/Basic-cpack-RPM-stdout.txt new file mode 100644 index 0000000000..5b1fa3e02b --- /dev/null +++ b/Tests/RunCMake/CPack_RPM/Basic-cpack-RPM-stdout.txt @@ -0,0 +1,7 @@ +CPack: Create package using RPM +CPack: Install projects( +CPack: - Run preinstall target for: Basic)? +CPack: - Install project: Basic \[Release\] +CPack: Create package +CPack: - package: [^ +]*/Tests/RunCMake/CPack_RPM/Basic-build/Basic-1\.2\.3-[A-Za-z]+\.rpm generated\. diff --git a/Tests/RunCMake/CPack_RPM/Basic-verify-stderr.txt b/Tests/RunCMake/CPack_RPM/Basic-verify-stderr.txt new file mode 100644 index 0000000000..059e62937b --- /dev/null +++ b/Tests/RunCMake/CPack_RPM/Basic-verify-stderr.txt @@ -0,0 +1,2 @@ +^(error: can't create transaction lock[^ +]*)?$ diff --git a/Tests/RunCMake/CPack_RPM/Basic-verify-stdout.txt b/Tests/RunCMake/CPack_RPM/Basic-verify-stdout.txt new file mode 100644 index 0000000000..54066a4bbf --- /dev/null +++ b/Tests/RunCMake/CPack_RPM/Basic-verify-stdout.txt @@ -0,0 +1,4 @@ +-- Basic-1\.2\.3-[A-Za-z]+\.rpm +/usr/share/doc/basic +/usr/share/doc/basic/basic\.txt +-- diff --git a/Tests/RunCMake/CPack_RPM/RunCMakeTest.cmake b/Tests/RunCMake/CPack_RPM/RunCMakeTest.cmake new file mode 100644 index 0000000000..caaf43aba8 --- /dev/null +++ b/Tests/RunCMake/CPack_RPM/RunCMakeTest.cmake @@ -0,0 +1,7 @@ +include(RunCPack) + +set(RunCPack_GENERATORS RPM) +set(RunCPack_GLOB *.rpm) +set(RunCPack_VERIFY rpm -qlp) + +run_cpack(Basic) diff --git a/Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake b/Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake index 816d949726..bb3432105d 100644 --- a/Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake @@ -1,4 +1,4 @@ -include(RunCPack) +include(RunCPack) # Uses sample projects from `../RunCPack/*` set(env_PATH "$ENV{PATH}") diff --git a/Tests/RunCMake/RunCPack/Basic/CMakeLists.txt b/Tests/RunCMake/RunCPack/Basic/CMakeLists.txt new file mode 100644 index 0000000000..50f6b5fb9c --- /dev/null +++ b/Tests/RunCMake/RunCPack/Basic/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 4.2) +project(Basic LANGUAGES NONE VERSION "1.2.3") + +install(FILES basic.txt DESTINATION share/doc/basic) + +set(CPACK_PACKAGE_CONTACT "somebody@cmake.org") +include(CPack) diff --git a/Tests/RunCMake/RunCPack/Basic/basic.txt b/Tests/RunCMake/RunCPack/Basic/basic.txt new file mode 100644 index 0000000000..e69de29bb2