[Cmake-commits] [cmake-commits] hoffman committed CMakeLists.txt 1.17.2.2 1.17.2.3 ELFTest.cmake.in NONE 1.1.2.2 FileTest.cmake.in 1.3 1.3.2.1 FileTestScript.cmake NONE 1.3.2.2 IfTest.cmake.in NONE 1.1.2.2

cmake-commits at cmake.org cmake-commits at cmake.org
Wed Oct 28 12:16:04 EDT 2009


Update of /cvsroot/CMake/CMake/Tests/CMakeTests
In directory public:/mounts/ram/cvs-serv18987/Tests/CMakeTests

Modified Files:
      Tag: CMake-2-8
	CMakeLists.txt FileTest.cmake.in 
Added Files:
      Tag: CMake-2-8
	ELFTest.cmake.in FileTestScript.cmake IfTest.cmake.in 
Log Message:
RC 4 merge


--- NEW FILE: FileTestScript.cmake ---
message(STATUS "testname='${testname}'")

if(testname STREQUAL empty) # fail
  file()

elseif(testname STREQUAL bogus) # fail
  file(BOGUS ffff)

elseif(testname STREQUAL different_not_enough_args) # fail
  file(DIFFERENT ffff)

elseif(testname STREQUAL download_not_enough_args) # fail
  file(DOWNLOAD ffff)

elseif(testname STREQUAL read_not_enough_args) # fail
  file(READ ffff)

elseif(testname STREQUAL rpath_check_not_enough_args) # fail
  file(RPATH_CHECK ffff)

elseif(testname STREQUAL rpath_remove_not_enough_args) # fail
  file(RPATH_REMOVE ffff)

elseif(testname STREQUAL strings_not_enough_args) # fail
  file(STRINGS ffff)

elseif(testname STREQUAL to_native_path_not_enough_args) # fail
  file(TO_NATIVE_PATH ffff)

elseif(testname STREQUAL read_with_offset) # pass
  file(READ ${CMAKE_CURRENT_LIST_FILE} v OFFSET 42 LIMIT 30)
  message("v='${v}'")

elseif(testname STREQUAL strings_bad_length_minimum) # fail
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v LENGTH_MINIMUM bogus)

elseif(testname STREQUAL strings_bad_length_maximum) # fail
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v LENGTH_MAXIMUM bogus)

elseif(testname STREQUAL strings_bad_limit_count) # fail
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v LIMIT_COUNT bogus)

elseif(testname STREQUAL strings_bad_limit_input) # fail
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v LIMIT_INPUT bogus)

elseif(testname STREQUAL strings_bad_limit_output) # fail
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v LIMIT_OUTPUT bogus)

elseif(testname STREQUAL strings_bad_regex) # fail
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v REGEX "(")

elseif(testname STREQUAL strings_unknown_arg) # fail
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v BOGUS)

elseif(testname STREQUAL strings_bad_filename) # fail
  file(STRINGS ffff v LIMIT_COUNT 10)

elseif(testname STREQUAL strings_use_limit_count) # pass
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v LIMIT_COUNT 10)
  message("v='${v}'")

elseif(testname STREQUAL strings_use_no_hex_conversion) # pass
  file(STRINGS ${CMAKE_CURRENT_LIST_FILE} v NO_HEX_CONVERSION)
  message("v='${v}'")

elseif(testname STREQUAL glob_recurse_follow_symlinks_no_expression) # fail
  file(GLOB_RECURSE v FOLLOW_SYMLINKS)

elseif(testname STREQUAL glob_recurse_relative_no_directory) # fail
  file(GLOB_RECURSE v RELATIVE)

elseif(testname STREQUAL glob_recurse_relative_no_expression) # fail
  file(GLOB_RECURSE v RELATIVE dddd)

elseif(testname STREQUAL glob_non_full_path) # pass
  file(GLOB_RECURSE v ffff*.*)
  message("v='${v}'")

