浏览代码

ExternalData: Add tests covering interfaces and errors

Add a Module.ExternalData test to verify data retrieval and test
argument DATA{} references.

Add a RunCMake.ExternalData test to verify error handling and automatic
transformation of a raw data to a content link and staged object.
Brad King 12 年之前
父节点
当前提交
4befecc77c
共有 100 个文件被更改,包括 396 次插入0 次删除
  1. 12 0
      Tests/CMakeLists.txt
  2. 32 0
      Tests/Module/ExternalData/CMakeLists.txt
  3. 1 0
      Tests/Module/ExternalData/Data.dat.md5
  4. 40 0
      Tests/Module/ExternalData/Data1Check.cmake
  5. 1 0
      Tests/Module/ExternalData/Data2.dat.md5
  6. 10 0
      Tests/Module/ExternalData/Data2/CMakeLists.txt
  7. 9 0
      Tests/Module/ExternalData/Data2/Data2Check.cmake
  8. 1 0
      Tests/Module/ExternalData/Data2/SeriesC_1_.my.dat.md5
  9. 1 0
      Tests/Module/ExternalData/Data2/SeriesC_2_.my.dat.md5
  10. 1 0
      Tests/Module/ExternalData/Data2/SeriesC_3_.my.dat.md5
  11. 14 0
      Tests/Module/ExternalData/Data3/CMakeLists.txt
  12. 1 0
      Tests/Module/ExternalData/Data3/Data.dat.md5
  13. 25 0
      Tests/Module/ExternalData/Data3/Data3Check.cmake
  14. 1 0
      Tests/Module/ExternalData/Data3/Other.dat.md5
  15. 1 0
      Tests/Module/ExternalData/MD5/.gitattributes
  16. 1 0
      Tests/Module/ExternalData/MD5/08cfcf221f76ace7b906b312284e73d7
  17. 1 0
      Tests/Module/ExternalData/MD5/30ba0acdee9096b3b9fc6c69362c6b42
  18. 1 0
      Tests/Module/ExternalData/MD5/31eff09e84fca01415f8cd9d82ec432b
  19. 1 0
      Tests/Module/ExternalData/MD5/401767f22a456b3522953722090a2c36
  20. 1 0
      Tests/Module/ExternalData/MD5/8c018830e3efa5caf3c7415028335a57
  21. 1 0
      Tests/Module/ExternalData/MD5/8f4add4581551facf27237e6577fd662
  22. 1 0
      Tests/Module/ExternalData/MD5/9d980b06c2f0fec3d4872d68175b9822
  23. 1 0
      Tests/Module/ExternalData/MD5/aaad162b85f60d1eb57ca71a23e8efd7
  24. 1 0
      Tests/Module/ExternalData/MD5/c1030719c95f3435d8abc39c0d442946
  25. 1 0
      Tests/Module/ExternalData/MD5/ecfa1ecd417d4253af81ae04d1bd6581
  26. 1 0
      Tests/Module/ExternalData/MD5/f41c94425d01ecbbee70440b951cb058
  27. 1 0
      Tests/Module/ExternalData/MD5/f7ab5a04aae9cb9a520e70b20b9c8ed7
  28. 1 0
      Tests/Module/ExternalData/MetaA.dat.md5
  29. 1 0
      Tests/Module/ExternalData/MetaB.dat.md5
  30. 1 0
      Tests/Module/ExternalData/MetaC.dat.md5
  31. 1 0
      Tests/Module/ExternalData/MetaTop.dat.md5
  32. 1 0
      Tests/Module/ExternalData/PairedA.dat.md5
  33. 1 0
      Tests/Module/ExternalData/PairedB.dat.md5
  34. 1 0
      Tests/Module/ExternalData/SeriesA.dat.md5
  35. 1 0
      Tests/Module/ExternalData/SeriesA1.dat.md5
  36. 1 0
      Tests/Module/ExternalData/SeriesA2.dat.md5
  37. 1 0
      Tests/Module/ExternalData/SeriesA3.dat.md5
  38. 1 0
      Tests/Module/ExternalData/SeriesAn1.dat.md5
  39. 1 0
      Tests/Module/ExternalData/SeriesAn2.dat.md5
  40. 1 0
      Tests/Module/ExternalData/SeriesAn3.dat.md5
  41. 1 0
      Tests/Module/ExternalData/SeriesB.dat.md5
  42. 1 0
      Tests/Module/ExternalData/SeriesB_1.dat.md5
  43. 1 0
      Tests/Module/ExternalData/SeriesB_2.dat.md5
  44. 1 0
      Tests/Module/ExternalData/SeriesB_3.dat.md5
  45. 1 0
      Tests/Module/ExternalData/SeriesBn_1.dat.md5
  46. 1 0
      Tests/Module/ExternalData/SeriesBn_2.dat.md5
  47. 1 0
      Tests/Module/ExternalData/SeriesBn_3.dat.md5
  48. 1 0
      Tests/Module/ExternalData/SeriesC.1.dat.md5
  49. 1 0
      Tests/Module/ExternalData/SeriesC.2.dat.md5
  50. 1 0
      Tests/Module/ExternalData/SeriesC.3.dat.md5
  51. 1 0
      Tests/Module/ExternalData/SeriesC.dat.md5
  52. 1 0
      Tests/Module/ExternalData/SeriesCn.1.dat.md5
  53. 1 0
      Tests/Module/ExternalData/SeriesCn.2.dat.md5
  54. 1 0
      Tests/Module/ExternalData/SeriesCn.3.dat.md5
  55. 1 0
      Tests/Module/ExternalData/SeriesD-1.dat.md5
  56. 1 0
      Tests/Module/ExternalData/SeriesD-2.dat.md5
  57. 1 0
      Tests/Module/ExternalData/SeriesD-3.dat.md5
  58. 1 0
      Tests/Module/ExternalData/SeriesD.dat.md5
  59. 1 0
      Tests/Module/ExternalData/SeriesDn-1.dat.md5
  60. 1 0
      Tests/Module/ExternalData/SeriesDn-2.dat.md5
  61. 1 0
      Tests/Module/ExternalData/SeriesDn-3.dat.md5
  62. 1 0
      Tests/RunCMake/CMakeLists.txt
  63. 1 0
      Tests/RunCMake/ExternalData/BadHashAlgo1-result.txt
  64. 8 0
      Tests/RunCMake/ExternalData/BadHashAlgo1-stderr.txt
  65. 3 0
      Tests/RunCMake/ExternalData/BadHashAlgo1.cmake
  66. 1 0
      Tests/RunCMake/ExternalData/BadHashAlgo1.txt
  67. 1 0
      Tests/RunCMake/ExternalData/BadOption1-result.txt
  68. 9 0
      Tests/RunCMake/ExternalData/BadOption1-stderr.txt
  69. 5 0
      Tests/RunCMake/ExternalData/BadOption1.cmake
  70. 1 0
      Tests/RunCMake/ExternalData/BadOption2-result.txt
  71. 9 0
      Tests/RunCMake/ExternalData/BadOption2-stderr.txt
  72. 5 0
      Tests/RunCMake/ExternalData/BadOption2.cmake
  73. 1 0
      Tests/RunCMake/ExternalData/BadSeries1-result.txt
  74. 19 0
      Tests/RunCMake/ExternalData/BadSeries1-stderr.txt
  75. 3 0
      Tests/RunCMake/ExternalData/BadSeries1.cmake
  76. 1 0
      Tests/RunCMake/ExternalData/BadSeries2-result.txt
  77. 16 0
      Tests/RunCMake/ExternalData/BadSeries2-stderr.txt
  78. 3 0
      Tests/RunCMake/ExternalData/BadSeries2.cmake
  79. 1 0
      Tests/RunCMake/ExternalData/BadSeries3-result.txt
  80. 6 0
      Tests/RunCMake/ExternalData/BadSeries3-stderr.txt
  81. 2 0
      Tests/RunCMake/ExternalData/BadSeries3.cmake
  82. 3 0
      Tests/RunCMake/ExternalData/CMakeLists.txt
  83. 1 0
      Tests/RunCMake/ExternalData/Data.txt.md5
  84. 1 0
      Tests/RunCMake/ExternalData/Directory1-result.txt
  85. 14 0
      Tests/RunCMake/ExternalData/Directory1-stderr.txt
  86. 6 0
      Tests/RunCMake/ExternalData/Directory1.cmake
  87. 0 0
      Tests/RunCMake/ExternalData/Directory1/DirData1.txt
  88. 1 0
      Tests/RunCMake/ExternalData/Directory2-result.txt
  89. 10 0
      Tests/RunCMake/ExternalData/Directory2-stderr.txt
  90. 6 0
      Tests/RunCMake/ExternalData/Directory2.cmake
  91. 1 0
      Tests/RunCMake/ExternalData/Directory2.md5
  92. 0 0
      Tests/RunCMake/ExternalData/Directory2/DirData2.txt
  93. 1 0
      Tests/RunCMake/ExternalData/Directory3-result.txt
  94. 14 0
      Tests/RunCMake/ExternalData/Directory3-stderr.txt
  95. 6 0
      Tests/RunCMake/ExternalData/Directory3.cmake
  96. 0 0
      Tests/RunCMake/ExternalData/Directory3/DirData3.txt
  97. 3 0
      Tests/RunCMake/ExternalData/LinkContentMD5-stdout.txt
  98. 22 0
      Tests/RunCMake/ExternalData/LinkContentMD5.cmake
  99. 1 0
      Tests/RunCMake/ExternalData/MissingData-result.txt
  100. 14 0
      Tests/RunCMake/ExternalData/MissingData-stderr.txt

