Browse Source

Tests: use string(TIMESTAMP) instead of system and locale specific date/time

Nils Gladitz 12 years ago
parent
commit
0655d0946e
1 changed files with 31 additions and 132 deletions
  1. 31 132
      Tests/CTestTestStopTime/GetDate.cmake

+ 31 - 132
Tests/CTestTestStopTime/GetDate.cmake

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.4)
+cmake_minimum_required(VERSION 2.8.11)
 
 macro(GET_DATE)
   #
@@ -13,10 +13,7 @@ macro(GET_DATE)
   #   ${GD_PREFIX}PREFIX (if '${GD_PREFIX}' is not 'GD_'...!)
   #   ${GD_PREFIX}VERBOSE
   #
-  #   ${GD_PREFIX}CMD
-  #   ${GD_PREFIX}ARGS
   #   ${GD_PREFIX}OV
-  #   ${GD_PREFIX}RV
   #
   #   ${GD_PREFIX}REGEX
   #   ${GD_PREFIX}YEAR
@@ -25,8 +22,6 @@ macro(GET_DATE)
   #   ${GD_PREFIX}HOUR
   #   ${GD_PREFIX}MINUTE
   #   ${GD_PREFIX}SECOND
-  #   ${GD_PREFIX}FRACTIONAL_SECOND
-  #   ${GD_PREFIX}DAY_OF_WEEK
   #
   # Caller can then use these variables to construct names based on
   # date and time stamps...
@@ -51,31 +46,10 @@ macro(GET_DATE)
 
   # Retrieve the current date and time in the format:
   #
-  # Thu 01/12/2006  8:55:12.01
-  # dow mm/dd/YYYY HH:MM:SS.ssssss
+  # 01/12/2006  08:55:12
+  # mm/dd/YYYY HH:MM:SS
   #
-  # Use "echo %DATE% %TIME%" on Windows.
-  # Otherwise, try "date" as implemented on most Unix flavors.
-  #
-  if(WIN32)
-    #
-    # Use "cmd" shell with %DATE% and %TIME% support...
-    # May need adjustment in different locales or for custom date/time formats
-    # set in the Windows Control Panel.
-    #
-    set(${GD_PREFIX}CMD "cmd")
-    set(${GD_PREFIX}ARGS "/c echo %DATE% %TIME%")
-  else()
-    #
-    # Match the format returned by default in US English Windows:
-    #
-    set(${GD_PREFIX}CMD "date")
-    set(${GD_PREFIX}ARGS "\"+%a %m/%d/%Y %H:%M:%S.00\"")
-  endif()
-
-  exec_program("${${GD_PREFIX}CMD}" "." ARGS "${${GD_PREFIX}ARGS}"
-    OUTPUT_VARIABLE ${GD_PREFIX}OV RETURN_VALUE ${GD_PREFIX}RV
-    )
+  string(TIMESTAMP "${GD_PREFIX}OV" "%m/%d/%Y %H:%M:%S")
 
   if(${GD_PREFIX}VERBOSE)
     message(STATUS "")
@@ -87,114 +61,39 @@ macro(GET_DATE)
     endif()
     message(STATUS "${GD_PREFIX}VERBOSE='${${GD_PREFIX}VERBOSE}'")
     message(STATUS "")
-    message(STATUS "${GD_PREFIX}CMD='${${GD_PREFIX}CMD}'")
-    message(STATUS "${GD_PREFIX}ARGS='${${GD_PREFIX}ARGS}'")
     message(STATUS "${GD_PREFIX}OV='${${GD_PREFIX}OV}'")
-    message(STATUS "${GD_PREFIX}RV='${${GD_PREFIX}RV}'")
     message(STATUS "")
   endif()
 