elseif(testname STREQUAL make_directory_non_full_path) # pass
  file(MAKE_DIRECTORY FileTestScriptDDDD)
  if(NOT EXISTS FileTestScriptDDDD)
    message(FATAL_ERROR "error: non-full-path MAKE_DIRECTORY failed")
  endif()
  file(REMOVE_RECURSE FileTestScriptDDDD)
  if(EXISTS FileTestScriptDDDD)
    message(FATAL_ERROR "error: non-full-path REMOVE_RECURSE failed")
  endif()

elseif(testname STREQUAL different_no_variable) # fail
  file(DIFFERENT FILES)

elseif(testname STREQUAL different_no_files) # fail
  file(DIFFERENT v FILES)

elseif(testname STREQUAL different_unknown_arg) # fail
  file(DIFFERENT v FILES ffffLHS ffffRHS BOGUS)

elseif(testname STREQUAL different_different) # pass
  file(DIFFERENT v FILES ffffLHS ffffRHS)
  message("v='${v}'")

elseif(testname STREQUAL different_same) # pass
  file(DIFFERENT v FILES
    ${CMAKE_CURRENT_LIST_FILE} ${CMAKE_CURRENT_LIST_FILE})
  message("v='${v}'")

elseif(testname STREQUAL rpath_change_unknown_arg) # fail
  file(RPATH_CHANGE BOGUS)

elseif(testname STREQUAL rpath_change_bad_file) # fail
  file(RPATH_CHANGE FILE)

elseif(testname STREQUAL rpath_change_bad_old_rpath) # fail
  file(RPATH_CHANGE FILE ffff OLD_RPATH)

elseif(testname STREQUAL rpath_change_bad_new_rpath) # fail
  file(RPATH_CHANGE FILE ffff OLD_RPATH rrrr NEW_RPATH)

elseif(testname STREQUAL rpath_change_file_does_not_exist) # fail
  file(RPATH_CHANGE FILE ffff OLD_RPATH rrrr NEW_RPATH RRRR)

elseif(testname STREQUAL rpath_change_file_is_not_executable) # fail
  file(RPATH_CHANGE FILE ${CMAKE_CURRENT_LIST_FILE}
    OLD_RPATH rrrr NEW_RPATH RRRR)

elseif(testname STREQUAL rpath_remove_unknown_arg) # fail
  file(RPATH_REMOVE BOGUS)

elseif(testname STREQUAL rpath_remove_bad_file) # fail
  file(RPATH_REMOVE FILE)

elseif(testname STREQUAL rpath_remove_file_does_not_exist) # fail
  file(RPATH_REMOVE FILE ffff)

#elseif(testname STREQUAL rpath_remove_file_is_not_executable) # fail
#  file(RPATH_REMOVE FILE ${CMAKE_CURRENT_LIST_FILE})

elseif(testname STREQUAL rpath_check_unknown_arg) # fail
  file(RPATH_CHECK BOGUS)

elseif(testname STREQUAL rpath_check_bad_file) # fail
  file(RPATH_CHECK FILE)

elseif(testname STREQUAL rpath_check_bad_rpath) # fail
  file(RPATH_CHECK FILE ffff RPATH)

elseif(testname STREQUAL rpath_check_file_does_not_exist) # pass
  file(RPATH_CHECK FILE ffff RPATH rrrr)

elseif(testname STREQUAL rpath_check_file_is_not_executable) # pass
  file(WRITE ffff_rpath_check "")

  if(NOT EXISTS ffff_rpath_check)
    message(FATAL_ERROR "error: non-full-path WRITE failed")
  endif()

  file(RPATH_CHECK FILE ffff_rpath_check RPATH rrrr)
    # careful: if the file does not have the given RPATH, it is deleted...

  if(EXISTS ffff_rpath_check)
    message(FATAL_ERROR "error: non-full-path RPATH_CHECK failed")
  endif()