+ 12 - 0
Tests/CMakeLists.txt

@@ -312,6 +312,18 @@ if(BUILD_TESTING)
 
   ADD_TEST_MACRO(Module.CheckTypeSize CheckTypeSize)
 
+  add_test(Module.ExternalData ${CMAKE_CTEST_COMMAND}
+    --build-and-test
+    "${CMake_SOURCE_DIR}/Tests/Module/ExternalData"
+    "${CMake_BINARY_DIR}/Tests/Module/ExternalData"
+    --build-generator ${CMAKE_TEST_GENERATOR}
+    --build-project ExternalDataTest
+    --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
+    --force-new-ctest-process
+    --test-command ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE} -V
+    )
+  list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Module/ExternalData")
+
   ADD_TEST_MACRO(Module.GenerateExportHeader GenerateExportHeader)
 
   if (APPLE OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")

+ 32 - 0
Tests/Module/ExternalData/CMakeLists.txt

@@ -0,0 +1,32 @@
+cmake_minimum_required(VERSION 2.8.10.20130115)
+project(ExternalDataTest NONE)
+
+include(CTest)
+
+include(ExternalData)
+set(ExternalData_URL_TEMPLATES
+  "file:///${CMAKE_CURRENT_SOURCE_DIR}/%(algo)/%(hash)"
+  )
+set(ExternalData_BINARY_ROOT "${CMAKE_CURRENT_BINARY_DIR}/ExternalData")
+file(REMOVE_RECURSE ${ExternalData_BINARY_ROOT}) # clean test
+
+ExternalData_Add_Test(Data1
+  NAME Data1Check
+  COMMAND ${CMAKE_COMMAND}
+    -D Data=DATA{Data.dat}
+    -D SeriesA=DATA{SeriesA.dat,:}
+    -D SeriesB=DATA{SeriesB.dat,:}
+    -D SeriesC=DATA{SeriesC.dat,:}
+    -D SeriesD=DATA{SeriesD.dat,:}
+    -D SeriesAn=DATA{SeriesAn1.dat,:}
+    -D SeriesBn=DATA{SeriesBn_1.dat,:}
+    -D SeriesCn=DATA{SeriesCn.1.dat,:}
+    -D SeriesDn=DATA{SeriesDn-1.dat,:}
+    -D Paired=DATA{PairedA.dat,PairedB.dat}
+    -D Meta=DATA{MetaTop.dat,REGEX:Meta[ABC].dat}
+    -P ${CMAKE_CURRENT_SOURCE_DIR}/Data1Check.cmake
+  )
+ExternalData_Add_Target(Data1)
+
+add_subdirectory(Data2)
+add_subdirectory(Data3)

+ 1 - 0
Tests/Module/ExternalData/Data.dat.md5

@@ -0,0 +1 @@
+8c018830e3efa5caf3c7415028335a57

+ 40 - 0
Tests/Module/ExternalData/Data1Check.cmake

@@ -0,0 +1,40 @@
+file(STRINGS "${Data}" lines LIMIT_INPUT 1024)
+if(NOT "x${lines}" STREQUAL "xInput file already transformed.")
+  message(SEND_ERROR "Input file:\n  ${Data}\ndoes not have expected content, but [[${lines}]]")
+endif()
+set(SeriesAn1 "1\\.dat")
+set(SeriesBn1 "_1\\.dat")
+set(SeriesCn1 "\\.1\\.dat")
+set(SeriesDn1 "-1\\.dat")
+set(SeriesAl 1 2 3)
+set(SeriesBl _1 _2 _3)
+set(SeriesCl .1 .2 .3)
+set(SeriesDl -1 -2 -3)
+foreach(s A B C D)
+  foreach(n "" ${Series${s}l})
+    string(REGEX REPLACE "\\.dat$" "${n}.dat" file "${Series${s}}")
+    if(NOT EXISTS "${file}")
+      message(SEND_ERROR "Input file:\n  ${file}\ndoes not exist!")
+    endif()
+  endforeach()
+endforeach()
+foreach(s A B C D)
+  foreach(n ${Series${s}l})
+    string(REGEX REPLACE "${Series${s}n1}$" "${n}.dat" file "${Series${s}n}")
+    if(NOT EXISTS "${file}")
+      message(SEND_ERROR "Input file:\n  ${file}\ndoes not exist!")
+    endif()
+  endforeach()
+endforeach()
+foreach(n A B)
+  string(REGEX REPLACE "A\\.dat$" "${n}.dat" file "${Paired}")
+  if(NOT EXISTS "${file}")
+    message(SEND_ERROR "Input file:\n  ${file}\ndoes not exist!")
+  endif()
+endforeach()
+foreach(n Top A B C)
+  string(REGEX REPLACE "Top\\.dat$" "${n}.dat" file "${Meta}")
+  if(NOT EXISTS "${file}")
+    message(SEND_ERROR "Input file:\n  ${file}\ndoes not exist!")
+  endif()
+endforeach()

+ 1 - 0
Tests/Module/ExternalData/Data2.dat.md5

@@ -0,0 +1 @@
+8c018830e3efa5caf3c7415028335a57

+ 10 - 0
Tests/Module/ExternalData/Data2/CMakeLists.txt

@@ -0,0 +1,10 @@
+set(ExternalData_SERIES_PARSE "([0-9]+)(_\\.my\\.dat)$")
+set(ExternalData_SERIES_MATCH "[0-9]+")
+ExternalData_Add_Test(Data2
+  NAME Data2Check
+  COMMAND ${CMAKE_COMMAND}
+    -D Data2=DATA{../Data2.dat}
+    -D SeriesC=DATA{SeriesC_1_.my.dat,:}
+    -P ${CMAKE_CURRENT_SOURCE_DIR}/Data2Check.cmake
+  )
+ExternalData_Add_Target(Data2)

+ 9 - 0
Tests/Module/ExternalData/Data2/Data2Check.cmake

@@ -0,0 +1,9 @@
+if(NOT EXISTS "${Data2}")
+  message(SEND_ERROR "Input file:\n  ${Data2}\ndoes not exist!")
+endif()
+foreach(n 1 2 3)
+  string(REGEX REPLACE "_1_\\.my\\.dat$" "_${n}_.my.dat" SeriesCFile "${SeriesC}")
+  if(NOT EXISTS "${SeriesCFile}")
+    message(SEND_ERROR "Input file:\n  ${SeriesCFile}\ndoes not exist!")
+  endif()
+endforeach()

+ 1 - 0
Tests/Module/ExternalData/Data2/SeriesC_1_.my.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/Data2/SeriesC_2_.my.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/Data2/SeriesC_3_.my.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 14 - 0
Tests/Module/ExternalData/Data3/CMakeLists.txt

@@ -0,0 +1,14 @@
+set(Store0 ${CMAKE_BINARY_DIR}/ExternalData/Other)
+set(Store1 ${CMAKE_BINARY_DIR}/ExternalData/Objects)
+set(ExternalData_OBJECT_STORES ${Store0} ${Store1})
+ExternalData_Add_Test(Data3
+  NAME Data3Check
+  COMMAND ${CMAKE_COMMAND}
+    -D Data=DATA{Data.dat}
+    -D Other=DATA{Other.dat}
+    -D Store0=${Store0}
+    -D Store1=${Store1}
+    -P ${CMAKE_CURRENT_SOURCE_DIR}/Data3Check.cmake
+  )
+ExternalData_Add_Target(Data3)
+add_dependencies(Data3 Data1 Data2)

+ 1 - 0
Tests/Module/ExternalData/Data3/Data.dat.md5

@@ -0,0 +1 @@
+8c018830e3efa5caf3c7415028335a57

+ 25 - 0
Tests/Module/ExternalData/Data3/Data3Check.cmake

@@ -0,0 +1,25 @@
+if(NOT EXISTS "${Data}")
+  message(SEND_ERROR "Input file:\n  ${Data}\ndoes not exist!")
+endif()
+if(NOT EXISTS "${Other}")
+  message(SEND_ERROR "Input file:\n  ${Other}\ndoes not exist!")
+endif()
+# Verify that the 'Data' object was found in the second store location left
+# from Data1 target downloads and that the 'Other' object was downloaded to
+# our first store location.  Neither object should exist in the other store.
+foreach(should_exist
+    "${Store0}/MD5/aaad162b85f60d1eb57ca71a23e8efd7"
+    "${Store1}/MD5/8c018830e3efa5caf3c7415028335a57"
+    )
+  if(NOT EXISTS ${should_exist})
+    message(SEND_ERROR "Store file:\n  ${should_exist}\nshould exist!")
+  endif()
+endforeach()
+foreach(should_not_exist
+    "${Store0}/MD5/8c018830e3efa5caf3c7415028335a57"
+    "${Store1}/MD5/aaad162b85f60d1eb57ca71a23e8efd7"
+    )
+  if(EXISTS ${should_not_exist})
+    message(SEND_ERROR "Store file:\n  ${should_not_exist}\nshould not exist!")
+  endif()
+endforeach()

+ 1 - 0
Tests/Module/ExternalData/Data3/Other.dat.md5

@@ -0,0 +1 @@
+aaad162b85f60d1eb57ca71a23e8efd7

+ 1 - 0
Tests/Module/ExternalData/MD5/.gitattributes

@@ -0,0 +1 @@
+*               -crlf

+ 1 - 0
Tests/Module/ExternalData/MD5/08cfcf221f76ace7b906b312284e73d7

@@ -0,0 +1 @@
+MetaTop

+ 1 - 0
Tests/Module/ExternalData/MD5/30ba0acdee9096b3b9fc6c69362c6b42

@@ -0,0 +1 @@
+Series.3

+ 1 - 0
Tests/Module/ExternalData/MD5/31eff09e84fca01415f8cd9d82ec432b

@@ -0,0 +1 @@
+Series.1

+ 1 - 0
Tests/Module/ExternalData/MD5/401767f22a456b3522953722090a2c36

@@ -0,0 +1 @@
+PairedA

+ 1 - 0
Tests/Module/ExternalData/MD5/8c018830e3efa5caf3c7415028335a57

@@ -0,0 +1 @@
+Input file already transformed.

+ 1 - 0
Tests/Module/ExternalData/MD5/8f4add4581551facf27237e6577fd662

@@ -0,0 +1 @@
+MetaB

+ 1 - 0
Tests/Module/ExternalData/MD5/9d980b06c2f0fec3d4872d68175b9822

@@ -0,0 +1 @@
+MetaA

+ 1 - 0
Tests/Module/ExternalData/MD5/aaad162b85f60d1eb57ca71a23e8efd7

@@ -0,0 +1 @@
+Another input file already transformed.

+ 1 - 0
Tests/Module/ExternalData/MD5/c1030719c95f3435d8abc39c0d442946

@@ -0,0 +1 @@
+MetaC

+ 1 - 0
Tests/Module/ExternalData/MD5/ecfa1ecd417d4253af81ae04d1bd6581

@@ -0,0 +1 @@
+PairedB

+ 1 - 0
Tests/Module/ExternalData/MD5/f41c94425d01ecbbee70440b951cb058

@@ -0,0 +1 @@
+Series

+ 1 - 0
Tests/Module/ExternalData/MD5/f7ab5a04aae9cb9a520e70b20b9c8ed7

@@ -0,0 +1 @@
+Series.2

+ 1 - 0
Tests/Module/ExternalData/MetaA.dat.md5

@@ -0,0 +1 @@
+9d980b06c2f0fec3d4872d68175b9822

+ 1 - 0
Tests/Module/ExternalData/MetaB.dat.md5

@@ -0,0 +1 @@
+8f4add4581551facf27237e6577fd662

+ 1 - 0
Tests/Module/ExternalData/MetaC.dat.md5

@@ -0,0 +1 @@
+c1030719c95f3435d8abc39c0d442946

+ 1 - 0
Tests/Module/ExternalData/MetaTop.dat.md5

@@ -0,0 +1 @@
+08cfcf221f76ace7b906b312284e73d7

+ 1 - 0
Tests/Module/ExternalData/PairedA.dat.md5

@@ -0,0 +1 @@
+401767f22a456b3522953722090a2c36

+ 1 - 0
Tests/Module/ExternalData/PairedB.dat.md5

@@ -0,0 +1 @@
+ecfa1ecd417d4253af81ae04d1bd6581

+ 1 - 0
Tests/Module/ExternalData/SeriesA.dat.md5

@@ -0,0 +1 @@
+f41c94425d01ecbbee70440b951cb058

+ 1 - 0
Tests/Module/ExternalData/SeriesA1.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/SeriesA2.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/SeriesA3.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 1 - 0
Tests/Module/ExternalData/SeriesAn1.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/SeriesAn2.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/SeriesAn3.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 1 - 0
Tests/Module/ExternalData/SeriesB.dat.md5

@@ -0,0 +1 @@
+f41c94425d01ecbbee70440b951cb058

+ 1 - 0
Tests/Module/ExternalData/SeriesB_1.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/SeriesB_2.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/SeriesB_3.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 1 - 0
Tests/Module/ExternalData/SeriesBn_1.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/SeriesBn_2.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/SeriesBn_3.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 1 - 0
Tests/Module/ExternalData/SeriesC.1.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/SeriesC.2.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/SeriesC.3.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 1 - 0
Tests/Module/ExternalData/SeriesC.dat.md5

@@ -0,0 +1 @@
+f41c94425d01ecbbee70440b951cb058

+ 1 - 0
Tests/Module/ExternalData/SeriesCn.1.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/SeriesCn.2.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/SeriesCn.3.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 1 - 0
Tests/Module/ExternalData/SeriesD-1.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/SeriesD-2.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/SeriesD-3.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 1 - 0
Tests/Module/ExternalData/SeriesD.dat.md5

@@ -0,0 +1 @@
+f41c94425d01ecbbee70440b951cb058

+ 1 - 0
Tests/Module/ExternalData/SeriesDn-1.dat.md5

@@ -0,0 +1 @@
+31eff09e84fca01415f8cd9d82ec432b

+ 1 - 0
Tests/Module/ExternalData/SeriesDn-2.dat.md5

@@ -0,0 +1 @@
+f7ab5a04aae9cb9a520e70b20b9c8ed7

+ 1 - 0
Tests/Module/ExternalData/SeriesDn-3.dat.md5

@@ -0,0 +1 @@
+30ba0acdee9096b3b9fc6c69362c6b42

+ 1 - 0
Tests/RunCMake/CMakeLists.txt

@@ -46,6 +46,7 @@ macro(add_RunCMake_test test)
 endmacro()
 
 add_RunCMake_test(CMP0019)
+add_RunCMake_test(ExternalData)
 add_RunCMake_test(GeneratorExpression)
 add_RunCMake_test(TargetPropertyGeneratorExpressions)
 add_RunCMake_test(Languages)

+ 1 - 0
Tests/RunCMake/ExternalData/BadHashAlgo1-result.txt

@@ -0,0 +1 @@
+1

+ 8 - 0
Tests/RunCMake/ExternalData/BadHashAlgo1-stderr.txt

@@ -0,0 +1,8 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Unknown hash algorithm specified by ExternalData_LINK_CONTENT:
+
+    BAD
+Call Stack \(most recent call first\):
+  .*
+  BadHashAlgo1.cmake:3 \(ExternalData_Expand_Arguments\)
+  CMakeLists.txt:3 \(include\)

+ 3 - 0
Tests/RunCMake/ExternalData/BadHashAlgo1.cmake

@@ -0,0 +1,3 @@
+include(ExternalData)
+set(ExternalData_LINK_CONTENT BAD)
+ExternalData_Expand_Arguments(Data args DATA{BadHashAlgo1.txt})

+ 1 - 0
Tests/RunCMake/ExternalData/BadHashAlgo1.txt

@@ -0,0 +1 @@
+Sample input file that should not be transformed.

+ 1 - 0
Tests/RunCMake/ExternalData/BadOption1-result.txt

@@ -0,0 +1 @@
+1

+ 9 - 0
Tests/RunCMake/ExternalData/BadOption1-stderr.txt

@@ -0,0 +1,9 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Unknown option "Bad/Option" in argument
+
+    DATA{Data.txt,Bad/Option}
+
+Call Stack \(most recent call first\):
+  .*
+  BadOption1.cmake:2 \(ExternalData_Add_Test\)
+  CMakeLists.txt:3 \(include\)

+ 5 - 0
Tests/RunCMake/ExternalData/BadOption1.cmake

@@ -0,0 +1,5 @@
+include(ExternalData)
+ExternalData_Add_Test(Data
+  NAME Test
+  COMMAND ${CMAKE_COMMAND} -E echo DATA{Data.txt,Bad/Option}
+  )

+ 1 - 0
Tests/RunCMake/ExternalData/BadOption2-result.txt

@@ -0,0 +1 @@
+1

+ 9 - 0
Tests/RunCMake/ExternalData/BadOption2-stderr.txt

@@ -0,0 +1,9 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Unknown option "Bad:Option" in argument
+
+    DATA{Data.txt,Bad:Option}
+
+Call Stack \(most recent call first\):
+  .*
+  BadOption2.cmake:2 \(ExternalData_Add_Test\)
+  CMakeLists.txt:3 \(include\)

+ 5 - 0
Tests/RunCMake/ExternalData/BadOption2.cmake

@@ -0,0 +1,5 @@
+include(ExternalData)
+ExternalData_Add_Test(Data
+  NAME Test
+  COMMAND ${CMAKE_COMMAND} -E echo DATA{Data.txt,Bad:Option}
+  )

+ 1 - 0
Tests/RunCMake/ExternalData/BadSeries1-result.txt

@@ -0,0 +1 @@
+1

+ 19 - 0
Tests/RunCMake/ExternalData/BadSeries1-stderr.txt

@@ -0,0 +1,19 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  ExternalData_SERIES_PARSE is set to
+
+    NotASeriesRegex
+
+  which is not of the form
+
+    \(<number>\)\(<suffix>\)\$
+
+  Fix the regular expression or set variables
+
+    ExternalData_SERIES_PARSE_PREFIX = <prefix> regex group number, if any
+    ExternalData_SERIES_PARSE_NUMBER = <number> regex group number
+    ExternalData_SERIES_PARSE_SUFFIX = <suffix> regex group number
+
+Call Stack \(most recent call first\):
+  .*
+  BadSeries1.cmake:3 \(ExternalData_Expand_Arguments\)
+  CMakeLists.txt:3 \(include\)

+ 3 - 0
Tests/RunCMake/ExternalData/BadSeries1.cmake

@@ -0,0 +1,3 @@
+include(ExternalData)
+set(ExternalData_SERIES_PARSE NotASeriesRegex)
+ExternalData_Expand_Arguments(Data args DATA{Data.txt,:})

+ 1 - 0
Tests/RunCMake/ExternalData/BadSeries2-result.txt

@@ -0,0 +1 @@
+1

+ 16 - 0
Tests/RunCMake/ExternalData/BadSeries2-stderr.txt

@@ -0,0 +1,16 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Data file referenced by argument
+
+    DATA{Data.txt,:}
+
+  corresponds to path
+
+    Data.txt
+
+  that does not match regular expression
+
+    \(x\)\(y\)\$
+Call Stack \(most recent call first\):
+  .*
+  BadSeries2.cmake:3 \(ExternalData_Expand_Arguments\)
+  CMakeLists.txt:3 \(include\)

+ 3 - 0
Tests/RunCMake/ExternalData/BadSeries2.cmake

@@ -0,0 +1,3 @@
+include(ExternalData)
+set(ExternalData_SERIES_PARSE "(x)(y)$")
+ExternalData_Expand_Arguments(Data args DATA{Data.txt,:})

+ 1 - 0
Tests/RunCMake/ExternalData/BadSeries3-result.txt

@@ -0,0 +1 @@
+1

+ 6 - 0
Tests/RunCMake/ExternalData/BadSeries3-stderr.txt

@@ -0,0 +1,6 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Series option ":" not allowed with associated files.
+Call Stack \(most recent call first\):
+  .*
+  BadSeries3.cmake:2 \(ExternalData_Expand_Arguments\)
+  CMakeLists.txt:3 \(include\)

+ 2 - 0
Tests/RunCMake/ExternalData/BadSeries3.cmake

@@ -0,0 +1,2 @@
+include(ExternalData)
+ExternalData_Expand_Arguments(Data args DATA{PairA.txt,PairB.txt,:})

+ 3 - 0
Tests/RunCMake/ExternalData/CMakeLists.txt

@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 2.8)
+project(${RunCMake_TEST} NONE)
+include(${RunCMake_TEST}.cmake)