-  if("${${GD_PREFIX}RV}" STREQUAL "0")
-    #
-    # Extract eight individual components by matching a regex with paren groupings.
-    # Use the replace functionality and \\1 thru \\8 to extract components.
-    #
-    set(${GD_PREFIX}REGEX "([^ ]+) +([^/]+)/([^/]+)/([^ ]+) +([^:]+):([^:]+):([^\\.]+)\\.(.*)")
-
-    string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\1" ${GD_PREFIX}DAY_OF_WEEK "${${GD_PREFIX}OV}")
-    string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\2" ${GD_PREFIX}MONTH "${${GD_PREFIX}OV}")
-    string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\3" ${GD_PREFIX}DAY "${${GD_PREFIX}OV}")
-    string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\4" ${GD_PREFIX}YEAR "${${GD_PREFIX}OV}")
-    string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\5" ${GD_PREFIX}HOUR "${${GD_PREFIX}OV}")
-    string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\6" ${GD_PREFIX}MINUTE "${${GD_PREFIX}OV}")
-    string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\7" ${GD_PREFIX}SECOND "${${GD_PREFIX}OV}")
-    string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\8" ${GD_PREFIX}FRACTIONAL_SECOND "${${GD_PREFIX}OV}")
-
-    #
-    # Verify that extracted components don't have anything obviously
-    # wrong with them... Emit warnings if something looks suspicious...
-    #
-
-    # Expecting a four digit year:
-    #
-    if(NOT "${${GD_PREFIX}YEAR}" MATCHES "^[0-9][0-9][0-9][0-9]$")
-      message(STATUS "WARNING: Extracted ${GD_PREFIX}YEAR='${${GD_PREFIX}YEAR}' is not a four digit number...")
-    endif()
-
-    # Expecting month to be <= 12:
-    #
-    if(${${GD_PREFIX}MONTH} GREATER 12)
-      message(STATUS "WARNING: Extracted ${GD_PREFIX}MONTH='${${GD_PREFIX}MONTH}' is greater than 12!")
-    endif()
-
-    # Expecting day to be <= 31:
-    #
-    if(${${GD_PREFIX}DAY} GREATER 31)
-      message(STATUS "WARNING: Extracted ${GD_PREFIX}DAY='${${GD_PREFIX}DAY}' is greater than 31!")
-    endif()
-
-    # Expecting hour to be <= 23:
-    #
-    if(${${GD_PREFIX}HOUR} GREATER 23)
-      message(STATUS "WARNING: Extracted ${GD_PREFIX}HOUR='${${GD_PREFIX}HOUR}' is greater than 23!")
-    endif()
-
-    # Expecting minute to be <= 59:
-    #
-    if(${${GD_PREFIX}MINUTE} GREATER 59)
-      message(STATUS "WARNING: Extracted ${GD_PREFIX}MINUTE='${${GD_PREFIX}MINUTE}' is greater than 59!")
-    endif()
-
-    # Expecting second to be <= 59:
-    #
-    if(${${GD_PREFIX}SECOND} GREATER 59)
-      message(STATUS "WARNING: Extracted ${GD_PREFIX}SECOND='${${GD_PREFIX}SECOND}' is greater than 59!")
-    endif()
+  #
+  # Extract six individual components by matching a regex with paren groupings.
+  # Use the replace functionality and \\1 thru \\6 to extract components.
+  #
+  set(${GD_PREFIX}REGEX "([^/]+)/([^/]+)/([^ ]+) +([^:]+):([^:]+):([^\\.]+)")
 
-    # If individual components are single digit,
-    # prepend a leading zero:
-    #
-    if("${${GD_PREFIX}YEAR}" MATCHES "^[0-9]$")
-      set(${GD_PREFIX}YEAR "0${${GD_PREFIX}YEAR}")
-    endif()
-    if("${${GD_PREFIX}MONTH}" MATCHES "^[0-9]$")
-      set(${GD_PREFIX}MONTH "0${${GD_PREFIX}MONTH}")
-    endif()
-    if("${${GD_PREFIX}DAY}" MATCHES "^[0-9]$")
-      set(${GD_PREFIX}DAY "0${${GD_PREFIX}DAY}")
-    endif()
-    if("${${GD_PREFIX}HOUR}" MATCHES "^[0-9]$")
-      set(${GD_PREFIX}HOUR "0${${GD_PREFIX}HOUR}")
-    endif()
-    if("${${GD_PREFIX}MINUTE}" MATCHES "^[0-9]$")
-      set(${GD_PREFIX}MINUTE "0${${GD_PREFIX}MINUTE}")
-    endif()
-    if("${${GD_PREFIX}SECOND}" MATCHES "^[0-9]$")
-      set(${GD_PREFIX}SECOND "0${${GD_PREFIX}SECOND}")
-    endif()
+  string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\1" ${GD_PREFIX}MONTH "${${GD_PREFIX}OV}")
+  string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\2" ${GD_PREFIX}DAY "${${GD_PREFIX}OV}")
+  string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\3" ${GD_PREFIX}YEAR "${${GD_PREFIX}OV}")
+  string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\4" ${GD_PREFIX}HOUR "${${GD_PREFIX}OV}")
+  string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\5" ${GD_PREFIX}MINUTE "${${GD_PREFIX}OV}")
+  string(REGEX REPLACE "${${GD_PREFIX}REGEX}" "\\6" ${GD_PREFIX}SECOND "${${GD_PREFIX}OV}")
 