elseif(testname STREQUAL relative_path_wrong_number_of_args) # fail
  file(RELATIVE_PATH v dir)

elseif(testname STREQUAL relative_path_non_full_path_dir) # fail
  file(RELATIVE_PATH v dir file)

elseif(testname STREQUAL relative_path_non_full_path_file) # fail
  file(RELATIVE_PATH v /dir file)

elseif(testname STREQUAL rename_wrong_number_of_args) # fail
  file(RENAME ffff)

elseif(testname STREQUAL rename_input_file_does_not_exist) # fail
  file(RENAME ffff FFFFGGGG)

elseif(testname STREQUAL to_native_path) # pass
  file(TO_NATIVE_PATH /a/b/c\;/d/e/f:/g/h/i v)
  message("v='${v}'")

elseif(testname STREQUAL download_wrong_number_of_args) # fail
  file(DOWNLOAD zzzz://bogus/ffff)

elseif(testname STREQUAL download_file_with_no_path) # fail
  file(DOWNLOAD zzzz://bogus/ffff ffff)

elseif(testname STREQUAL download_missing_time) # fail
  file(DOWNLOAD zzzz://bogus/ffff ./ffff TIMEOUT)

elseif(testname STREQUAL download_missing_log_var) # fail
  file(DOWNLOAD zzzz://bogus/ffff ./ffff TIMEOUT 2 LOG)

elseif(testname STREQUAL download_missing_status_var) # fail
  file(DOWNLOAD zzzz://bogus/ffff ./ffff TIMEOUT 2 LOG l STATUS)

elseif(testname STREQUAL download_with_bogus_protocol) # pass
  file(DOWNLOAD zzzz://bogus/ffff ./ffff TIMEOUT 2 LOG l STATUS s)
  file(REMOVE ./ffff)
  message("l='${l}'")
  message("s='${s}'")

else() # fail
  message(FATAL_ERROR "testname='${testname}' - error: no such test in '${CMAKE_CURRENT_LIST_FILE}'")

endif()

--- NEW FILE: IfTest.cmake.in ---
# Prepare variable definitions.
set(VAR_UNDEFINED)
set(VAR_PATH /some/path/to/a/file.txt)
set(FALSE_NAMES OFF NO FALSE N FOO-NOTFOUND IGNORE Off No False Ignore off n no false ignore)
set(TRUE_NAMES ON YES TRUE Y On Yes True on yes true y)
foreach(_arg "" 0 1 2 ${TRUE_NAMES} ${FALSE_NAMES})
  set(VAR_${_arg} "${_arg}")
endforeach()

macro(test_vars _old)
  # Variables set to false or not set.
  foreach(_var "" 0 ${FALSE_NAMES} UNDEFINED)
    if(VAR_${_var})
      message(FATAL_ERROR "${_old}if(VAR_${_var}) is true!")
    else()
      message(STATUS "${_old}if(VAR_${_var}) is false")
    endif()

    if(NOT VAR_${_var})
      message(STATUS "${_old}if(NOT VAR_${_var}) is true")
    else()
      message(FATAL_ERROR "${_old}if(NOT VAR_${_var}) is false!")
    endif()
  endforeach()

  # Variables set to true.
  foreach(_var 1 2 ${TRUE_NAMES} PATH)
    if(VAR_${_var})
      message(STATUS "${_old}if(VAR_${_var}) is true")
    else()
      message(FATAL_ERROR "${_old}if(VAR_${_var}) is false!")
    endif()

    if(NOT VAR_${_var})
      message(FATAL_ERROR "${_old}if(NOT VAR_${_var}) is true!")
    else()
      message(STATUS "${_old}if(NOT VAR_${_var}) is false")
    endif()
  endforeach()
endmacro()

#-----------------------------------------------------------------------------
# Test the OLD behavior of CMP0012.
cmake_policy(SET CMP0012 OLD)

# False constants not recognized (still false).
foreach(_false "" ${FALSE_NAMES})
  if("${_false}")
    message(FATAL_ERROR "OLD if(${_false}) is true!")
  else()
    message(STATUS "OLD if(${_false}) is false")
  endif()

  if(NOT "${_false}")
    message(STATUS "OLD if(NOT ${_false}) is true")
  else()
    message(FATAL_ERROR "OLD if(NOT ${_false}) is false!")
  endif()
endforeach()

# True constants not recognized.
foreach(_false ${TRUE_NAMES})
  if(${_false})
    message(FATAL_ERROR "OLD if(${_false}) is true!")
  else()
    message(STATUS "OLD if(${_false}) is false")
  endif()

  if(NOT ${_false})
    message(STATUS "OLD if(NOT ${_false}) is true")
  else()
    message(FATAL_ERROR "OLD if(NOT ${_false}) is false!")
  endif()
endforeach()

# Numbers not recognized properly.
foreach(_num 2 -2 2.0 -2.0 2x -2x)
  if(${_num})
    message(FATAL_ERROR "OLD if(${_num}) is true!")
  else()
    message(STATUS "OLD if(${_num}) is false")
  endif()

  if(NOT ${_num})
    message(FATAL_ERROR "OLD if(NOT ${_num}) is true!")
  else()
    message(STATUS "OLD if(NOT ${_num}) is false")
  endif()
endforeach()

test_vars("OLD ")

#-----------------------------------------------------------------------------

# Test the NEW behavior of CMP0012.
cmake_policy(SET CMP0012 NEW)

# Test false constants.
foreach(_false "" 0 ${FALSE_NAMES})
  if("${_false}")
    message(FATAL_ERROR "if(${_false}) is true!")
  else()
    message(STATUS "if(${_false}) is false")
  endif()

  if(NOT "${_false}")
    message(STATUS "if(NOT ${_false}) is true")
  else()
    message(FATAL_ERROR "if(NOT ${_false}) is false!")
  endif()
endforeach()

# Test true constants.
foreach(_true 1 ${TRUE_NAMES})
  if(${_true})
    message(STATUS "if(${_true}) is true")
  else()
    message(FATAL_ERROR "if(${_true}) is false!")
  endif()

  if(NOT ${_true})
    message(FATAL_ERROR "if(NOT ${_true}) is true!")
  else()
    message(STATUS "if(NOT ${_true}) is false")
  endif()
endforeach()

# Numbers recognized properly.
foreach(_num 2 -2 2.0 -2.0)
  if(${_num})
    message(STATUS "if(${_num}) is true")
  else()
    message(FATAL_ERROR "if(${_num}) is false!")
  endif()

  if(NOT ${_num})
    message(FATAL_ERROR "if(NOT ${_num}) is true!")
  else()
    message(STATUS "if(NOT ${_num}) is false")
  endif()
endforeach()

# Bad numbers not recognized.
foreach(_bad 2x -2x)
  if(${_bad})
    message(FATAL_ERROR "if(${_bad}) is true!")
  else()
    message(STATUS "if(${_bad}) is false")
  endif()

  if(NOT ${_bad})
    message(STATUS "if(NOT ${_bad}) is true")
  else()
    message(FATAL_ERROR "if(NOT ${_bad}) is false!")
  endif()
endforeach()

test_vars("")

--- NEW FILE: ELFTest.cmake.in ---
set(names
  elf32lsb.bin
  elf32msb.bin
  elf64lsb.bin
  elf64msb.bin
  )

# Prepare binaries on which to operate.
set(in "@CMAKE_CURRENT_SOURCE_DIR@/ELF")
set(out "@CMAKE_CURRENT_BINARY_DIR@/ELF-Out")
file(REMOVE_RECURSE "${out}")
file(MAKE_DIRECTORY "${out}")
foreach(f ${names})
  file(COPY ${in}/${f} DESTINATION ${out})
  list(APPEND files "${out}/${f}")
endforeach()

foreach(f ${files})
  # Check for the initial RPATH.
  file(RPATH_CHECK FILE "${f}" RPATH "/sample/rpath")
  if(NOT EXISTS "${f}")
    message(FATAL_ERROR "RPATH_CHECK removed ${f}")
  endif()

  # Change the RPATH.
  file(RPATH_CHANGE FILE "${f}"
    OLD_RPATH "/sample/rpath"
    NEW_RPATH "/rpath/sample")
  set(rpath)
  file(STRINGS "${f}" rpath REGEX "/rpath/sample" LIMIT_COUNT 1)
  if(NOT rpath)
    message(FATAL_ERROR "RPATH not changed in ${f}")
  endif()

  # Remove the RPATH.
  file(RPATH_REMOVE FILE "${f}")
  set(rpath)
  file(STRINGS "${f}" rpath REGEX "/rpath/sample" LIMIT_COUNT 1)
  if(rpath)
    message(FATAL_ERROR "RPATH not removed from ${f}")
  endif()

  # Check again...this should remove the file.
  file(RPATH_CHECK FILE "${f}" RPATH "/sample/rpath")
  if(EXISTS "${f}")
    message(FATAL_ERROR "RPATH_CHECK did not remove ${f}")
  endif()
endforeach()

Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Tests/CMakeTests/CMakeLists.txt,v
retrieving revision 1.17.2.2
retrieving revision 1.17.2.3
diff -C 2 -d -r1.17.2.2 -r1.17.2.3
*** CMakeLists.txt	9 Oct 2009 20:11:43 -0000	1.17.2.2
--- CMakeLists.txt	28 Oct 2009 16:15:52 -0000	1.17.2.3
***************
*** 23,30 ****
--- 23,35 ----
  AddCMakeTest(ImplicitLinkInfo "")
  AddCMakeTest(ModuleNotices "")
+ AddCMakeTest(If "")
  AddCMakeTest(String "")
  AddCMakeTest(Math "")
  AddCMakeTest(CMakeMinimumRequired "")
  
+ if(HAVE_ELF_H)
+   AddCMakeTest(ELF "")
+ endif()
+ 
  SET(EndStuff_PreArgs
    "-Ddir:STRING=${CMAKE_CURRENT_BINARY_DIR}/EndStuffTest"

Index: FileTest.cmake.in
===================================================================
RCS file: /cvsroot/CMake/CMake/Tests/CMakeTests/FileTest.cmake.in,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -C 2 -d -r1.3 -r1.3.2.1
*** FileTest.cmake.in	16 Sep 2009 19:09:10 -0000	1.3
--- FileTest.cmake.in	28 Oct 2009 16:15:53 -0000	1.3.2.1
***************
*** 24,25 ****
--- 24,44 ----
    Copy-NoFile
    )
+ 
+ # Also execute each test listed in FileTestScript.cmake:
+ #
+ set(scriptname "@CMAKE_CURRENT_SOURCE_DIR@/FileTestScript.cmake")
+ set(number_of_tests_expected 56)
+ 
+ include("@CMAKE_CURRENT_SOURCE_DIR@/ExecuteScriptTests.cmake")
+ execute_all_script_tests(${scriptname} number_of_tests_executed)
+ 
+ # And verify that number_of_tests_executed is at least as many as we know
+ # about as of this writing...
+ #
+ message(STATUS "scriptname='${scriptname}'")
+ message(STATUS "number_of_tests_executed='${number_of_tests_executed}'")
+ message(STATUS "number_of_tests_expected='${number_of_tests_expected}'")
+ 
+ if(number_of_tests_executed LESS number_of_tests_expected)
+   message(FATAL_ERROR "error: some test cases were skipped")
+ endif()



More information about the Cmake-commits mailing list