RunCMakeTest.cmake 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. include(RunCMake)
  2. function(install_test test)
  3. cmake_parse_arguments(ARGS "PARALLEL;NINJA;TOUCH_CACHE" "ARGS;COMPONENT" "" ${ARGN})
  4. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-install)
  5. set(RunCMake_TEST_OPTIONS -DINSTALL_PARALLEL=${ARGS_PARALLEL} -DCMAKE_INSTALL_PREFIX=install)
  6. set(RunCMake_TEST_OUTPUT_MERGE 1)
  7. if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
  8. list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
  9. endif()
  10. if (ARGS_COMPONENT)
  11. list(APPEND ARGS_ARGS "--component ${ARGS_COMPONENT}")
  12. endif()
  13. run_cmake(install)
  14. set(RunCMake_TEST_NO_CLEAN 1)
  15. if (ARGS_TOUCH_CACHE)
  16. run_cmake_command(${test}-sleep ${CMAKE_COMMAND} -E sleep 2)
  17. run_cmake_command(${test}-touch
  18. ${CMAKE_COMMAND} -E touch ${RunCMake_TEST_BINARY_DIR}/CMakeFiles/cmake.check_cache)
  19. endif()
  20. if (ARGS_NINJA)
  21. if (ARGS_PARALLEL)
  22. set(INSTALL_COUNT 5)
  23. else()
  24. set(INSTALL_COUNT 1)
  25. endif()
  26. set(RunCMake-check-file check-num-installs.cmake)
  27. run_cmake_command(${test}-install ${CMAKE_COMMAND} --build . --config Debug ${ARGS_ARGS})
  28. unset(RunCMake-check-file)
  29. else()
  30. if (ARGS_COMPONENT)
  31. if(ARGS_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$")
  32. set(INSTALL_MANIFEST "install_manifest_${ARGS_COMPONENT}.txt")
  33. else()
  34. string(MD5 COMPONENT_HASH "${ARGS_COMPONENT}")
  35. set(INSTALL_MANIFEST "install_manifest_${COMPONENT_HASH}.txt")
  36. endif()
  37. set(INSTALL_COUNT 0)
  38. else()
  39. set(INSTALL_MANIFEST "install_manifest.txt")
  40. set(INSTALL_COUNT 5)
  41. endif()
  42. set(INSTALL_MANIFEST ${RunCMake_TEST_BINARY_DIR}/${INSTALL_MANIFEST})
  43. set(RunCMake-check-file check-manifest.cmake)
  44. run_cmake_command(${test}-install ${CMAKE_COMMAND} --install . ${ARGS_ARGS})
  45. unset(RunCMake-check-file)
  46. endif()
  47. endfunction()
  48. install_test(parallel PARALLEL ARGS "-j 4")
  49. install_test(no-parallel ARGS "-j 4")
  50. install_test(out-of-date-json TOUCH_CACHE PARALLEL ARGS "-j 4")
  51. install_test(component PARALLEL ARGS "-j 4" COMPONENT "ALPHANUMERIC123")
  52. install_test(component-hash PARALLEL ARGS "-j 4" COMPONENT "@#$")
  53. if(RunCMake_GENERATOR MATCHES "Ninja")
  54. install_test(ninja-parallel ARGS "-t install/parallel" NINJA PARALLEL)
  55. install_test(ninja-no-parallel ARGS "-t install" NINJA)
  56. endif()