-    if(${GD_PREFIX}VERBOSE)
-      message(STATUS "${GD_PREFIX}REGEX='${${GD_PREFIX}REGEX}'")
-      message(STATUS "${GD_PREFIX}YEAR='${${GD_PREFIX}YEAR}'")
-      message(STATUS "${GD_PREFIX}MONTH='${${GD_PREFIX}MONTH}'")
-      message(STATUS "${GD_PREFIX}DAY='${${GD_PREFIX}DAY}'")
-      message(STATUS "${GD_PREFIX}HOUR='${${GD_PREFIX}HOUR}'")
-      message(STATUS "${GD_PREFIX}MINUTE='${${GD_PREFIX}MINUTE}'")
-      message(STATUS "${GD_PREFIX}SECOND='${${GD_PREFIX}SECOND}'")
-      message(STATUS "${GD_PREFIX}FRACTIONAL_SECOND='${${GD_PREFIX}FRACTIONAL_SECOND}'")
-      message(STATUS "${GD_PREFIX}DAY_OF_WEEK='${${GD_PREFIX}DAY_OF_WEEK}'")
-      message(STATUS "")
-      message(STATUS "Counters that change...")
-      message(STATUS "")
-      message(STATUS "...very very quickly : ${${GD_PREFIX}YEAR}${${GD_PREFIX}MONTH}${${GD_PREFIX}DAY}${${GD_PREFIX}HOUR}${${GD_PREFIX}MINUTE}${${GD_PREFIX}SECOND}${${GD_PREFIX}FRACTIONAL_SECOND}")
-      message(STATUS "        every second : ${${GD_PREFIX}YEAR}${${GD_PREFIX}MONTH}${${GD_PREFIX}DAY}${${GD_PREFIX}HOUR}${${GD_PREFIX}MINUTE}${${GD_PREFIX}SECOND}")
-      message(STATUS "               daily : ${${GD_PREFIX}YEAR}${${GD_PREFIX}MONTH}${${GD_PREFIX}DAY}")
-      message(STATUS "             monthly : ${${GD_PREFIX}YEAR}${${GD_PREFIX}MONTH}")
-      message(STATUS "            annually : ${${GD_PREFIX}YEAR}")
-      message(STATUS "")
-    endif()
-  else()
-    message(SEND_ERROR "ERROR: macro(GET_DATE) failed. ${GD_PREFIX}CMD='${${GD_PREFIX}CMD}' ${GD_PREFIX}ARGS='${${GD_PREFIX}ARGS}' ${GD_PREFIX}OV='${${GD_PREFIX}OV}' ${GD_PREFIX}RV='${${GD_PREFIX}RV}'")
+  if(${GD_PREFIX}VERBOSE)
+    message(STATUS "${GD_PREFIX}REGEX='${${GD_PREFIX}REGEX}'")
+    message(STATUS "${GD_PREFIX}YEAR='${${GD_PREFIX}YEAR}'")
+    message(STATUS "${GD_PREFIX}MONTH='${${GD_PREFIX}MONTH}'")
+    message(STATUS "${GD_PREFIX}DAY='${${GD_PREFIX}DAY}'")
+    message(STATUS "${GD_PREFIX}HOUR='${${GD_PREFIX}HOUR}'")
+    message(STATUS "${GD_PREFIX}MINUTE='${${GD_PREFIX}MINUTE}'")
+    message(STATUS "${GD_PREFIX}SECOND='${${GD_PREFIX}SECOND}'")
+    message(STATUS "")
+    message(STATUS "Counters that change...")
+    message(STATUS "")
+    message(STATUS "        every second : ${${GD_PREFIX}YEAR}${${GD_PREFIX}MONTH}${${GD_PREFIX}DAY}${${GD_PREFIX}HOUR}${${GD_PREFIX}MINUTE}${${GD_PREFIX}SECOND}")
+    message(STATUS "               daily : ${${GD_PREFIX}YEAR}${${GD_PREFIX}MONTH}${${GD_PREFIX}DAY}")
+    message(STATUS "             monthly : ${${GD_PREFIX}YEAR}${${GD_PREFIX}MONTH}")
+    message(STATUS "            annually : ${${GD_PREFIX}YEAR}")
+    message(STATUS "")
   endif()
 
   if(${GD_PREFIX}VERBOSE)