+ 1 - 0
Tests/RunCMake/ExternalData/Data.txt.md5

@@ -0,0 +1 @@
+e8bb14af900b998b5a3df7e21dd07d58

+ 1 - 0
Tests/RunCMake/ExternalData/Directory1-result.txt

@@ -0,0 +1 @@
+1

+ 14 - 0
Tests/RunCMake/ExternalData/Directory1-stderr.txt

@@ -0,0 +1,14 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Data file referenced by argument
+
+    DATA{Directory1}
+
+  corresponds to source tree path
+
+    Directory1
+
+  that does not exist as a file \(with or without an extension\)!
+Call Stack \(most recent call first\):
+  .*
+  Directory1.cmake:3 \(ExternalData_Add_Test\)
+  CMakeLists.txt:3 \(include\)

+ 6 - 0
Tests/RunCMake/ExternalData/Directory1.cmake

@@ -0,0 +1,6 @@
+include(CTest)
+include(ExternalData)
+ExternalData_Add_Test(Data
+  NAME Test
+  COMMAND ${CMAKE_COMMAND} -E echo DATA{Directory1}
+  )

+ 0 - 0
Tests/RunCMake/ExternalData/Directory1/DirData1.txt


+ 1 - 0
Tests/RunCMake/ExternalData/Directory2-result.txt

