فهرست منبع

Add test CMakeTestBadCommandLines. Also add --graphviz arg to cmake invoked during the CPackComponents test. The purpose of each is to increase coverage of cmake.cxx.

David Cole 16 سال پیش
والد
کامیت
ae1e9900fa
2فایلهای تغییر یافته به همراه95 افزوده شده و 0 حذف شده
  1. 16 0
      Tests/CMakeLists.txt
  2. 79 0
      Tests/CMakeTestBadCommandLines/RunCMake.cmake

+ 16 - 0
Tests/CMakeLists.txt

@@ -463,6 +463,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
         -DCPACK_BINARY_DEB:BOOL=${CPACK_BINARY_DEB}
         -DCPACK_BINARY_RPM:BOOL=${CPACK_BINARY_RPM}
         ${CPackComponents_EXTRA_OPTIONS}
+        --graphviz=CPackComponents.dot
       --test-command ${CMAKE_CMAKE_COMMAND}
         "-DCPackComponents_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/CPackComponents"
         -P "${CMake_SOURCE_DIR}/Tests/CPackComponents/VerifyResult.cmake")
@@ -535,6 +536,21 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
       "${CMake_BINARY_DIR}/Tests/CMakeTestAllGenerators")
   ENDIF(CTEST_RUN_CMakeTestAllGenerators)
 
+  if(NOT DEFINED CTEST_RUN_CMakeTestBadCommandLines)
+    set(CTEST_RUN_CMakeTestBadCommandLines ON)
+  endif(NOT DEFINED CTEST_RUN_CMakeTestBadCommandLines)
+
+  IF(CTEST_RUN_CMakeTestBadCommandLines)
+    ADD_TEST(CMakeTestBadCommandLines ${CMAKE_CMAKE_COMMAND}
+        -D dir=${CMake_BINARY_DIR}/Tests/CMakeTestBadCommandLines
+        -D gen=${CMAKE_TEST_GENERATOR}
+        -D CMake_SOURCE_DIR=${CMake_SOURCE_DIR}
+        -P ${CMake_SOURCE_DIR}/Tests/CMakeTestBadCommandLines/RunCMake.cmake
+      )
+    LIST(APPEND TEST_BUILD_DIRS
+      "${CMake_BINARY_DIR}/Tests/CMakeTestBadCommandLines")
+  ENDIF(CTEST_RUN_CMakeTestBadCommandLines)
+
   if(NOT DEFINED CTEST_RUN_CMakeTestMultipleConfigures)
     set(CTEST_RUN_CMakeTestMultipleConfigures ON)
   endif(NOT DEFINED CTEST_RUN_CMakeTestMultipleConfigures)

+ 79 - 0
Tests/CMakeTestBadCommandLines/RunCMake.cmake

@@ -0,0 +1,79 @@
+if(NOT DEFINED CMake_SOURCE_DIR)
+  message(FATAL_ERROR "CMake_SOURCE_DIR not defined")
+endif()
+
+if(NOT DEFINED dir)
+  message(FATAL_ERROR "dir not defined")
+endif()
+
+if(NOT DEFINED gen)
+  message(FATAL_ERROR "gen not defined")
+endif()
+
+message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
+
+# First setup a source tree to run CMake on.
+#
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory
+  ${CMake_SOURCE_DIR}/Tests/CTestTest/SmallAndFast
+  ${dir}/Source
+)
+
+execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory
+  ${dir}/Build
+  )
+
+function(RunCMakeWithArgs)
+  message(STATUS "info: running cmake with ARGN='${ARGN}'")
+
+  execute_process(COMMAND ${CMAKE_COMMAND} ${ARGN}
+    RESULT_VARIABLE result
+    OUTPUT_VARIABLE stdout
+    ERROR_VARIABLE stderr
+    WORKING_DIRECTORY ${dir}/Build
+    )
+
+  message(STATUS "result='${result}'")
+  message(STATUS "stdout='${stdout}'")
+  message(STATUS "stderr='${stderr}'")
+  message(STATUS "")
+endfunction()
+
+# Run cmake once with no errors to get a good build tree:
+#
+RunCMakeWithArgs(-G ${gen} ../Source)
+
+# Run cmake with args that produce some sort of problem to cover the error
+# cases in cmake.cxx...
+#
+# (These are not good examples of cmake command lines. Do not copy and
+# paste them elsewhere and expect them to work... See the cmake
+# documentation or other real examples of usage instead.)
+#
+RunCMakeWithArgs()
+RunCMakeWithArgs(-C)
+RunCMakeWithArgs(-C nosuchcachefile.txt)
+RunCMakeWithArgs(--check-stamp-file nostampfile)
+RunCMakeWithArgs(--check-stamp-list nostamplist)
+RunCMakeWithArgs(nosuchsubdir/CMakeCache.txt)
+RunCMakeWithArgs(nosuchsubdir/CMakeLists.txt)
+RunCMakeWithArgs(-D)
+RunCMakeWithArgs(--debug-output .)
+RunCMakeWithArgs(--debug-trycompile .)
+RunCMakeWithArgs(-E)
+RunCMakeWithArgs(-E create_symlink)
+RunCMakeWithArgs(-E echo_append)
+RunCMakeWithArgs(-E rename)
+RunCMakeWithArgs(-E touch_nocreate)
+RunCMakeWithArgs(-G)
+RunCMakeWithArgs(--graphviz= ../Source)
+RunCMakeWithArgs(--graphviz=g.dot .)
+RunCMakeWithArgs(-P)
+RunCMakeWithArgs(-P nosuchscriptfile.cmake)
+RunCMakeWithArgs(--trace .)
+RunCMakeWithArgs(-U)
+RunCMakeWithArgs(-U nosuchvariable .)
+RunCMakeWithArgs(-V)
+RunCMakeWithArgs(-V .)
+RunCMakeWithArgs(-Wno-dev .)
+RunCMakeWithArgs(-Wdev .)