CMakeLists.txt 71 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771
  1. # a macro for tests that have a simple format where the name matches the
  2. # directory and project
  3. MACRO(ADD_TEST_MACRO NAME COMMAND)
  4. STRING(REPLACE "." "/" dir "${NAME}")
  5. STRING(REGEX REPLACE "[^.]*\\." "" proj "${NAME}")
  6. ADD_TEST(${NAME} ${CMAKE_CTEST_COMMAND}
  7. --build-and-test
  8. "${CMake_SOURCE_DIR}/Tests/${dir}"
  9. "${CMake_BINARY_DIR}/Tests/${dir}"
  10. --build-two-config
  11. --build-generator ${CMAKE_TEST_GENERATOR}
  12. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  13. --build-project ${proj}
  14. --test-command ${COMMAND})
  15. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${dir}")
  16. ENDMACRO(ADD_TEST_MACRO)
  17. # Fake a user home directory to avoid polluting the real one.
  18. IF(DEFINED ENV{HOME} AND NOT CTEST_NO_TEST_HOME)
  19. SET(TEST_HOME "${CMake_BINARY_DIR}/Tests/CMakeFiles/TestHome")
  20. FILE(MAKE_DIRECTORY "${TEST_HOME}")
  21. FILE(WRITE "${TEST_HOME}/.cvspass" ":pserver:[email protected]:/cvsroot/KWSys A\n")
  22. SET(TEST_HOME_ENV_CODE "# Fake a user home directory to avoid polluting the real one.
  23. SET(ENV{HOME} \"${TEST_HOME}\")")
  24. ENDIF()
  25. # Choose a default configuration for CTest tests.
  26. SET(CTestTest_CONFIG Debug)
  27. IF(NOT CMAKE_CONFIGURATION_TYPES AND CMAKE_BUILD_TYPE)
  28. SET(CTestTest_CONFIG ${CMAKE_BUILD_TYPE})
  29. ENDIF()
  30. CONFIGURE_FILE(${CMake_SOURCE_DIR}/Tests/EnforceConfig.cmake.in
  31. ${CMake_BINARY_DIR}/Tests/EnforceConfig.cmake @ONLY)
  32. # Testing
  33. IF(BUILD_TESTING)
  34. ADD_SUBDIRECTORY(CMakeLib)
  35. # Collect a list of all test build directories.
  36. SET(TEST_BUILD_DIRS)
  37. # Should the long tests be run?
  38. OPTION(CMAKE_RUN_LONG_TESTS
  39. "Should the long tests be run (such as Bootstrap)." ON)
  40. MARK_AS_ADVANCED(CMAKE_RUN_LONG_TESTS)
  41. IF (CMAKE_RUN_LONG_TESTS)
  42. OPTION(CTEST_TEST_CTEST
  43. "Should the tests that run a full sub ctest process be run?"
  44. OFF)
  45. MARK_AS_ADVANCED(CTEST_TEST_CTEST)
  46. OPTION(TEST_KDE4_STABLE_BRANCH
  47. "Should the KDE4 stable branch test be run?"
  48. OFF)
  49. MARK_AS_ADVANCED(TEST_KDE4_STABLE_BRANCH)
  50. ENDIF (CMAKE_RUN_LONG_TESTS)
  51. # Should tests that use CVS be run?
  52. #
  53. set(do_cvs_tests 0)
  54. if(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
  55. find_package(CVS QUIET)
  56. else(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
  57. find_program(CVS_EXECUTABLE NAMES cvs)
  58. endif(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
  59. if(CVS_EXECUTABLE)
  60. set(do_cvs_tests 1)
  61. endif(CVS_EXECUTABLE)
  62. if(do_cvs_tests AND NOT UNIX)
  63. if("${CVS_EXECUTABLE}" MATCHES "cygwin")
  64. set(do_cvs_tests 0)
  65. endif("${CVS_EXECUTABLE}" MATCHES "cygwin")
  66. endif(do_cvs_tests AND NOT UNIX)
  67. # Should CPack tests be run? By default, yes, but...
  68. #
  69. # Disable packaging test on Apple 10.3 and below. PackageMaker starts
  70. # DiskManagementTool as root and disowns it
  71. # (http://lists.apple.com/archives/installer-dev/2005/Jul/msg00005.html).
  72. # It is left holding open pipe handles and preventing ProcessUNIX from
  73. # detecting end-of-data even after its immediate child exits. Then
  74. # the test hangs until it times out and is killed. This is a
  75. # well-known bug in kwsys process execution that I would love to get
  76. # time to fix.
  77. #
  78. OPTION(CTEST_TEST_CPACK
  79. "Should the tests that use '--build-target package' be run?"
  80. ON)
  81. MARK_AS_ADVANCED(CTEST_TEST_CPACK)
  82. SET(CTEST_TEST_OSX_ARCH 0)
  83. IF(APPLE)
  84. EXECUTE_PROCESS(
  85. COMMAND sw_vers -productVersion
  86. OUTPUT_VARIABLE OSX_VERSION
  87. OUTPUT_STRIP_TRAILING_WHITESPACE
  88. )
  89. IF(OSX_VERSION MATCHES "^10\\.[0123]" OR OSX_VERSION MATCHES "ProductVersion:\t10\\.[0123]")
  90. MESSAGE(STATUS "Forcing CTEST_TEST_CPACK=OFF on OSX < 10.4")
  91. MESSAGE(STATUS "OSX_VERSION='${OSX_VERSION}'")
  92. SET(CTEST_TEST_CPACK OFF)
  93. ELSE(OSX_VERSION MATCHES "^10\\.[0123]" OR OSX_VERSION MATCHES "ProductVersion:\t10\\.[0123]")
  94. SET(CTEST_TEST_OSX_ARCH 1)
  95. ENDIF(OSX_VERSION MATCHES "^10\\.[0123]" OR OSX_VERSION MATCHES "ProductVersion:\t10\\.[0123]")
  96. ENDIF(APPLE)
  97. # Use 1500 or CTEST_TEST_TIMEOUT for long test timeout value,
  98. # whichever is greater.
  99. SET(CMAKE_LONG_TEST_TIMEOUT 1500)
  100. IF(CTEST_TEST_TIMEOUT)
  101. SET(CMAKE_LONG_TEST_TIMEOUT ${CTEST_TEST_TIMEOUT})
  102. ENDIF(CTEST_TEST_TIMEOUT)
  103. IF(CMAKE_LONG_TEST_TIMEOUT LESS 1500)
  104. SET(CMAKE_LONG_TEST_TIMEOUT 1500)
  105. ENDIF(CMAKE_LONG_TEST_TIMEOUT LESS 1500)
  106. # add a bunch of standard build-and-test style tests
  107. ADD_TEST_MACRO(CommandLineTest CommandLineTest)
  108. ADD_TEST_MACRO(FindPackageTest FindPackageTest)
  109. ADD_TEST_MACRO(FindModulesExecuteAll FindModulesExecuteAll)
  110. ADD_TEST_MACRO(StringFileTest StringFileTest)
  111. ADD_TEST_MACRO(TryCompile TryCompile)
  112. ADD_TEST_MACRO(TarTest TarTest)
  113. ADD_TEST_MACRO(SystemInformation SystemInformation)
  114. ADD_TEST_MACRO(MathTest MathTest)
  115. ADD_TEST_MACRO(Simple Simple)
  116. ADD_TEST_MACRO(PreOrder PreOrder)
  117. ADD_TEST_MACRO(COnly COnly)
  118. ADD_TEST_MACRO(CxxOnly CxxOnly)
  119. ADD_TEST_MACRO(IPO COnly/COnly)
  120. ADD_TEST_MACRO(OutDir runtime/OutDir)
  121. ADD_TEST_MACRO(NewlineArgs NewlineArgs)
  122. ADD_TEST_MACRO(SetLang SetLang)
  123. ADD_TEST_MACRO(ExternalOBJ ExternalOBJ)
  124. ADD_TEST_MACRO(LoadCommand LoadedCommand)
  125. ADD_TEST_MACRO(LinkDirectory bin/LinkDirectory)
  126. ADD_TEST_MACRO(LinkLanguage LinkLanguage)
  127. ADD_TEST_MACRO(LinkLine LinkLine)
  128. ADD_TEST_MACRO(MacroTest miniMacroTest)
  129. ADD_TEST_MACRO(FunctionTest miniFunctionTest)
  130. ADD_TEST_MACRO(ReturnTest ReturnTest)
  131. ADD_TEST_MACRO(Properties Properties)
  132. ADD_TEST_MACRO(Assembler HelloAsm)
  133. ADD_TEST_MACRO(SourceGroups SourceGroups)
  134. ADD_TEST_MACRO(Preprocess Preprocess)
  135. ADD_TEST_MACRO(ExportImport ExportImport)
  136. ADD_TEST_MACRO(Unset Unset)
  137. ADD_TEST_MACRO(PolicyScope PolicyScope)
  138. ADD_TEST_MACRO(CrossCompile CrossCompile)
  139. SET_TESTS_PROPERTIES(CrossCompile PROPERTIES
  140. PASS_REGULAR_EXPRESSION "TRY_RUN.. invoked in cross-compiling mode")
  141. IF("${CMAKE_TEST_GENERATOR}" MATCHES "Make")
  142. ADD_TEST_MACRO(Policy0002 Policy0002)
  143. ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "Make")
  144. IF(CTEST_TEST_OSX_ARCH)
  145. ADD_TEST_MACRO(Architecture Architecture)
  146. SET_TESTS_PROPERTIES(Architecture PROPERTIES
  147. PASS_REGULAR_EXPRESSION "(file is not of required architecture|does not match cputype|not the architecture being linked)")
  148. ENDIF(CTEST_TEST_OSX_ARCH)
  149. LIST(APPEND TEST_BUILD_DIRS ${CMake_TEST_INSTALL_PREFIX})
  150. SET(CMAKE_BUILD_TEST_SOURCE_DIR "${CMake_SOURCE_DIR}/Tests/COnly")
  151. SET(CMAKE_BUILD_TEST_BINARY_DIR "${CMake_BINARY_DIR}/Tests/CMakeBuildCOnly")
  152. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CMakeBuildTest.cmake.in"
  153. "${CMake_BINARY_DIR}/Tests/CMakeBuildTest.cmake" @ONLY)
  154. ADD_TEST(CMakeBuildTest ${CMAKE_CMAKE_COMMAND} -P
  155. "${CMake_BINARY_DIR}/Tests/CMakeBuildTest.cmake")
  156. LIST(APPEND TEST_BUILD_DIRS ${CMAKE_BUILD_TEST_BINARY_DIR})
  157. ADD_TEST_MACRO(Module.CheckTypeSize CheckTypeSize)
  158. ADD_TEST(LinkFlags-prepare
  159. ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  160. --build-and-test
  161. "${CMake_SOURCE_DIR}/Tests/LinkFlags"
  162. "${CMake_BINARY_DIR}/Tests/LinkFlags"
  163. --build-generator ${CMAKE_TEST_GENERATOR}
  164. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  165. --build-project LinkFlags
  166. --build-target LinkFlags
  167. --build-options -DTEST_CONFIG=\${CTEST_CONFIGURATION_TYPE}
  168. )
  169. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LinkFlags")
  170. MACRO(ADD_LINK_FLAGS_TEST name depends)
  171. ADD_TEST(LinkFlags-${name}
  172. ${CMAKE_CMAKE_COMMAND} --build "${CMake_BINARY_DIR}/Tests/LinkFlags"
  173. --target LinkFlags_${name} --config \${CTEST_CONFIGURATION_TYPE}
  174. )
  175. SET_TESTS_PROPERTIES(LinkFlags-${name} PROPERTIES
  176. PASS_REGULAR_EXPRESSION "BADFLAG" DEPENDS LinkFlags-${depends})
  177. ENDMACRO()
  178. ADD_LINK_FLAGS_TEST(lib prepare)
  179. ADD_LINK_FLAGS_TEST(dll lib)
  180. ADD_LINK_FLAGS_TEST(exe dll)
  181. ADD_LINK_FLAGS_TEST(lib_config exe)
  182. ADD_LINK_FLAGS_TEST(dll_config lib_config)
  183. ADD_LINK_FLAGS_TEST(exe_config dll_config)
  184. # If we are running right now with a UnixMakefiles based generator,
  185. # build the "Simple" test with the ExtraGenerators, if available
  186. # This doesn't test whether the generated project files work (unfortunately),
  187. # mainly it tests that cmake doesn't crash when generating these project files.
  188. IF(${CMAKE_TEST_GENERATOR} MATCHES "Unix Makefiles" OR ${CMAKE_TEST_GENERATOR} MATCHES "KDevelop")
  189. # check which generators we have
  190. EXEC_PROGRAM(${CMAKE_CMAKE_COMMAND} ARGS --help OUTPUT_VARIABLE cmakeOutput )
  191. # check for the Eclipse generator
  192. IF ("${cmakeOutput}" MATCHES Eclipse)
  193. ADD_TEST(Simple_EclipseGenerator ${CMAKE_CTEST_COMMAND}
  194. --build-and-test
  195. "${CMake_SOURCE_DIR}/Tests/Simple"
  196. "${CMake_BINARY_DIR}/Tests/Simple_EclipseGenerator"
  197. --build-two-config
  198. --build-generator "Eclipse CDT4 - Unix Makefiles"
  199. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  200. --build-project Simple
  201. --test-command Simple)
  202. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Simple_EclipseGenerator")
  203. ENDIF ("${cmakeOutput}" MATCHES Eclipse)
  204. # check for the CodeBlocks generator
  205. IF ("${cmakeOutput}" MATCHES CodeBlocks)
  206. ADD_TEST(Simple_CodeBlocksGenerator ${CMAKE_CTEST_COMMAND}
  207. --build-and-test
  208. "${CMake_SOURCE_DIR}/Tests/Simple"
  209. "${CMake_BINARY_DIR}/Tests/Simple_CodeBlocksGenerator"
  210. --build-two-config
  211. --build-generator "CodeBlocks - Unix Makefiles"
  212. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  213. --build-project Simple
  214. --test-command Simple)
  215. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Simple_CodeBlocksGenerator")
  216. ENDIF ("${cmakeOutput}" MATCHES CodeBlocks)
  217. # check for the KDevelop3 generator
  218. IF ("${cmakeOutput}" MATCHES KDevelop3)
  219. ADD_TEST(Simple_KDevelop3Generator ${CMAKE_CTEST_COMMAND}
  220. --build-and-test
  221. "${CMake_SOURCE_DIR}/Tests/Simple"
  222. "${CMake_BINARY_DIR}/Tests/Simple_KDevelop3Generator"
  223. --build-two-config
  224. --build-generator "KDevelop3 - Unix Makefiles"
  225. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  226. --build-project Simple
  227. --test-command Simple)
  228. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Simple_KDevelop3Generator")
  229. ENDIF ("${cmakeOutput}" MATCHES KDevelop3)
  230. ENDIF(${CMAKE_TEST_GENERATOR} MATCHES "Unix Makefiles" OR ${CMAKE_TEST_GENERATOR} MATCHES "KDevelop")
  231. # test for correct sub-project generation
  232. # not implemented in VS6 or Xcode
  233. IF(NOT MSVC60 AND NOT XCODE AND NOT MSVC70)
  234. # run cmake and configure all of SubProject
  235. # but only build the independent executable car
  236. ADD_TEST(SubProject ${CMAKE_CTEST_COMMAND}
  237. --build-and-test
  238. "${CMake_SOURCE_DIR}/Tests/SubProject"
  239. "${CMake_BINARY_DIR}/Tests/SubProject"
  240. --build-project SubProject
  241. --build-generator ${CMAKE_TEST_GENERATOR}
  242. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  243. --build-target car
  244. --test-command car
  245. )
  246. # For stage 2, do not run cmake again.
  247. # Then build the foo sub project which should build
  248. # the bar library which should be referenced because
  249. # foo links to the static library bar, but bar is not
  250. # directly in the foo sub project
  251. ADD_TEST(SubProject-Stage2 ${CMAKE_CTEST_COMMAND}
  252. --build-and-test
  253. "${CMake_SOURCE_DIR}/Tests/SubProject/foo"
  254. "${CMake_BINARY_DIR}/Tests/SubProject/foo"
  255. --build-generator ${CMAKE_TEST_GENERATOR}
  256. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  257. --build-nocmake
  258. --build-project foo
  259. --build-target foo
  260. --test-command foo
  261. )
  262. SET_TESTS_PROPERTIES ( SubProject-Stage2 PROPERTIES DEPENDS SubProject)
  263. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SubProject")
  264. ENDIF(NOT MSVC60 AND NOT XCODE AND NOT MSVC70)
  265. IF (CMAKE_STRICT)
  266. ADD_TEST_MACRO(DocTest DocTest)
  267. ENDIF (CMAKE_STRICT)
  268. # macro to add a test that will build a nightly release
  269. # of CMake for given platform using the release scripts
  270. MACRO(ADD_NIGHTLY_BUILD_TEST name script)
  271. SET(_TEST_DIR "${CMake_BINARY_DIR}/Tests/${name}")
  272. FILE(MAKE_DIRECTORY "${_TEST_DIR}")
  273. FILE(WRITE "${_TEST_DIR}/nightly-cmake.sh"
  274. "cd ${_TEST_DIR}
  275. ${CMake_BINARY_DIR}/bin/cmake -DCMAKE_CREATE_VERSION=next -P ${CMake_SOURCE_DIR}/Utilities/Release/${script}
  276. ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/Release/upload_release.cmake
  277. ")
  278. ADD_TEST(${name} /bin/sh ${_TEST_DIR}/nightly-cmake.sh)
  279. IF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY)
  280. SET_TESTS_PROPERTIES (${name} PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  281. ENDIF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY)
  282. ENDMACRO(ADD_NIGHTLY_BUILD_TEST)
  283. IF(CMAKE_BUILD_NIGHTLY_RELEASES)
  284. ADD_NIGHTLY_BUILD_TEST(CMakeNightlyWindows
  285. dash2win64_release.cmake)
  286. ADD_NIGHTLY_BUILD_TEST(CMakeNightlyMac
  287. dashmacmini2_release.cmake)
  288. ADD_NIGHTLY_BUILD_TEST(CMakeNightlyLinux
  289. magrathea_release.cmake)
  290. ENDIF(CMAKE_BUILD_NIGHTLY_RELEASES)
  291. # add tests with more complex invocations
  292. ADD_TEST(Framework ${CMAKE_CTEST_COMMAND}
  293. --build-and-test
  294. "${CMake_SOURCE_DIR}/Tests/Framework"
  295. "${CMake_BINARY_DIR}/Tests/Framework"
  296. --build-two-config
  297. --build-generator ${CMAKE_TEST_GENERATOR}
  298. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  299. --build-project Framework
  300. --build-options
  301. "-DCMAKE_INSTALL_PREFIX:PATH=${CMake_BINARY_DIR}/Tests/Framework/Install"
  302. --test-command bar)
  303. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Framework")
  304. ADD_TEST(TargetName ${CMAKE_CTEST_COMMAND}
  305. --build-and-test
  306. "${CMake_SOURCE_DIR}/Tests/TargetName"
  307. "${CMake_BINARY_DIR}/Tests/TargetName"
  308. --build-two-config
  309. --build-generator ${CMAKE_TEST_GENERATOR}
  310. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  311. --build-project TargetName
  312. --test-command ${CMAKE_CMAKE_COMMAND} -E compare_files
  313. ${CMake_SOURCE_DIR}/Tests/TargetName/scripts/hello_world
  314. ${CMake_BINARY_DIR}/Tests/TargetName/scripts/hello_world)
  315. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/TargetName")
  316. ADD_TEST(LibName ${CMAKE_CTEST_COMMAND}
  317. --build-and-test
  318. "${CMake_SOURCE_DIR}/Tests/LibName"
  319. "${CMake_BINARY_DIR}/Tests/LibName"
  320. --build-two-config
  321. --build-generator ${CMAKE_TEST_GENERATOR}
  322. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  323. --build-project LibName
  324. --build-exe-dir "${CMake_BINARY_DIR}/Tests/LibName/lib"
  325. --test-command foobar
  326. )
  327. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LibName")
  328. ADD_TEST(CustComDepend ${CMAKE_CTEST_COMMAND}
  329. --build-and-test
  330. "${CMake_SOURCE_DIR}/Tests/CustComDepend"
  331. "${CMake_BINARY_DIR}/Tests/CustComDepend"
  332. --build-two-config
  333. --build-generator ${CMAKE_TEST_GENERATOR}
  334. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  335. --build-project CustComDepend
  336. --build-exe-dir "${CMake_BINARY_DIR}/Tests/CustComDepend/bin"
  337. --test-command foo bar.c
  338. )
  339. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CustComDepend")
  340. ADD_TEST(CustomCommand ${CMAKE_CTEST_COMMAND}
  341. --build-and-test
  342. "${CMake_SOURCE_DIR}/Tests/CustomCommand"
  343. "${CMake_BINARY_DIR}/Tests/CustomCommand"
  344. --build-two-config
  345. --build-generator ${CMAKE_TEST_GENERATOR}
  346. --build-project CustomCommand
  347. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  348. --build-exe-dir "${CMake_BINARY_DIR}/Tests/CustomCommand/bin"
  349. --test-command CustomCommand
  350. )
  351. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CustomCommand")
  352. ADD_TEST(CustomCommandWorkingDirectory ${CMAKE_CTEST_COMMAND}
  353. --build-and-test
  354. "${CMake_SOURCE_DIR}/Tests/CustomCommandWorkingDirectory"
  355. "${CMake_BINARY_DIR}/Tests/CustomCommandWorkingDirectory"
  356. --build-two-config
  357. --build-generator ${CMAKE_TEST_GENERATOR}
  358. --build-project TestWorkingDir
  359. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  360. --test-command working
  361. )
  362. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CustomCommandWorkingDirectory")
  363. #ADD_TEST(SimpleExclude ${CMAKE_CTEST_COMMAND}
  364. # --build-and-test
  365. # "${CMake_SOURCE_DIR}/Tests/SimpleExclude"
  366. # "${CMake_BINARY_DIR}/Tests/SimpleExclude"
  367. # --build-generator ${CMAKE_TEST_GENERATOR}
  368. # --build-project SimpleExclude
  369. # --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  370. # --build-two-config
  371. # --test-command t4
  372. #--test-command "${CMAKE_COMMAND}"
  373. #"-DCONFIGURATION=\${CTEST_CONFIGURATION_TYPE}"
  374. #-P "${CMAKE_BINARY_DIR}/Tests/SimpleExclude/run.cmake"
  375. #)
  376. # ADD_TEST(SameName ${CMAKE_CTEST_COMMAND}
  377. # --build-and-test
  378. # "${CMake_SOURCE_DIR}/Tests/SameName"
  379. # "${CMake_BINARY_DIR}/Tests/SameName"
  380. # --build-generator ${CMAKE_TEST_GENERATOR}
  381. # --build-project SameName
  382. # --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  383. # --build-two-config
  384. # --test-command
  385. # "${CMake_BINARY_DIR}/Tests/SameName/Exe1/mytest2")
  386. ADD_TEST(OutOfSource ${CMAKE_CTEST_COMMAND}
  387. --build-and-test
  388. "${CMake_SOURCE_DIR}/Tests/OutOfSource"
  389. "${CMake_BINARY_DIR}/Tests/OutOfSource"
  390. --build-generator ${CMAKE_TEST_GENERATOR}
  391. --build-project OutOfSource
  392. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  393. --build-two-config
  394. --test-command
  395. "${CMake_BINARY_DIR}/Tests/OutOfSource/SubDir/OutOfSourceSubdir/simple")
  396. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/OutOfSource")
  397. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/OutOfSourceDeep")
  398. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/OutOfBinary")
  399. ADD_TEST(BuildDepends ${CMAKE_CTEST_COMMAND}
  400. --build-and-test
  401. "${CMake_SOURCE_DIR}/Tests/BuildDepends"
  402. "${CMake_BINARY_DIR}/Tests/BuildDepends"
  403. --build-generator ${CMAKE_TEST_GENERATOR}
  404. --build-project BuildDepends
  405. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  406. )
  407. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BuildDepends")
  408. SET(SimpleInstallInstallDir
  409. "${CMake_BINARY_DIR}/Tests/SimpleInstall/InstallDirectory")
  410. ADD_TEST(SimpleInstall ${CMAKE_CTEST_COMMAND}
  411. --build-and-test
  412. "${CMake_SOURCE_DIR}/Tests/SimpleInstall"
  413. "${CMake_BINARY_DIR}/Tests/SimpleInstall"
  414. --build-generator ${CMAKE_TEST_GENERATOR}
  415. --build-project TestSimpleInstall
  416. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  417. --build-two-config
  418. --build-options
  419. "-DCMAKE_INSTALL_PREFIX:PATH=${SimpleInstallInstallDir}"
  420. "-DCTEST_TEST_CPACK:BOOL=${CTEST_TEST_CPACK}"
  421. --test-command ${SimpleInstallInstallDir}/MyTest/bin/SimpleInstExe)
  422. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SimpleInstall")
  423. ADD_TEST(SimpleInstall-Stage2 ${CMAKE_CTEST_COMMAND}
  424. --build-and-test
  425. "${CMake_SOURCE_DIR}/Tests/SimpleInstallS2"
  426. "${CMake_BINARY_DIR}/Tests/SimpleInstallS2"
  427. --build-generator ${CMAKE_TEST_GENERATOR}
  428. --build-project TestSimpleInstall
  429. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  430. --build-two-config
  431. --build-options
  432. "-DCMAKE_INSTALL_PREFIX:PATH=${SimpleInstallInstallDir}"
  433. "-DSTAGE2:BOOL=1"
  434. --test-command ${SimpleInstallInstallDir}/MyTest/bin/SimpleInstExeS2)
  435. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SimpleInstallS2")
  436. # By default, run the CPackComponents test if the CTEST_TEST_CPACK
  437. # option is ON:
  438. #
  439. set(CTEST_RUN_CPackComponents ${CTEST_TEST_CPACK})
  440. set(CTEST_package_X11_TEST ${CTEST_TEST_CPACK})
  441. find_program(NSIS_MAKENSIS_EXECUTABLE NAMES makensis
  442. PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS]
  443. DOC "makensis program location"
  444. )
  445. # But on Windows, only run the CPackComponents test if the NSIS
  446. # installer builder is available:
  447. #
  448. if(WIN32)
  449. if(NSIS_MAKENSIS_EXECUTABLE)
  450. set(CTEST_RUN_CPackComponents ON)
  451. else(NSIS_MAKENSIS_EXECUTABLE)
  452. set(CTEST_RUN_CPackComponents OFF)
  453. set(CTEST_package_X11_TEST OFF)
  454. endif(NSIS_MAKENSIS_EXECUTABLE)
  455. endif(WIN32)
  456. IF(CTEST_RUN_CPackComponents)
  457. set(CPackComponents_EXTRA_OPTIONS)
  458. if(APPLE)
  459. set(CPackComponents_EXTRA_OPTIONS -DCPACK_BINARY_DRAGNDROP:BOOL=ON)
  460. endif(APPLE)
  461. if(NSIS_MAKENSIS_EXECUTABLE)
  462. set(CPackComponents_EXTRA_OPTIONS ${CPackComponents_EXTRA_OPTIONS}
  463. -DCPACK_BINARY_NSIS:BOOL=ON)
  464. endif(NSIS_MAKENSIS_EXECUTABLE)
  465. ADD_TEST(CPackComponents ${CMAKE_CTEST_COMMAND}
  466. --build-and-test
  467. "${CMake_SOURCE_DIR}/Tests/CPackComponents"
  468. "${CMake_BINARY_DIR}/Tests/CPackComponents"
  469. --build-generator ${CMAKE_TEST_GENERATOR}
  470. --build-project CPackComponents
  471. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  472. --build-two-config
  473. --build-target package
  474. --build-options
  475. -DCPACK_BINARY_DEB:BOOL=${CPACK_BINARY_DEB}
  476. -DCPACK_BINARY_RPM:BOOL=${CPACK_BINARY_RPM}
  477. ${CPackComponents_EXTRA_OPTIONS}
  478. --graphviz=CPackComponents.dot
  479. --test-command ${CMAKE_CMAKE_COMMAND}
  480. "-DCPackComponents_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/CPackComponents"
  481. -P "${CMake_SOURCE_DIR}/Tests/CPackComponents/VerifyResult.cmake")
  482. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackComponents")
  483. ENDIF(CTEST_RUN_CPackComponents)
  484. # By default, turn this test off (because it takes a long time...)
  485. #
  486. if(NOT DEFINED CTEST_RUN_CPackTestAllGenerators)
  487. set(CTEST_RUN_CPackTestAllGenerators OFF)
  488. # ...but: if it appears to be a coverage dashboard, or long tests are
  489. # on, then set it to the generic CTEST_TEST_CPACK setting.
  490. #
  491. if(CMAKE_CXX_FLAGS MATCHES "-ftest-coverage" OR
  492. NOT "$ENV{COVFILE}" STREQUAL "" OR
  493. CMAKE_RUN_LONG_TESTS)
  494. set(CTEST_RUN_CPackTestAllGenerators ${CTEST_TEST_CPACK})
  495. endif(CMAKE_CXX_FLAGS MATCHES "-ftest-coverage" OR
  496. NOT "$ENV{COVFILE}" STREQUAL "" OR
  497. CMAKE_RUN_LONG_TESTS)
  498. endif(NOT DEFINED CTEST_RUN_CPackTestAllGenerators)
  499. IF(CTEST_RUN_CPackTestAllGenerators)
  500. ADD_TEST(CPackTestAllGenerators ${CMAKE_CTEST_COMMAND}
  501. --build-and-test
  502. "${CMake_SOURCE_DIR}/Tests/CPackTestAllGenerators"
  503. "${CMake_BINARY_DIR}/Tests/CPackTestAllGenerators"
  504. --build-generator ${CMAKE_TEST_GENERATOR}
  505. --build-project CPackTestAllGenerators
  506. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  507. --test-command
  508. ${CMAKE_CMAKE_COMMAND}
  509. -D dir=${CMake_BINARY_DIR}/Tests/CPackTestAllGenerators
  510. -D cpack=${CMAKE_CPACK_COMMAND}
  511. -P ${CMake_SOURCE_DIR}/Tests/CPackTestAllGenerators/RunCPack.cmake
  512. )
  513. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackTestAllGenerators")
  514. ENDIF(CTEST_RUN_CPackTestAllGenerators)
  515. IF(CTEST_package_X11_TEST)
  516. SET(X11_build_target_arg --build-target package)
  517. ELSE(CTEST_package_X11_TEST)
  518. SET(X11_build_target_arg)
  519. ENDIF(CTEST_package_X11_TEST)
  520. ADD_TEST(X11 ${CMAKE_CTEST_COMMAND}
  521. --build-and-test
  522. "${CMake_SOURCE_DIR}/Tests/X11"
  523. "${CMake_BINARY_DIR}/Tests/X11"
  524. --build-generator ${CMAKE_TEST_GENERATOR}
  525. --build-project UseX11
  526. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  527. --build-two-config
  528. ${X11_build_target_arg}
  529. --test-command UseX11)
  530. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/X11")
  531. if(NOT DEFINED CTEST_RUN_CMakeTestAllGenerators)
  532. set(CTEST_RUN_CMakeTestAllGenerators ON)
  533. endif(NOT DEFINED CTEST_RUN_CMakeTestAllGenerators)
  534. IF(CTEST_RUN_CMakeTestAllGenerators)
  535. ADD_TEST(CMakeTestAllGenerators ${CMAKE_CMAKE_COMMAND}
  536. -D dir=${CMake_BINARY_DIR}/Tests/CMakeTestAllGenerators
  537. -D CMake_SOURCE_DIR=${CMake_SOURCE_DIR}
  538. -P ${CMake_SOURCE_DIR}/Tests/CMakeTestAllGenerators/RunCMake.cmake
  539. )
  540. LIST(APPEND TEST_BUILD_DIRS
  541. "${CMake_BINARY_DIR}/Tests/CMakeTestAllGenerators")
  542. ENDIF(CTEST_RUN_CMakeTestAllGenerators)
  543. if(NOT DEFINED CTEST_RUN_CMakeTestBadCommandLines)
  544. set(CTEST_RUN_CMakeTestBadCommandLines ON)
  545. endif(NOT DEFINED CTEST_RUN_CMakeTestBadCommandLines)
  546. IF(CTEST_RUN_CMakeTestBadCommandLines)
  547. ADD_TEST(CMakeTestBadCommandLines ${CMAKE_CMAKE_COMMAND}
  548. -D dir=${CMake_BINARY_DIR}/Tests/CMakeTestBadCommandLines
  549. -D gen=${CMAKE_TEST_GENERATOR}
  550. -D CMake_SOURCE_DIR=${CMake_SOURCE_DIR}
  551. -P ${CMake_SOURCE_DIR}/Tests/CMakeTestBadCommandLines/RunCMake.cmake
  552. )
  553. LIST(APPEND TEST_BUILD_DIRS
  554. "${CMake_BINARY_DIR}/Tests/CMakeTestBadCommandLines")
  555. ENDIF(CTEST_RUN_CMakeTestBadCommandLines)
  556. if(NOT DEFINED CTEST_RUN_CMakeTestMultipleConfigures)
  557. set(CTEST_RUN_CMakeTestMultipleConfigures ON)
  558. endif(NOT DEFINED CTEST_RUN_CMakeTestMultipleConfigures)
  559. IF(CTEST_RUN_CMakeTestMultipleConfigures)
  560. ADD_TEST(CMakeTestMultipleConfigures ${CMAKE_CMAKE_COMMAND}
  561. -D dir=${CMake_BINARY_DIR}/Tests/CMakeTestMultipleConfigures
  562. -D gen=${CMAKE_TEST_GENERATOR}
  563. -D CMake_SOURCE_DIR=${CMake_SOURCE_DIR}
  564. -P ${CMake_SOURCE_DIR}/Tests/CMakeTestMultipleConfigures/RunCMake.cmake
  565. )
  566. LIST(APPEND TEST_BUILD_DIRS
  567. "${CMake_BINARY_DIR}/Tests/CMakeTestMultipleConfigures")
  568. ENDIF(CTEST_RUN_CMakeTestMultipleConfigures)
  569. ADD_TEST(LoadedCommandOneConfig ${CMAKE_CTEST_COMMAND}
  570. --build-and-test
  571. "${CMake_SOURCE_DIR}/Tests/LoadCommandOneConfig"
  572. "${CMake_BINARY_DIR}/Tests/LoadCommandOneConfig"
  573. --build-generator ${CMAKE_TEST_GENERATOR}
  574. --build-project LoadCommand
  575. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  576. --test-command LoadedCommand
  577. )
  578. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LoadCommandOneConfig")
  579. # Como does not seem to support shared libraries.
  580. GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_CXX_COMPILER} NAME_WE)
  581. IF(CMAKE_BASE_NAME MATCHES "^como$")
  582. SET(COMPILER_IS_COMO 1)
  583. ENDIF(CMAKE_BASE_NAME MATCHES "^como$")
  584. IF(NOT COMPILER_IS_COMO)
  585. SET(COMPLEX_TEST_CMAKELIB 1)
  586. IF(CMAKE_TEST_DIFFERENT_GENERATOR OR CMAKE_TEST_SYSTEM_LIBRARIES)
  587. SET(COMPLEX_TEST_CMAKELIB 0)
  588. ENDIF(CMAKE_TEST_DIFFERENT_GENERATOR OR CMAKE_TEST_SYSTEM_LIBRARIES)
  589. IF(BORLAND)
  590. SET(COMPLEX_TEST_CMAKELIB 0)
  591. ENDIF(BORLAND)
  592. ADD_TEST(complex ${CMAKE_CTEST_COMMAND}
  593. --build-and-test
  594. "${CMake_SOURCE_DIR}/Tests/Complex"
  595. "${CMake_BINARY_DIR}/Tests/Complex"
  596. --build-two-config
  597. --build-config-sample "${CMAKE_CTEST_COMMAND}"
  598. --build-generator ${CMAKE_TEST_GENERATOR}
  599. --build-project Complex
  600. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  601. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Complex/bin"
  602. --build-options
  603. -DCOMPLEX_TEST_CMAKELIB:BOOL=${COMPLEX_TEST_CMAKELIB}
  604. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  605. --test-command complex
  606. )
  607. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Complex")
  608. ADD_TEST(complexOneConfig ${CMAKE_CTEST_COMMAND}
  609. --build-and-test
  610. "${CMake_SOURCE_DIR}/Tests/ComplexOneConfig"
  611. "${CMake_BINARY_DIR}/Tests/ComplexOneConfig"
  612. --build-generator ${CMAKE_TEST_GENERATOR}
  613. --build-project Complex
  614. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  615. --build-exe-dir "${CMake_BINARY_DIR}/Tests/ComplexOneConfig/bin"
  616. --build-options
  617. -DCOMPLEX_TEST_CMAKELIB:BOOL=${COMPLEX_TEST_CMAKELIB}
  618. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  619. --test-command complex)
  620. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ComplexOneConfig")
  621. # because of the registry write these tests depend on each other
  622. SET_TESTS_PROPERTIES ( complex PROPERTIES DEPENDS complexOneConfig)
  623. # This fails on VS 70
  624. # works on Xcode and makefiles
  625. # ADD_TEST(ConvLibrary ${CMAKE_CTEST_COMMAND}
  626. # --build-and-test
  627. # "${CMake_SOURCE_DIR}/Tests/ConvLibrary"
  628. # "${CMake_BINARY_DIR}/Tests/ConvLibrary"
  629. # --build-two-config
  630. # --build-generator ${CMAKE_TEST_GENERATOR}
  631. # --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  632. # --build-project ConvLibrary
  633. # --test-command bartest)
  634. # ADD_TEST(complexRelativePaths ${CMAKE_CTEST_COMMAND}
  635. # --build-and-test
  636. # "${CMake_SOURCE_DIR}/Tests/ComplexRelativePaths"
  637. # "${CMake_BINARY_DIR}/Tests/ComplexRelativePaths"
  638. # --build-generator ${CMAKE_TEST_GENERATOR}
  639. # --build-project complex
  640. # --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  641. # --build-exe-dir "${CMake_BINARY_DIR}/Tests/ComplexRelativePaths/bin"
  642. # --build-options -DCMAKE_USE_RELATIVE_PATHS:BOOL=ON
  643. # --test-command complex)
  644. ENDIF(NOT COMPILER_IS_COMO)
  645. ADD_TEST(Example ${CMAKE_CTEST_COMMAND}
  646. --build-and-test
  647. "${CMake_SOURCE_DIR}/Example"
  648. "${CMake_BINARY_DIR}/Example"
  649. --build-generator ${CMAKE_TEST_GENERATOR}
  650. --build-project HELLO
  651. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  652. --build-exe-dir "${CMake_BINARY_DIR}/Example/Demo"
  653. --test-command helloDemo
  654. )
  655. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Example")
  656. ADD_TEST(Environment ${CMAKE_CTEST_COMMAND}
  657. --build-and-test
  658. "${CMake_SOURCE_DIR}/Tests/Environment"
  659. "${CMake_BINARY_DIR}/Tests/Environment"
  660. --build-generator ${CMAKE_TEST_GENERATOR}
  661. --build-project EnvironmentProj
  662. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  663. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Environment"
  664. --force-new-ctest-process
  665. --test-command ${CMAKE_CTEST_COMMAND} -V
  666. )
  667. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Environment")
  668. ADD_TEST(ExternalProject ${CMAKE_CTEST_COMMAND}
  669. --build-and-test
  670. "${CMake_SOURCE_DIR}/Tests/ExternalProject"
  671. "${CMake_BINARY_DIR}/Tests/ExternalProject"
  672. --build-generator ${CMAKE_TEST_GENERATOR}
  673. --build-project ExternalProjectTest
  674. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  675. --build-exe-dir "${CMake_BINARY_DIR}/Tests/ExternalProject"
  676. --force-new-ctest-process
  677. --test-command ${CMAKE_CTEST_COMMAND} -V
  678. )
  679. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProject")
  680. # The ExternalProject test takes 900 seconds on some machines!
  681. GET_TEST_PROPERTY(ExternalProject TIMEOUT PREVIOUS_TIMEOUT)
  682. IF("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  683. SET_TESTS_PROPERTIES(ExternalProject PROPERTIES TIMEOUT 1000)
  684. ENDIF("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  685. # do each of the tutorial steps
  686. FOREACH(STP RANGE 1 7)
  687. ADD_TEST(TutorialStep${STP} ${CMAKE_CTEST_COMMAND}
  688. --build-and-test
  689. "${CMake_SOURCE_DIR}/Tests/Tutorial/Step${STP}"
  690. "${CMake_BINARY_DIR}/Tests/Tutorial/Step${STP}"
  691. --build-two-config
  692. --build-generator ${CMAKE_TEST_GENERATOR}
  693. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  694. --build-project Tutorial
  695. --test-command Tutorial 25.0)
  696. ENDFOREACH(STP)
  697. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Tutorial")
  698. ADD_TEST(testing ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  699. --build-and-test
  700. "${CMake_SOURCE_DIR}/Tests/Testing"
  701. "${CMake_BINARY_DIR}/Tests/Testing"
  702. --build-generator ${CMAKE_TEST_GENERATOR}
  703. --build-project Testing
  704. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  705. --test-command ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  706. )
  707. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Testing")
  708. ADD_TEST(wrapping ${CMAKE_CTEST_COMMAND}
  709. --build-and-test
  710. "${CMake_SOURCE_DIR}/Tests/Wrapping"
  711. "${CMake_BINARY_DIR}/Tests/Wrapping"
  712. --build-generator ${CMAKE_TEST_GENERATOR}
  713. --build-project Wrapping
  714. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  715. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  716. --test-command wrapping
  717. )
  718. ADD_TEST(qtwrapping ${CMAKE_CTEST_COMMAND}
  719. --build-and-test
  720. "${CMake_SOURCE_DIR}/Tests/Wrapping"
  721. "${CMake_BINARY_DIR}/Tests/Wrapping"
  722. --build-generator ${CMAKE_TEST_GENERATOR}
  723. --build-project Wrapping
  724. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  725. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  726. --test-command qtwrapping
  727. )
  728. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Wrapping")
  729. ADD_TEST(testdriver1 ${CMAKE_CTEST_COMMAND}
  730. --build-and-test
  731. "${CMake_SOURCE_DIR}/Tests/TestDriver"
  732. "${CMake_BINARY_DIR}/Tests/TestDriver"
  733. --build-generator ${CMAKE_TEST_GENERATOR}
  734. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  735. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  736. --build-project TestDriverTest
  737. --test-command TestDriverTest test1
  738. )
  739. ADD_TEST(testdriver2 ${CMAKE_CTEST_COMMAND}
  740. --build-and-test
  741. "${CMake_SOURCE_DIR}/Tests/TestDriver"
  742. "${CMake_BINARY_DIR}/Tests/TestDriver"
  743. --build-generator ${CMAKE_TEST_GENERATOR}
  744. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  745. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  746. --build-project TestDriverTest
  747. --test-command TestDriverTest test2
  748. )
  749. ADD_TEST(testdriver3 ${CMAKE_CTEST_COMMAND}
  750. --build-and-test
  751. "${CMake_SOURCE_DIR}/Tests/TestDriver"
  752. "${CMake_BINARY_DIR}/Tests/TestDriver"
  753. --build-generator ${CMAKE_TEST_GENERATOR}
  754. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  755. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  756. --build-project TestDriverTest
  757. --test-command TestDriverTest subdir/test3
  758. )
  759. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/TestDriver")
  760. ADD_TEST(Dependency ${CMAKE_CTEST_COMMAND}
  761. --build-and-test
  762. "${CMake_SOURCE_DIR}/Tests/Dependency"
  763. "${CMake_BINARY_DIR}/Tests/Dependency"
  764. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Dependency/Exec"
  765. --build-generator ${CMAKE_TEST_GENERATOR}
  766. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  767. --build-project Dependency
  768. --test-command exec
  769. )
  770. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Dependency")
  771. IF("${CMAKE_SYSTEM_NAME}" MATCHES syllable)
  772. # RPATH isn't supported under Syllable, so the tests don't
  773. # find their libraries. In order to fix that LIBRARY_OUTPUT_DIR
  774. # in the tests would have to be adjusted to ${EXECUTABLE_OUTPUT_DIR}/lib .
  775. # For now we just require on Syllable that the user adjusts the DLL_PATH
  776. # environment variable, so except the two tests below all other tests will succeed.
  777. SET(_DLL_PATH "$ENV{DLL_PATH}")
  778. IF(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.(:.*)?$")
  779. MESSAGE(FATAL_ERROR "In order to successfully run the CMake test suite on Syllable you need to add \"\\@bindir\\@/.\" to the DLL_PATH environment variable")
  780. ENDIF(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.(:.*)?$")
  781. IF(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.\\./lib(:.*)?$")
  782. MESSAGE(FATAL_ERROR "In order to successfully run the CMake test suite on Syllable you need to add \"\\@bindir\\@/../lib\" to the DLL_PATH environment variable")
  783. ENDIF(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.\\./lib(:.*)?$")
  784. ELSE("${CMAKE_SYSTEM_NAME}" MATCHES syllable)
  785. ADD_TEST(JumpWithLibOut ${CMAKE_CTEST_COMMAND}
  786. --build-and-test
  787. "${CMake_SOURCE_DIR}/Tests/Jump"
  788. "${CMake_BINARY_DIR}/Tests/Jump/WithLibOut"
  789. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Jump/WithLibOut/Executable"
  790. --build-project Jump
  791. --build-generator ${CMAKE_TEST_GENERATOR}
  792. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  793. --build-options
  794. -DLIBRARY_OUTPUT_PATH:PATH=${CMake_BINARY_DIR}/Tests/Jump/WithLibOut/Lib
  795. --test-command jumpExecutable
  796. )
  797. ADD_TEST(JumpNoLibOut ${CMAKE_CTEST_COMMAND}
  798. --build-and-test
  799. "${CMake_SOURCE_DIR}/Tests/Jump"
  800. "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut"
  801. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut/Executable"
  802. --build-run-dir "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut/Executable"
  803. --build-project Jump
  804. --build-generator ${CMAKE_TEST_GENERATOR}
  805. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  806. --test-command jumpExecutable
  807. )
  808. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Jump")
  809. ADD_TEST(Plugin ${CMAKE_CTEST_COMMAND}
  810. --build-and-test
  811. "${CMake_SOURCE_DIR}/Tests/Plugin"
  812. "${CMake_BINARY_DIR}/Tests/Plugin"
  813. --build-generator ${CMAKE_TEST_GENERATOR}
  814. --build-project Plugin
  815. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  816. --build-two-config
  817. --test-command bin/example)
  818. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Plugin")
  819. IF(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
  820. ADD_TEST_MACRO(RuntimePath RuntimePath)
  821. ENDIF(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
  822. ENDIF("${CMAKE_SYSTEM_NAME}" MATCHES syllable)
  823. ADD_TEST(linkorder1 ${CMAKE_CTEST_COMMAND}
  824. --build-and-test
  825. "${CMake_SOURCE_DIR}/Tests/LinkLineOrder"
  826. "${CMake_BINARY_DIR}/Tests/LinkLineOrder"
  827. --build-generator ${CMAKE_TEST_GENERATOR}
  828. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  829. --build-project LinkLineOrder
  830. --test-command Exec1
  831. )
  832. ADD_TEST(linkorder2 ${CMAKE_CTEST_COMMAND}
  833. --build-and-test
  834. "${CMake_SOURCE_DIR}/Tests/LinkLineOrder"
  835. "${CMake_BINARY_DIR}/Tests/LinkLineOrder"
  836. --build-generator ${CMAKE_TEST_GENERATOR}
  837. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  838. --build-project LinkLineOrder
  839. --test-command Exec2
  840. )
  841. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LinkLineOrder")
  842. SET_TESTS_PROPERTIES ( qtwrapping PROPERTIES DEPENDS wrapping)
  843. SET_TESTS_PROPERTIES ( testdriver1 PROPERTIES DEPENDS qtwrapping)
  844. SET_TESTS_PROPERTIES ( testdriver2 PROPERTIES DEPENDS testdriver1)
  845. SET_TESTS_PROPERTIES ( testdriver3 PROPERTIES DEPENDS testdriver2)
  846. SET_TESTS_PROPERTIES ( linkorder2 PROPERTIES DEPENDS linkorder1)
  847. SET_TESTS_PROPERTIES ( SimpleInstall-Stage2 PROPERTIES DEPENDS SimpleInstall)
  848. IF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
  849. ADD_TEST(kwsys ${CMAKE_CTEST_COMMAND}
  850. --build-and-test
  851. "${CMake_SOURCE_DIR}/Source/kwsys"
  852. "${CMake_BINARY_DIR}/Tests/kwsys"
  853. --build-generator ${CMAKE_TEST_GENERATOR}
  854. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  855. --build-project kwsys
  856. --test-command kwsysTestsCxx testIOS
  857. )
  858. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/kwsys")
  859. ENDIF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
  860. SET(MAKE_IS_GNU )
  861. IF(${CMAKE_TEST_MAKEPROGRAM} MATCHES make)
  862. EXEC_PROGRAM(
  863. ${CMAKE_TEST_MAKEPROGRAM} ARGS no_such_target --version
  864. RETURN_VALUE res OUTPUT_VARIABLE out
  865. )
  866. IF("${res}" EQUAL 0)
  867. IF("${out}" MATCHES "GNU")
  868. SET(MAKE_IS_GNU 1)
  869. ENDIF("${out}" MATCHES "GNU")
  870. ENDIF("${res}" EQUAL 0)
  871. ENDIF(${CMAKE_TEST_MAKEPROGRAM} MATCHES make)
  872. # only add this test on platforms that support it
  873. # some old versions of make simply cannot handle spaces in paths
  874. IF (MAKE_IS_GNU OR
  875. "${CMAKE_TEST_MAKEPROGRAM}" MATCHES "nmake|gmake|wmake" OR
  876. "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio|XCode|Borland")
  877. ADD_TEST(SubDirSpaces ${CMAKE_CTEST_COMMAND}
  878. --build-and-test
  879. "${CMake_SOURCE_DIR}/Tests/SubDirSpaces"
  880. "${CMake_BINARY_DIR}/Tests/SubDirSpaces"
  881. --build-exe-dir
  882. "${CMake_BINARY_DIR}/Tests/SubDirSpaces/Executable Sources"
  883. --build-generator ${CMAKE_TEST_GENERATOR}
  884. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  885. --build-project SUBDIR
  886. --test-command test
  887. "${CMake_BINARY_DIR}/Tests/SubDirSpaces/ShouldBeHere"
  888. "${CMake_BINARY_DIR}/Tests/SubDirSpaces/testfromsubdir.obj"
  889. )
  890. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SubDirSpaces")
  891. ENDIF (MAKE_IS_GNU OR
  892. "${CMAKE_TEST_MAKEPROGRAM}" MATCHES "nmake|gmake|wmake" OR
  893. "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio|XCode|Borland")
  894. IF (WIN32)
  895. ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND}
  896. --build-and-test
  897. "${CMake_SOURCE_DIR}/Tests/SubDir"
  898. "${CMake_BINARY_DIR}/Tests/SubDir"
  899. --build-exe-dir "${CMake_BINARY_DIR}/Tests/SubDir/Executable"
  900. --build-generator ${CMAKE_TEST_GENERATOR}
  901. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  902. --build-project SUBDIR
  903. --test-command test
  904. "${CMake_BINARY_DIR}/Tests/SubDir/ShouldBeHere"
  905. "${CMake_BINARY_DIR}/Tests/SubDir/testfromsubdir.obj"
  906. )
  907. ELSE (WIN32)
  908. ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND}
  909. --build-and-test
  910. "${CMake_SOURCE_DIR}/Tests/SubDir"
  911. "${CMake_BINARY_DIR}/Tests/SubDir"
  912. --build-exe-dir "${CMake_BINARY_DIR}/Tests/SubDir/Executable"
  913. --build-generator ${CMAKE_TEST_GENERATOR}
  914. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  915. --build-project SUBDIR
  916. --test-command test
  917. "${CMake_BINARY_DIR}/Tests/SubDir/ShouldBeHere"
  918. "${CMake_BINARY_DIR}/Tests/SubDir/testfromsubdir.o"
  919. )
  920. ENDIF (WIN32)
  921. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SubDir")
  922. IF(CMAKE_TEST_MSVC)
  923. ADD_TEST_MACRO(PrecompiledHeader foo)
  924. ADD_TEST_MACRO(ModuleDefinition example_exe)
  925. ENDIF(CMAKE_TEST_MSVC)
  926. ADD_TEST_MACRO(CheckCompilerRelatedVariables CheckCompilerRelatedVariables)
  927. IF("${CMAKE_TEST_GENERATOR}" MATCHES "Makefile")
  928. ADD_TEST(MakeClean ${CMAKE_CTEST_COMMAND}
  929. --build-and-test
  930. "${CMake_SOURCE_DIR}/Tests/MakeClean"
  931. "${CMake_BINARY_DIR}/Tests/MakeClean"
  932. --build-generator ${CMAKE_TEST_GENERATOR}
  933. --build-project MakeClean
  934. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  935. --build-exe-dir "${CMake_BINARY_DIR}/MakeClean"
  936. --test-command check_clean
  937. )
  938. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/MakeClean")
  939. ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "Makefile")
  940. IF(${CMAKE_TEST_GENERATOR} MATCHES "Visual Studio")
  941. ADD_TEST(VSExternalInclude ${CMAKE_CTEST_COMMAND}
  942. --build-and-test
  943. "${CMake_SOURCE_DIR}/Tests/VSExternalInclude"
  944. "${CMake_BINARY_DIR}/Tests/VSExternalInclude"
  945. --build-two-config
  946. --build-generator ${CMAKE_TEST_GENERATOR}
  947. --build-project VSExternalInclude
  948. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  949. --test-command VSExternalInclude)
  950. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSExternalInclude")
  951. ENDIF(${CMAKE_TEST_GENERATOR} MATCHES "Visual Studio")
  952. IF (APPLE AND CMAKE_COMPILER_IS_GNUCXX)
  953. SET(BundleTestInstallDir
  954. "${CMake_BINARY_DIR}/Tests/BundleTest/InstallDirectory")
  955. ADD_TEST(BundleTest ${CMAKE_CTEST_COMMAND}
  956. --build-and-test
  957. "${CMake_SOURCE_DIR}/Tests/BundleTest"
  958. "${CMake_BINARY_DIR}/Tests/BundleTest"
  959. --build-two-config
  960. --build-generator ${CMAKE_TEST_GENERATOR}
  961. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  962. --build-project BundleTest
  963. --build-target install
  964. # --build-target package
  965. --build-options "-DCMAKE_INSTALL_PREFIX:PATH=${BundleTestInstallDir}"
  966. "-DCMake_SOURCE_DIR:PATH=${CMAKE_SOURCE_DIR}"
  967. --test-command
  968. ${BundleTestInstallDir}/Applications/SecondBundleExe.app/Contents/MacOS/SecondBundleExe)
  969. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BundleTest")
  970. ADD_TEST_MACRO(ObjC++ ObjC++)
  971. ENDIF (APPLE AND CMAKE_COMPILER_IS_GNUCXX)
  972. IF(APPLE AND CTEST_TEST_CPACK)
  973. ADD_TEST(BundleGeneratorTest ${CMAKE_CTEST_COMMAND}
  974. --build-and-test
  975. "${CMake_SOURCE_DIR}/Tests/BundleGeneratorTest"
  976. "${CMake_BINARY_DIR}/Tests/BundleGeneratorTest"
  977. --build-two-config
  978. --build-generator ${CMAKE_TEST_GENERATOR}
  979. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  980. --build-project BundleGeneratorTest
  981. --build-target package
  982. --build-options "-DCMAKE_INSTALL_PREFIX:PATH=${CMake_BINARY_DIR}/Tests/BundleGeneratorTest/InstallDirectory"
  983. )
  984. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BundleGeneratorTest")
  985. ENDIF(APPLE AND CTEST_TEST_CPACK)
  986. # Make sure CTest can handle a test with no newline in output.
  987. ADD_TEST(CTest.NoNewline
  988. ${CMAKE_CMAKE_COMMAND} -E echo_append "This line has no newline!")
  989. # A simple test for ctest in script mode
  990. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake.in"
  991. "${CMake_BINARY_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake" @ONLY)
  992. # ADD_TEST(CTest.ScriptMode ${CMAKE_CTEST_COMMAND}
  993. # -S "${CMake_BINARY_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake"
  994. # )
  995. SET(CTEST_TEST_UPDATE 1)
  996. IF(CTEST_TEST_UPDATE)
  997. # Test CTest Update with Subversion
  998. FIND_PACKAGE(Subversion QUIET)
  999. IF(Subversion_FOUND)
  1000. GET_FILENAME_COMPONENT(_Subversion_BIN_DIR
  1001. ${Subversion_SVN_EXECUTABLE} PATH)
  1002. FIND_PROGRAM(Subversion_SVNADMIN_EXECUTABLE svnadmin
  1003. HINTS ${_Subversion_BIN_DIR}
  1004. )
  1005. MARK_AS_ADVANCED(Subversion_SVNADMIN_EXECUTABLE)
  1006. IF(NOT Subversion_SVNADMIN_EXECUTABLE)
  1007. SET(Subversion_FOUND FALSE)
  1008. ENDIF(NOT Subversion_SVNADMIN_EXECUTABLE)
  1009. ENDIF(Subversion_FOUND)
  1010. IF(Subversion_FOUND)
  1011. SET(CTestUpdateSVN_DIR "CTest UpdateSVN")
  1012. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestUpdateSVN.cmake.in"
  1013. "${CMake_BINARY_DIR}/Tests/CTestUpdateSVN.cmake" @ONLY)
  1014. ADD_TEST(CTest.UpdateSVN ${CMAKE_CMAKE_COMMAND}
  1015. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateSVN.cmake"
  1016. )
  1017. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateSVN_DIR}")
  1018. ENDIF(Subversion_FOUND)
  1019. # Test CTest Update with CVS
  1020. IF(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
  1021. FIND_PACKAGE(CVS QUIET)
  1022. ELSE(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
  1023. FIND_PROGRAM(CVS_EXECUTABLE NAMES cvs)
  1024. SET(CVS_FOUND ${CVS_EXECUTABLE})
  1025. ENDIF(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
  1026. SET(CTEST_TEST_UPDATE_CVS ${CVS_FOUND})
  1027. IF(CTEST_TEST_UPDATE_CVS AND NOT UNIX)
  1028. IF("${CVS_EXECUTABLE}" MATCHES "cygwin")
  1029. MESSAGE(STATUS "No CTest.UpdateCVS test with cygwin cvs.exe outside cygwin!")
  1030. SET(CTEST_TEST_UPDATE_CVS 0)
  1031. ENDIF("${CVS_EXECUTABLE}" MATCHES "cygwin")
  1032. ENDIF(CTEST_TEST_UPDATE_CVS AND NOT UNIX)
  1033. IF(CTEST_TEST_UPDATE_CVS)
  1034. SET(CTestUpdateCVS_DIR "CTest UpdateCVS")
  1035. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestUpdateCVS.cmake.in"
  1036. "${CMake_BINARY_DIR}/Tests/CTestUpdateCVS.cmake" @ONLY)
  1037. ADD_TEST(CTest.UpdateCVS ${CMAKE_CMAKE_COMMAND}
  1038. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateCVS.cmake"
  1039. )
  1040. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateCVS_DIR}")
  1041. ENDIF(CTEST_TEST_UPDATE_CVS)
  1042. # Test CTest Update with BZR
  1043. FIND_PROGRAM(BZR_EXECUTABLE NAMES bzr)
  1044. MARK_AS_ADVANCED(BZR_EXECUTABLE)
  1045. SET(CTEST_TEST_UPDATE_BZR 0)
  1046. IF(BZR_EXECUTABLE)
  1047. IF(NOT "${BZR_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  1048. SET(CTEST_TEST_UPDATE_BZR 1)
  1049. ENDIF(NOT "${BZR_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  1050. ENDIF(BZR_EXECUTABLE)
  1051. IF(CTEST_TEST_UPDATE_BZR)
  1052. # Check if xmloutput plugin is there
  1053. EXECUTE_PROCESS(COMMAND ${BZR_EXECUTABLE} xmlplugins RESULT_VARIABLE xmlplugres
  1054. OUTPUT_QUIET ERROR_QUIET)
  1055. IF( NOT ${xmlplugres} )
  1056. SET(CTestUpdateBZR_DIR "CTest UpdateBZR")
  1057. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestUpdateBZR.cmake.in"
  1058. "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR.cmake" @ONLY)
  1059. ADD_TEST(CTest.UpdateBZR ${CMAKE_CMAKE_COMMAND}
  1060. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR.cmake"
  1061. )
  1062. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateBZR_DIR}")
  1063. SET(CTestUpdateBZR_DIR "CTest UpdateBZR_CLocale")
  1064. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestUpdateBZR.cmake.in"
  1065. "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR_CLocale.cmake" @ONLY)
  1066. ADD_TEST(CTest.UpdateBZR.CLocale ${CMAKE_CMAKE_COMMAND}
  1067. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR_CLocale.cmake"
  1068. )
  1069. SET_TESTS_PROPERTIES(CTest.UpdateBZR.CLocale PROPERTIES ENVIRONMENT LC_ALL=C)
  1070. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateBZR_DIR}")
  1071. ENDIF( NOT ${xmlplugres} )
  1072. ENDIF(CTEST_TEST_UPDATE_BZR)
  1073. # Test CTest Update with GIT
  1074. FIND_PROGRAM(GIT_EXECUTABLE NAMES git)
  1075. MARK_AS_ADVANCED(GIT_EXECUTABLE)
  1076. SET(CTEST_TEST_UPDATE_GIT 0)
  1077. IF(GIT_EXECUTABLE)
  1078. IF(NOT "${GIT_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  1079. SET(CTEST_TEST_UPDATE_GIT 1)
  1080. ENDIF(NOT "${GIT_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  1081. ENDIF(GIT_EXECUTABLE)
  1082. IF(CTEST_TEST_UPDATE_GIT)
  1083. SET(CTestUpdateGIT_DIR "CTest UpdateGIT")
  1084. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestUpdateGIT.cmake.in"
  1085. "${CMake_BINARY_DIR}/Tests/CTestUpdateGIT.cmake" @ONLY)
  1086. ADD_TEST(CTest.UpdateGIT ${CMAKE_CMAKE_COMMAND}
  1087. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateGIT.cmake"
  1088. )
  1089. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateGIT_DIR}")
  1090. ENDIF(CTEST_TEST_UPDATE_GIT)
  1091. # Test CTest Update with HG
  1092. FIND_PROGRAM(HG_EXECUTABLE NAMES hg)
  1093. MARK_AS_ADVANCED(HG_EXECUTABLE)
  1094. SET(CTEST_TEST_UPDATE_HG 0)
  1095. IF(HG_EXECUTABLE)
  1096. IF(NOT "${HG_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  1097. SET(CTEST_TEST_UPDATE_HG 1)
  1098. ENDIF(NOT "${HG_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  1099. ENDIF(HG_EXECUTABLE)
  1100. IF(CTEST_TEST_UPDATE_HG)
  1101. SET(CTestUpdateHG_DIR "CTest UpdateHG")
  1102. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestUpdateHG.cmake.in"
  1103. "${CMake_BINARY_DIR}/Tests/CTestUpdateHG.cmake" @ONLY)
  1104. ADD_TEST(CTest.UpdateHG ${CMAKE_CMAKE_COMMAND}
  1105. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateHG.cmake"
  1106. )
  1107. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateHG_DIR}")
  1108. ENDIF(CTEST_TEST_UPDATE_HG)
  1109. ENDIF(CTEST_TEST_UPDATE)
  1110. CONFIGURE_FILE(
  1111. "${CMake_SOURCE_DIR}/Tests/CTestTestFailure/testNoBuild.cmake.in"
  1112. "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testNoBuild.cmake"
  1113. @ONLY ESCAPE_QUOTES)
  1114. ADD_TEST(CTestTestNoBuild ${CMAKE_CTEST_COMMAND}
  1115. -S "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testNoBuild.cmake" -V
  1116. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testOut1.log"
  1117. )
  1118. SET_TESTS_PROPERTIES(CTestTestNoBuild PROPERTIES
  1119. FAIL_REGULAR_EXPRESSION "Error" WILL_FAIL true)
  1120. CONFIGURE_FILE(
  1121. "${CMake_SOURCE_DIR}/Tests/CTestTestFailure/testNoExe.cmake.in"
  1122. "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testNoExe.cmake"
  1123. @ONLY ESCAPE_QUOTES)
  1124. ADD_TEST(CTestTestNoExe ${CMAKE_CTEST_COMMAND}
  1125. -S "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testNoExe.cmake" -V
  1126. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testOut2.log"
  1127. )
  1128. SET_TESTS_PROPERTIES(CTestTestNoExe PROPERTIES DEPENDS CTestTestNoBuild
  1129. PASS_REGULAR_EXPRESSION "Could not find executable"
  1130. FAIL_REGULAR_EXPRESSION "SegFault")
  1131. # Use macro, not function so that build can still be driven by CMake 2.4.
  1132. # After 2.6 is required, this could be a function without the extra 'set'
  1133. # calls.
  1134. #
  1135. macro(add_config_tests cfg)
  1136. set(cfg "${cfg}")
  1137. set(base "${CMake_BINARY_DIR}/Tests/CTestConfig")
  1138. # Test -S script with a -C config arg to ctest:
  1139. configure_file(
  1140. "${CMake_SOURCE_DIR}/Tests/CTestConfig/script.cmake.in"
  1141. "${base}/${cfg}-script.cmake"
  1142. @ONLY ESCAPE_QUOTES)
  1143. add_test(CTestConfig.Script.${cfg} ${CMAKE_CTEST_COMMAND}
  1144. -C ${cfg}
  1145. -S "${base}/${cfg}-script.cmake" -VV
  1146. --output-log "${base}/${cfg}-script.log"
  1147. )
  1148. # Test -D dashboard with a -C config arg to ctest.
  1149. # (Actual commands inside a cmake -P script because we need to be able to set
  1150. # the working directory reliably...)
  1151. configure_file(
  1152. "${CMake_SOURCE_DIR}/Tests/CTestConfig/dashboard.cmake.in"
  1153. "${base}/${cfg}-dashboard.cmake"
  1154. @ONLY ESCAPE_QUOTES)
  1155. add_test(CTestConfig.Dashboard.${cfg} ${CMAKE_CMAKE_COMMAND}
  1156. -P "${base}/${cfg}-dashboard.cmake" -VV
  1157. )
  1158. endmacro()
  1159. add_config_tests(Debug)
  1160. add_config_tests(MinSizeRel)
  1161. add_config_tests(Release)
  1162. add_config_tests(RelWithDebInfo)
  1163. add_test(CMakeCommands.build_command ${CMAKE_CMAKE_COMMAND}
  1164. -DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}
  1165. -Ddir=${CMake_BINARY_DIR}/Tests/CMakeCommands/build_command
  1166. -Dgen=${CMAKE_TEST_GENERATOR}
  1167. -P "${CMake_SOURCE_DIR}/Tests/CMakeCommands/build_command/RunCMake.cmake"
  1168. )
  1169. CONFIGURE_FILE(
  1170. "${CMake_SOURCE_DIR}/Tests/CTestTestCrash/test.cmake.in"
  1171. "${CMake_BINARY_DIR}/Tests/CTestTestCrash/test.cmake"
  1172. @ONLY ESCAPE_QUOTES)
  1173. ADD_TEST(CTestTestCrash ${CMAKE_CTEST_COMMAND}
  1174. -S "${CMake_BINARY_DIR}/Tests/CTestTestCrash/test.cmake" -V
  1175. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestCrash/testOutput.log"
  1176. )
  1177. # with watcom the SEGFAULT is not found, it just fails
  1178. IF(CMAKE_TEST_GENERATOR MATCHES "Watcom WMake")
  1179. SET_TESTS_PROPERTIES(CTestTestCrash PROPERTIES
  1180. PASS_REGULAR_EXPRESSION "Failed")
  1181. ELSE(CMAKE_TEST_GENERATOR MATCHES "Watcom WMake")
  1182. SET_TESTS_PROPERTIES(CTestTestCrash PROPERTIES
  1183. PASS_REGULAR_EXPRESSION "SegFault")
  1184. ENDIF(CMAKE_TEST_GENERATOR MATCHES "Watcom WMake")
  1185. CONFIGURE_FILE(
  1186. "${CMake_SOURCE_DIR}/Tests/CTestTestBadExe/test.cmake.in"
  1187. "${CMake_BINARY_DIR}/Tests/CTestTestBadExe/test.cmake"
  1188. @ONLY ESCAPE_QUOTES)
  1189. ADD_TEST(CTestTestBadExe ${CMAKE_CTEST_COMMAND}
  1190. -S "${CMake_BINARY_DIR}/Tests/CTestTestBadExe/test.cmake" -V
  1191. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestBadExe/testOutput.log"
  1192. )
  1193. SET(CTestTestBadExe_REGEX "BAD_COMMAND")
  1194. # some cygwin can not be made to produce a BAD_COMMAND error
  1195. # the best we can get from it is a failed test
  1196. IF(CYGWIN)
  1197. SET(CTestTestBadExe_REGEX "(\\*\\*\\*Failed)|BAD_COMMAND")
  1198. ENDIF()
  1199. SET_TESTS_PROPERTIES(CTestTestBadExe PROPERTIES
  1200. PASS_REGULAR_EXPRESSION "${CTestTestBadExe_REGEX}")
  1201. CONFIGURE_FILE(
  1202. "${CMake_SOURCE_DIR}/Tests/CTestTestParallel/test.cmake.in"
  1203. "${CMake_BINARY_DIR}/Tests/CTestTestParallel/test.cmake"
  1204. @ONLY ESCAPE_QUOTES)
  1205. ADD_TEST(CTestTestParallel ${CMAKE_CTEST_COMMAND}
  1206. -S "${CMake_BINARY_DIR}/Tests/CTestTestParallel/test.cmake" -V
  1207. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestParallel/testOutput.log"
  1208. )
  1209. CONFIGURE_FILE(
  1210. "${CMake_SOURCE_DIR}/Tests/CTestTestResourceLock/test.cmake.in"
  1211. "${CMake_BINARY_DIR}/Tests/CTestTestResourceLock/test.cmake"
  1212. @ONLY ESCAPE_QUOTES)
  1213. ADD_TEST(CTestTestResourceLock ${CMAKE_CTEST_COMMAND}
  1214. -S "${CMake_BINARY_DIR}/Tests/CTestTestResourceLock/test.cmake" -V
  1215. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestResourceLock/output.log"
  1216. )
  1217. CONFIGURE_FILE(
  1218. "${CMake_SOURCE_DIR}/Tests/CTestTestScheduler/test.cmake.in"
  1219. "${CMake_BINARY_DIR}/Tests/CTestTestScheduler/test.cmake"
  1220. @ONLY ESCAPE_QUOTES)
  1221. ADD_TEST(CTestTestScheduler ${CMAKE_CTEST_COMMAND}
  1222. -S "${CMake_BINARY_DIR}/Tests/CTestTestScheduler/test.cmake" -V
  1223. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestScheduler/testOutput.log"
  1224. )
  1225. SET_TESTS_PROPERTIES(CTestTestScheduler PROPERTIES
  1226. PASS_REGULAR_EXPRESSION "Start 1.*Start 2.*Start 3.*Start 4.*Start 4.*Start 3.*Start 2.*Start 1")
  1227. CONFIGURE_FILE(
  1228. "${CMake_SOURCE_DIR}/Tests/CTestTestStopTime/test.cmake.in"
  1229. "${CMake_BINARY_DIR}/Tests/CTestTestStopTime/test.cmake"
  1230. @ONLY ESCAPE_QUOTES)
  1231. CONFIGURE_FILE(
  1232. "${CMake_SOURCE_DIR}/Tests/CTestTestStopTime/GetDate.cmake"
  1233. "${CMake_BINARY_DIR}/Tests/CTestTestStopTime/GetDate.cmake"
  1234. COPYONLY)
  1235. ADD_TEST(CTestTestStopTime ${CMAKE_CTEST_COMMAND}
  1236. -S "${CMake_BINARY_DIR}/Tests/CTestTestStopTime/test.cmake" -V
  1237. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestStopTime/testOutput.log"
  1238. )
  1239. SET_TESTS_PROPERTIES(CTestTestStopTime PROPERTIES
  1240. PASS_REGULAR_EXPRESSION "The stop time has been passed")
  1241. CONFIGURE_FILE(
  1242. "${CMake_SOURCE_DIR}/Tests/CTestTestSubdir/test.cmake.in"
  1243. "${CMake_BINARY_DIR}/Tests/CTestTestSubdir/test.cmake"
  1244. @ONLY ESCAPE_QUOTES)
  1245. ADD_TEST(CTestTestSubdir ${CMAKE_CTEST_COMMAND}
  1246. -S "${CMake_BINARY_DIR}/Tests/CTestTestSubdir/test.cmake" -V
  1247. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestSubdir/testOutput.log"
  1248. )
  1249. #make sure all 3 subdirs were added
  1250. SET_TESTS_PROPERTIES(CTestTestSubdir PROPERTIES
  1251. PASS_REGULAR_EXPRESSION "0 tests failed out of 3")
  1252. CONFIGURE_FILE(
  1253. "${CMake_SOURCE_DIR}/Tests/CTestTestTimeout/test.cmake.in"
  1254. "${CMake_BINARY_DIR}/Tests/CTestTestTimeout/test.cmake"
  1255. @ONLY ESCAPE_QUOTES)
  1256. ADD_TEST(CTestTestTimeout ${CMAKE_CTEST_COMMAND}
  1257. -C "\${CTestTest_CONFIG}"
  1258. -S "${CMake_BINARY_DIR}/Tests/CTestTestTimeout/test.cmake" -V
  1259. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestTimeout/testOutput.log"
  1260. )
  1261. SET_TESTS_PROPERTIES(CTestTestTimeout PROPERTIES
  1262. PASS_REGULAR_EXPRESSION "TestTimeout *\\.+ *\\*\\*\\*Timeout.*CheckChild *\\.+ *Passed")
  1263. CONFIGURE_FILE(
  1264. "${CMake_SOURCE_DIR}/Tests/CTestTestDepends/test.cmake.in"
  1265. "${CMake_BINARY_DIR}/Tests/CTestTestDepends/test.cmake"
  1266. @ONLY ESCAPE_QUOTES)
  1267. ADD_TEST(CTestTestDepends ${CMAKE_CTEST_COMMAND}
  1268. -C "\${CTestTest_CONFIG}"
  1269. -S "${CMake_BINARY_DIR}/Tests/CTestTestDepends/test.cmake" -V
  1270. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestDepends/testOutput.log"
  1271. )
  1272. CONFIGURE_FILE(
  1273. "${CMake_SOURCE_DIR}/Tests/CTestTestCycle/test.cmake.in"
  1274. "${CMake_BINARY_DIR}/Tests/CTestTestCycle/test.cmake"
  1275. @ONLY ESCAPE_QUOTES)
  1276. ADD_TEST(CTestTestCycle ${CMAKE_CTEST_COMMAND}
  1277. -C "\${CTestTest_CONFIG}"
  1278. -S "${CMake_BINARY_DIR}/Tests/CTestTestCycle/test.cmake" -V
  1279. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestCycle/testOutput.log"
  1280. )
  1281. SET_TESTS_PROPERTIES(CTestTestCycle PROPERTIES
  1282. PASS_REGULAR_EXPRESSION "a cycle exists in the test dependency graph")
  1283. CONFIGURE_FILE(
  1284. "${CMake_SOURCE_DIR}/Tests/CTestTestRunScript/test.cmake.in"
  1285. "${CMake_BINARY_DIR}/Tests/CTestTestRunScript/test.cmake"
  1286. @ONLY ESCAPE_QUOTES)
  1287. CONFIGURE_FILE(
  1288. "${CMake_SOURCE_DIR}/Tests/CTestTestRunScript/hello.cmake.in"
  1289. "${CMake_BINARY_DIR}/Tests/CTestTestRunScript/hello.cmake"
  1290. @ONLY ESCAPE_QUOTES)
  1291. ADD_TEST(CTestTestRunScript ${CMAKE_CTEST_COMMAND}
  1292. -S "${CMake_BINARY_DIR}/Tests/CTestTestRunScript/test.cmake" -V
  1293. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestRunScript/testOutput.log"
  1294. )
  1295. ADD_TEST(CTestTestShowOnly ${CMAKE_CTEST_COMMAND} -N)
  1296. ADD_TEST(CTestBatchTest ${CMAKE_CTEST_COMMAND} -B)
  1297. # Use macro, not function so that build can still be driven by CMake 2.4.
  1298. # After 2.6 is required, this could be a function without the extra 'set'
  1299. # calls.
  1300. #
  1301. macro(add_failed_submit_test name source build in out log regex)
  1302. # Have variables named source, build and drop_method because the
  1303. # configure_file call expects those variables to be defined.
  1304. #
  1305. set(source "${source}")
  1306. set(build "${build}")
  1307. configure_file("${in}" "${out}" @ONLY)
  1308. add_test(${name} ${CMAKE_CTEST_COMMAND} -S "${out}" -V --output-log "${log}")
  1309. set_tests_properties(${name} PROPERTIES PASS_REGULAR_EXPRESSION "${regex}")
  1310. endmacro()
  1311. set(regex "(Problems when submitting via S*CP")
  1312. set(regex "${regex}|Error message was: ")
  1313. set(regex "${regex}([Cc]ould *n.t resolve host")
  1314. set(regex "${regex}|[Cc]ould *n.t connect to host")
  1315. set(regex "${regex}|The requested URL returned error")
  1316. set(regex "${regex}|libcurl was built with SSL disabled. https: not supported)")
  1317. set(regex "${regex}|Submission method .xmlrpc. not compiled into CTest")
  1318. set(regex "${regex}|Submission successful)")
  1319. set(ctest_coverage_labels_args "")
  1320. foreach(drop_method cp ftp http https scp xmlrpc)
  1321. # Cycle through these values each time through the loop:
  1322. if(ctest_coverage_labels_args STREQUAL "")
  1323. set(ctest_coverage_labels_args "LABELS Everything")
  1324. elseif(ctest_coverage_labels_args STREQUAL "LABELS Everything")
  1325. set(ctest_coverage_labels_args "LABELS 0ArgTest")
  1326. else()
  1327. set(ctest_coverage_labels_args "")
  1328. endif()
  1329. add_failed_submit_test(CTestTestFailedSubmit-${drop_method}
  1330. "${CMake_SOURCE_DIR}/Tests/CTestTest/SmallAndFast"
  1331. "${CMake_BINARY_DIR}/Tests/CTestTestFailedSubmits/${drop_method}"
  1332. "${CMake_SOURCE_DIR}/Tests/CTestTestFailedSubmits/test.cmake.in"
  1333. "${CMake_BINARY_DIR}/Tests/CTestTestFailedSubmits/test-${drop_method}.cmake"
  1334. "${CMake_BINARY_DIR}/Tests/CTestTestFailedSubmits/test-${drop_method}.log"
  1335. "${regex}"
  1336. )
  1337. endforeach()
  1338. IF (CMAKE_TESTS_CDASH_SERVER)
  1339. SET(regex "^([^:]+)://([^/]+)(/.*)$")
  1340. IF ("${CMAKE_TESTS_CDASH_SERVER}" MATCHES "${regex}")
  1341. SET(protocol "${CMAKE_MATCH_1}")
  1342. SET(server "${CMAKE_MATCH_2}")
  1343. SET(path "${CMAKE_MATCH_3}")
  1344. ELSE ("${CMAKE_TESTS_CDASH_SERVER}" MATCHES "${regex}")
  1345. SET(protocol "http")
  1346. SET(server "www.cdash.org")
  1347. SET(path "/CDash")
  1348. MESSAGE("warning: CMAKE_TESTS_CDASH_SERVER does not match expected regex...")
  1349. MESSAGE(" ...using default url='${protocol}://${server}${path}' for CTestTest[23]")
  1350. ENDIF ("${CMAKE_TESTS_CDASH_SERVER}" MATCHES "${regex}")
  1351. ENDIF (CMAKE_TESTS_CDASH_SERVER)
  1352. IF (CTEST_TEST_CTEST AND CMAKE_RUN_LONG_TESTS AND CMAKE_TESTS_CDASH_SERVER)
  1353. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestTest/test.cmake.in"
  1354. "${CMake_BINARY_DIR}/Tests/CTestTest/test.cmake" @ONLY ESCAPE_QUOTES)
  1355. ADD_TEST(CTestTest ${CMAKE_CTEST_COMMAND}
  1356. -S "${CMake_BINARY_DIR}/Tests/CTestTest/test.cmake" -V
  1357. --output-log "${CMake_BINARY_DIR}/Tests/CTestTest/testOutput.log"
  1358. )
  1359. CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestTest2/test.cmake.in"
  1360. "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" @ONLY ESCAPE_QUOTES)
  1361. ADD_TEST(CTestTest2 ${CMAKE_CTEST_COMMAND}
  1362. -S "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" -V
  1363. --output-log "${CMake_BINARY_DIR}/Tests/CTestTest2/testOutput.log"
  1364. )
  1365. # these tests take a long time, make sure they have it
  1366. # if timeouts have not already been set
  1367. GET_TEST_PROPERTY(CTestTest TIMEOUT PREVIOUS_TIMEOUT)
  1368. IF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  1369. SET_TESTS_PROPERTIES ( CTestTest
  1370. PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  1371. ENDIF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  1372. GET_TEST_PROPERTY(CTestTest2 TIMEOUT PREVIOUS_TIMEOUT)
  1373. IF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  1374. SET_TESTS_PROPERTIES ( CTestTest2
  1375. PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  1376. ENDIF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  1377. ENDIF (CTEST_TEST_CTEST AND CMAKE_RUN_LONG_TESTS AND CMAKE_TESTS_CDASH_SERVER)
  1378. IF(NOT DEFINED CTEST_RUN_CTestSubmitLargeOutput)
  1379. SET(CTEST_RUN_CTestSubmitLargeOutput OFF)
  1380. IF (CMAKE_TESTS_CDASH_SERVER AND "${server}" STREQUAL "localhost")
  1381. SET(CTEST_RUN_CTestSubmitLargeOutput ON)
  1382. ENDIF (CMAKE_TESTS_CDASH_SERVER AND "${server}" STREQUAL "localhost")
  1383. ENDIF(NOT DEFINED CTEST_RUN_CTestSubmitLargeOutput)
  1384. IF(CTEST_RUN_CTestSubmitLargeOutput)
  1385. CONFIGURE_FILE(
  1386. "${CMake_SOURCE_DIR}/Tests/CTestSubmitLargeOutput/test.cmake.in"
  1387. "${CMake_BINARY_DIR}/Tests/CTestSubmitLargeOutput/test.cmake"
  1388. @ONLY ESCAPE_QUOTES
  1389. )
  1390. ADD_TEST(CTestSubmitLargeOutput ${CMAKE_CTEST_COMMAND}
  1391. -S "${CMake_BINARY_DIR}/Tests/CTestSubmitLargeOutput/test.cmake" -V
  1392. --output-log "${CMake_BINARY_DIR}/Tests/CTestSubmitLargeOutput/testOutput.log"
  1393. )
  1394. # This test only passes if it fails to submit properly...
  1395. #
  1396. SET_TESTS_PROPERTIES(CTestSubmitLargeOutput PROPERTIES
  1397. PASS_REGULAR_EXPRESSION "Errors occurred during submission")
  1398. # Give this test plenty of time to run on slower machines:
  1399. #
  1400. SET_TESTS_PROPERTIES(CTestSubmitLargeOutput PROPERTIES
  1401. TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  1402. ENDIF(CTEST_RUN_CTestSubmitLargeOutput)
  1403. IF (CMAKE_RUN_LONG_TESTS AND TEST_KDE4_STABLE_BRANCH)
  1404. IF(UNIX)
  1405. IF(NOT QT4_FOUND)
  1406. FIND_PACKAGE(Qt4)
  1407. ENDIF(NOT QT4_FOUND)
  1408. SET(TRY_BUILD_KDE4 TRUE)
  1409. IF(QT4_FOUND)
  1410. # check whether it's Qt 4.5 in a cmake 2.4. compatible way:
  1411. IF(NOT EXISTS "${QT_QTNETWORK_INCLUDE_DIR}/QAbstractNetworkCache")
  1412. SET(TRY_BUILD_KDE4 FALSE)
  1413. ENDIF(NOT EXISTS "${QT_QTNETWORK_INCLUDE_DIR}/QAbstractNetworkCache")
  1414. ELSE(QT4_FOUND)
  1415. SET(TRY_BUILD_KDE4 FALSE)
  1416. ENDIF(QT4_FOUND)
  1417. FIND_PACKAGE(Perl)
  1418. IF(NOT PERL_FOUND)
  1419. SET(TRY_BUILD_KDE4 FALSE)
  1420. ENDIF(NOT PERL_FOUND)
  1421. FIND_PACKAGE(ZLIB)
  1422. IF(NOT ZLIB_FOUND)
  1423. SET(TRY_BUILD_KDE4 FALSE)
  1424. ENDIF(NOT ZLIB_FOUND)
  1425. IF(TRY_BUILD_KDE4)
  1426. FILE(MAKE_DIRECTORY ${CMake_BINARY_DIR}/Tests/KDE4StableBranchTest)
  1427. SET(TEST_KDE4_BASE_DIR ${CMake_BINARY_DIR}/Tests/KDE4StableBranchTest)
  1428. CONFIGURE_FILE(${CMake_SOURCE_DIR}/Tests/KDE4StableBranchTest/test_kde4.sh.in ${CMake_BINARY_DIR}/Tests/KDE4StableBranchTest/test_kde4.sh @ONLY)
  1429. EXECUTE_PROCESS(COMMAND chmod 755 ${CMake_BINARY_DIR}/Tests/KDE4StableBranchTest/test_kde4.sh )
  1430. ADD_TEST(KDE4StableBranchTest ${CMake_BINARY_DIR}/Tests/KDE4StableBranchTest/test_kde4.sh)
  1431. ENDIF(TRY_BUILD_KDE4)
  1432. ENDIF(UNIX)
  1433. ENDIF (CMAKE_RUN_LONG_TESTS AND TEST_KDE4_STABLE_BRANCH)
  1434. IF("${CMAKE_TEST_GENERATOR}" MATCHES Xcode)
  1435. SET(CMAKE_SKIP_BOOTSTRAP_TEST 1)
  1436. ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES Xcode)
  1437. IF(EXISTS "${CMAKE_BINARY_DIR}/CMakeLists.txt")
  1438. # If there is CMakeLists.txt in the binary tree, assume in-source build
  1439. SET(CMAKE_SKIP_BOOTSTRAP_TEST 1)
  1440. ENDIF(EXISTS "${CMAKE_BINARY_DIR}/CMakeLists.txt")
  1441. SET(bootstrap "")
  1442. IF(CMAKE_RUN_LONG_TESTS AND NOT CMAKE_SKIP_BOOTSTRAP_TEST)
  1443. IF(UNIX)
  1444. SET(bootstrap ${CMake_SOURCE_DIR}/bootstrap)
  1445. ELSEIF(MSYS)
  1446. CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/bootstrap.bat.in
  1447. ${CMAKE_CURRENT_BINARY_DIR}/bootstrap.bat @ONLY)
  1448. SET(bootstrap ${CMAKE_CURRENT_BINARY_DIR}/bootstrap.bat)
  1449. ENDIF()
  1450. ENDIF()
  1451. IF(bootstrap)
  1452. ADD_TEST(BootstrapTest ${CMAKE_CTEST_COMMAND}
  1453. --build-and-test
  1454. ${CMake_SOURCE_DIR}
  1455. ${CMake_BINARY_DIR}/Tests/BootstrapTest
  1456. --build-nocmake
  1457. --build-noclean
  1458. --build-makeprogram ${bootstrap}
  1459. --build-generator "${CMAKE_TEST_GENERATOR}"
  1460. --test-command
  1461. ${CMake_BINARY_DIR}/Tests/BootstrapTest/Bootstrap.cmk/cmake)
  1462. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BootstrapTest")
  1463. # Make this test run early during parallel execution
  1464. SET_TESTS_PROPERTIES(BootstrapTest PROPERTIES COST 5000)
  1465. # provide more time for the bootstrap test
  1466. GET_TEST_PROPERTY(BootstrapTest TIMEOUT PREVIOUS_TIMEOUT)
  1467. IF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  1468. SET_TESTS_PROPERTIES ( BootstrapTest
  1469. PROPERTIES TIMEOUT 5400)
  1470. ENDIF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  1471. ENDIF()
  1472. # fortran does not work for IDE builds because
  1473. # CMAKE_STANDARD_LIBRARIES needs to be per language
  1474. IF(CMAKE_TEST_GENERATOR MATCHES "Make|KDevelop")
  1475. INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CheckFortran.cmake)
  1476. IF(CMAKE_Fortran_COMPILER)
  1477. ADD_TEST(Fortran ${CMAKE_CTEST_COMMAND}
  1478. --build-and-test
  1479. "${CMake_SOURCE_DIR}/Tests/Fortran"
  1480. "${CMake_BINARY_DIR}/Tests/Fortran"
  1481. --build-generator ${CMAKE_TEST_GENERATOR}
  1482. --build-project testf
  1483. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  1484. --build-two-config
  1485. --test-command testf)
  1486. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Fortran")
  1487. # FortranCInterface tests.
  1488. IF(UNIX)
  1489. CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/FortranC/Flags.cmake.in
  1490. ${CMAKE_CURRENT_BINARY_DIR}/FortranC/Flags.cmake @ONLY)
  1491. ADD_TEST(FortranC.Flags ${CMAKE_CMAKE_COMMAND} -P
  1492. ${CMAKE_CURRENT_BINARY_DIR}/FortranC/Flags.cmake)
  1493. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/FortranC/Flags")
  1494. ENDIF()
  1495. ENDIF()
  1496. ENDIF()
  1497. IF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode")
  1498. INCLUDE(FindJava)
  1499. IF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW)
  1500. GET_FILENAME_COMPONENT(JNIPATH ${JAVA_COMPILE} PATH)
  1501. FIND_FILE(JNI_H jni.h
  1502. "${JNIPATH}/../include"
  1503. "${JNIPATH}/../java/include")
  1504. IF(JNI_H)
  1505. FILE(READ "${JNI_H}" JNI_FILE)
  1506. IF("${JNI_FILE}" MATCHES "JDK1_2")
  1507. ADD_TEST(Java ${CMAKE_CTEST_COMMAND}
  1508. --build-and-test
  1509. "${CMake_SOURCE_DIR}/Tests/Java"
  1510. "${CMake_BINARY_DIR}/Tests/Java"
  1511. --build-generator ${CMAKE_TEST_GENERATOR}
  1512. --build-project hello
  1513. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  1514. --build-two-config
  1515. --build-run-dir "${CMake_BINARY_DIR}/Tests/Java/"
  1516. --test-command ${JAVA_RUNTIME} -classpath hello.jar HelloWorld)
  1517. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Java")
  1518. ENDIF("${JNI_FILE}" MATCHES "JDK1_2")
  1519. ENDIF(JNI_H)
  1520. ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW)
  1521. ENDIF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode")
  1522. # add some cross compiler tests, for now only with makefile based generators
  1523. IF(CMAKE_TEST_GENERATOR MATCHES "Makefiles" OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
  1524. # if sdcc is found, build the SimpleCOnly project with sdcc
  1525. FIND_PROGRAM(SDCC_EXECUTABLE sdcc)
  1526. MARK_AS_ADVANCED(SDCC_EXECUTABLE)
  1527. IF(SDCC_EXECUTABLE)
  1528. ADD_TEST(SimpleCOnly_sdcc ${CMAKE_CTEST_COMMAND}
  1529. --build-and-test
  1530. "${CMake_SOURCE_DIR}/Tests/SimpleCOnly"
  1531. "${CMake_BINARY_DIR}/Tests/SimpleCOnly_sdcc"
  1532. --build-generator ${CMAKE_TEST_GENERATOR}
  1533. --build-project SimpleC
  1534. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  1535. --build-options
  1536. "-DCMAKE_SYSTEM_NAME=Generic"
  1537. "-DCMAKE_C_COMPILER=${SDCC_EXECUTABLE}")
  1538. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SimpleCOnly_sdcc")
  1539. ENDIF(SDCC_EXECUTABLE)
  1540. FIND_PROGRAM(MINGW_CC_LINUX2WIN_EXECUTABLE i586-mingw32msvc-gcc)
  1541. FIND_PROGRAM(MINGW_CXX_LINUX2WIN_EXECUTABLE i586-mingw32msvc-g++)
  1542. MARK_AS_ADVANCED(MINGW_CC_LINUX2WIN_EXECUTABLE MINGW_CXX_LINUX2WIN_EXECUTABLE)
  1543. IF(MINGW_CC_LINUX2WIN_EXECUTABLE AND MINGW_CXX_LINUX2WIN_EXECUTABLE)
  1544. ADD_TEST(Simple_Mingw_Linux2Win ${CMAKE_CTEST_COMMAND}
  1545. --build-and-test
  1546. "${CMake_SOURCE_DIR}/Tests/Simple"
  1547. "${CMake_BINARY_DIR}/Tests/Simple_Mingw_Linux2Win"
  1548. --build-generator ${CMAKE_TEST_GENERATOR}
  1549. --build-project Simple
  1550. --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
  1551. --build-options
  1552. "-DCMAKE_SYSTEM_NAME=Windows"
  1553. "-DCMAKE_C_COMPILER=${MINGW_CC_LINUX2WIN_EXECUTABLE}"
  1554. "-DCMAKE_CXX_COMPILER=${MINGW_CXX_LINUX2WIN_EXECUTABLE}")
  1555. LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Simple_Mingw_Linux2Win")
  1556. ENDIF(MINGW_CC_LINUX2WIN_EXECUTABLE AND MINGW_CXX_LINUX2WIN_EXECUTABLE)
  1557. ENDIF(CMAKE_TEST_GENERATOR MATCHES "Makefiles" OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
  1558. IF(UNIX)
  1559. STRING(COMPARE EQUAL "${CMAKE_INSTALL_PREFIX}" "${CMake_BINARY_DIR}/Tests/TestShellInstall/Prefix"
  1560. PREFIX_IS_FOR_TEST)
  1561. IF(PREFIX_IS_FOR_TEST)
  1562. CONFIGURE_FILE(
  1563. ${CMake_SOURCE_DIR}/Tests/TestInstall.sh.in
  1564. ${CMake_BINARY_DIR}/Tests/TestShellInstall/TestInstall.sh
  1565. @ONLY IMMEDIATE
  1566. )
  1567. ADD_TEST(ShellInstall /bin/sh ${CMake_BINARY_DIR}/Tests/TestShellInstall/TestShellInstall.sh)
  1568. ENDIF(PREFIX_IS_FOR_TEST)
  1569. ENDIF(UNIX)
  1570. IF(CMAKE_TEST_PROJECT_CSE_DIR)
  1571. SET(script "${CMAKE_TEST_PROJECT_CSE_DIR}/BuildProjectCSE.cmake")
  1572. IF(NOT EXISTS "${script}")
  1573. SET(script "${CMAKE_TEST_PROJECT_CSE_DIR}/cse_build.cmake")
  1574. ENDIF(NOT EXISTS "${script}")
  1575. IF(NOT EXISTS "${script}")
  1576. MESSAGE("warning: CMAKE_TEST_PROJECT_CSE_DIR set, but no build script found...")
  1577. ENDIF(NOT EXISTS "${script}")
  1578. ADD_TEST(BuildCSE ${CMAKE_CTEST_COMMAND} -V -S "${script}")
  1579. SET_TESTS_PROPERTIES(BuildCSE PROPERTIES TIMEOUT 5400)
  1580. ENDIF(CMAKE_TEST_PROJECT_CSE_DIR)
  1581. IF(CMAKE_TEST_PLPLOT_DIR)
  1582. ADD_TEST(plplot ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_PLPLOT_DIR}/../../EasyDashboardScripts/plplot.cmake )
  1583. SET_TESTS_PROPERTIES ( plplot PROPERTIES TIMEOUT 5400)
  1584. ENDIF(CMAKE_TEST_PLPLOT_DIR)
  1585. IF(CMAKE_TEST_CHICKEN_DIR)
  1586. ADD_TEST(Chicken ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_CHICKEN_DIR}/../../EasyDashboardScripts/Chicken.cmake )
  1587. SET_TESTS_PROPERTIES ( Chicken PROPERTIES TIMEOUT 5400)
  1588. ENDIF(CMAKE_TEST_CHICKEN_DIR)
  1589. IF(CMAKE_TEST_KDELIBS_ALPHA_1_DIR)
  1590. ADD_TEST(KDELibsAlpha1 ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_KDELIBS_ALPHA_1_DIR}/../../EasyDashboardScripts/kdelibs.cmake )
  1591. SET_TESTS_PROPERTIES ( KDELibsAlpha1 PROPERTIES TIMEOUT 5400)
  1592. ENDIF(CMAKE_TEST_KDELIBS_ALPHA_1_DIR)
  1593. # If this is not an in-source build, provide a target to wipe out
  1594. # all the test build directories.
  1595. IF(NOT EXISTS "${CMAKE_BINARY_DIR}/CMakeLists.txt")
  1596. CONFIGURE_FILE(${CMake_SOURCE_DIR}/Tests/test_clean.cmake.in
  1597. ${CMake_BINARY_DIR}/Tests/test_clean.cmake @ONLY)
  1598. ADD_CUSTOM_TARGET(test_clean
  1599. COMMAND ${CMAKE_COMMAND} -P ${CMake_BINARY_DIR}/Tests/test_clean.cmake
  1600. COMMENT "Removing test build directories."
  1601. )
  1602. ENDIF(NOT EXISTS "${CMAKE_BINARY_DIR}/CMakeLists.txt")
  1603. ADD_TEST(CMakeWizardTest ${CMAKE_CMAKE_COMMAND}
  1604. -D build_dir:STRING=${CMAKE_CURRENT_BINARY_DIR}/CMakeWizardTest
  1605. -D source_dir:STRING=${CMAKE_CURRENT_SOURCE_DIR}/Tutorial/Step3
  1606. -D CMAKE_CTEST_COMMAND:STRING=${CMAKE_CTEST_COMMAND}
  1607. -P ${CMAKE_CURRENT_SOURCE_DIR}/CMakeWizardTest.cmake)
  1608. ENDIF(BUILD_TESTING)
  1609. SUBDIRS(CMakeTests)