@@ -0,0 +1 @@
+1

+ 10 - 0
Tests/RunCMake/ExternalData/Directory2-stderr.txt

@@ -0,0 +1,10 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Data file reference in argument
+
+    DATA{Directory2/}
+
+  may not end in a slash!
+Call Stack \(most recent call first\):
+  .*
+  Directory2.cmake:3 \(ExternalData_Add_Test\)
+  CMakeLists.txt:3 \(include\)

+ 6 - 0
Tests/RunCMake/ExternalData/Directory2.cmake

@@ -0,0 +1,6 @@
+include(CTest)
+include(ExternalData)
+ExternalData_Add_Test(Data
+  NAME Test
+  COMMAND ${CMAKE_COMMAND} -E echo DATA{Directory2/}
+  )

+ 1 - 0
Tests/RunCMake/ExternalData/Directory2.md5

@@ -0,0 +1 @@
+e8bb14af900b998b5a3df7e21dd07d58

+ 0 - 0
Tests/RunCMake/ExternalData/Directory2/DirData2.txt


+ 1 - 0
Tests/RunCMake/ExternalData/Directory3-result.txt

@@ -0,0 +1 @@
+1

+ 14 - 0
Tests/RunCMake/ExternalData/Directory3-stderr.txt

@@ -0,0 +1,14 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Data file referenced by argument
+
+    DATA{Directory3/\*}
+
+  corresponds to source tree path
+
+    Directory3/.
+
+  that does not exist as a file \(with or without an extension\)!
+Call Stack \(most recent call first\):
+  .*
+  Directory3.cmake:3 \(ExternalData_Add_Test\)
+  CMakeLists.txt:3 \(include\)

+ 6 - 0
Tests/RunCMake/ExternalData/Directory3.cmake

@@ -0,0 +1,6 @@
+include(CTest)
+include(ExternalData)
+ExternalData_Add_Test(Data
+  NAME Test
+  COMMAND ${CMAKE_COMMAND} -E echo DATA{Directory3/*}
+  )

+ 0 - 0
Tests/RunCMake/ExternalData/Directory3/DirData3.txt


+ 3 - 0
Tests/RunCMake/ExternalData/LinkContentMD5-stdout.txt

@@ -0,0 +1,3 @@
+-- Linked ToLink.txt.md5 to ExternalData MD5/c18ff9804c8deec9eaeb17063cda8b7b
+-- Raw data correctly transformed to content link!
+-- Staged content exists!

+ 22 - 0
Tests/RunCMake/ExternalData/LinkContentMD5.cmake

@@ -0,0 +1,22 @@
+include(ExternalData)
+set(ExternalData_LINK_CONTENT MD5)
+set(ExternalData_SOURCE_ROOT ${CMAKE_CURRENT_BINARY_DIR})
+set(ExternalData_BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/ExternalData)
+set(input ${CMAKE_CURRENT_BINARY_DIR}/ToLink.txt)
+set(output ${CMAKE_CURRENT_BINARY_DIR}/ExternalData/ToLink.txt)
+set(staged "${CMAKE_CURRENT_BINARY_DIR}/.ExternalData_MD5_c18ff9804c8deec9eaeb17063cda8b7b")
+file(REMOVE ${staged})
+file(REMOVE ${input}.md5)
+file(WRITE ${input} "To be transformed into a content link.")
+ExternalData_Expand_Arguments(Data args DATA{${input}})
+if("x${args}" STREQUAL "x${output}")
+  message(STATUS "Raw data correctly transformed to content link!")
+else()
+  message(FATAL_ERROR "Data reference transformed to:\n  ${args}\n"
+    "but we expected:\n  ${output}")
+endif()
+if(EXISTS "${staged}")
+  message(STATUS "Staged content exists!")
+else()
+  message(FATAL_ERROR "Staged content missing!")
+endif()

+ 1 - 0
Tests/RunCMake/ExternalData/MissingData-result.txt

@@ -0,0 +1 @@
+1

+ 14 - 0
Tests/RunCMake/ExternalData/MissingData-stderr.txt

@@ -0,0 +1,14 @@
+CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Data file referenced by argument
+
+    DATA{MissingData.txt}
+
+  corresponds to source tree path
+
+    MissingData.txt
+
+  that does not exist as a file \(with or without an extension\)!
+Call Stack \(most recent call first\):
+  .*
+  MissingData.cmake:2 \(ExternalData_Add_Test\)
+  CMakeLists.txt:3 \(include\)

部分文件因为文件数量过多而无法显示