Browse Source

Increase Coverage.

Sebastien Barre 24 năm trước cách đây
mục cha
commit
6f3570656c

+ 1 - 1
Tests/Complex/CMakeLists.txt

@@ -46,7 +46,7 @@ INCLUDE_DIRECTORIES(BEFORE
   ${Complex_BINARY_DIR}
 )
 
-INCLUDE_REGULAR_EXPRESSION("^(cmTest|file|sharedFile).*$")
+INCLUDE_REGULAR_EXPRESSION("^(cmTest|file|sharedFile).*$" ".*")
 
 LINK_DIRECTORIES(
   ${Complex_BINARY_DIR}/Library

+ 5 - 1
Tests/Complex/Executable/CMakeLists.txt

@@ -17,7 +17,11 @@ FIND_LIBRARY(CMAKE_LIB
              ${Complex_BINARY_DIR}/../../Source/MinSizeRel
              ${Complex_BINARY_DIR}/../../Source/RelWithDebInfo)
 
-TARGET_LINK_LIBRARIES(complex ${CMAKE_LIB})
+# Specify the same one for debug/optimized to increase coverage
+TARGET_LINK_LIBRARIES(complex 
+                      ${CMAKE_LIB}
+                      debug ${CMAKE_LIB}
+                      optimized ${CMAKE_LIB})
 
 #
 # Output the files required by 'complex' to a file.

+ 72 - 0
Tests/Complex/Executable/complex.cxx

@@ -157,6 +157,30 @@ int main()
   // ----------------------------------------------------------------------
   // Test various IF/ELSE combinations
 
+#ifdef SHOULD_NOT_BE_DEFINED_NOT
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_NOT is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_NOT
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_NOT is defined.");
+#endif
+  
+#ifdef SHOULD_NOT_BE_DEFINED_NOT2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_NOT2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_NOT2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_NOT2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_AND
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND is defined.");
 #else
@@ -169,6 +193,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_AND is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_AND2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_AND2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_AND2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_AND2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_OR
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR is defined.");
 #else
@@ -181,6 +217,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_OR is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_OR2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_OR2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_OR2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_OR2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_MATCHES
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES is defined.");
 #else
@@ -193,6 +241,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_MATCHES is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_MATCHES2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_MATCHES2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_MATCHES2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_MATCHES2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_COMMAND
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND is defined.");
 #else
@@ -205,6 +265,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_COMMAND is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_COMMAND2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_COMMAND2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_COMMAND2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_COMMAND2 is defined.");
+#endif
+  
   // ----------------------------------------------------------------------
   // Test FOREACH
 

+ 7 - 2
Tests/Complex/Library/CMakeLists.txt

@@ -8,10 +8,15 @@ ADD_EXECUTABLE(create_file create_file.cxx)
 
 #
 # Create static library
-# SOURCE_FILES_REMOVE is used for Coverage
+# SOURCE_FILES_REMOVE is used for Coverage. empty.h is included for coverage
 #
 AUX_SOURCE_DIRECTORY(ExtraSources LibrarySources)
-SOURCE_FILES(LibrarySources file2 create_file.cxx GENERATED nonexisting_file)
+SOURCE_FILES(LibrarySources 
+  file2 
+  empty 
+  create_file.cxx 
+  GENERATED 
+  nonexisting_file)
 SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file) 
 ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 

+ 1 - 0
Tests/Complex/Library/empty.h

@@ -0,0 +1 @@
+int file2();

+ 37 - 0
Tests/Complex/VarTests.cmake

@@ -2,6 +2,7 @@
 # Test SET
 #
 SET (ZERO_VAR 0)
+SET (ZERO_VAR2 0)
 
 IF(ZERO_VAR)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED)
@@ -22,30 +23,66 @@ VARIABLE_REQUIRES(ONE_VAR
 #
 # Test various IF/ELSE combinations
 #
+IF(NOT ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_NOT)
+ELSE(NOT ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_NOT)
+ENDIF(NOT ZERO_VAR)
+
+IF(NOT ONE_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_NOT2)
+ELSE(NOT ONE_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_NOT2)
+ENDIF(NOT ONE_VAR)
+
 IF(ONE_VAR AND ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_AND)
 ELSE(ONE_VAR AND ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_AND)
 ENDIF(ONE_VAR AND ONE_VAR2)
 
+IF(ONE_VAR AND ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_AND2)
+ELSE(ONE_VAR AND ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_AND2)
+ENDIF(ONE_VAR AND ZERO_VAR)
+
 IF(ZERO_VAR OR ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_OR)
 ELSE(ZERO_VAR OR ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_OR)
 ENDIF(ZERO_VAR OR ONE_VAR2)
 
+IF(ZERO_VAR OR ZERO_VAR2)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_OR2)
+ELSE(ZERO_VAR OR ZERO_VAR2)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_OR2)
+ENDIF(ZERO_VAR OR ZERO_VAR2)
+
 IF(STRING_VAR MATCHES "^CMake")
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_MATCHES)
 ELSE(STRING_VAR MATCHES "^CMake")
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_MATCHES)
 ENDIF(STRING_VAR MATCHES "^CMake")
 
+IF(STRING_VAR MATCHES "^foo")
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_MATCHES2)
+ELSE(STRING_VAR MATCHES "^foo")
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_MATCHES2)
+ENDIF(STRING_VAR MATCHES "^foo")
+
 IF(COMMAND "IF")
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_COMMAND)
 ELSE(COMMAND "IF")
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_COMMAND)
 ENDIF(COMMAND "IF")
 
+IF(COMMAND "ROQUEFORT")
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_COMMAND2)
+ELSE(COMMAND "ROQUEFORT")
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_COMMAND2)
+ENDIF(COMMAND "ROQUEFORT")
+
 #
 # Test FOREACH
 #

+ 1 - 1
Tests/ComplexOneConfig/CMakeLists.txt

@@ -46,7 +46,7 @@ INCLUDE_DIRECTORIES(BEFORE
   ${Complex_BINARY_DIR}
 )
 
-INCLUDE_REGULAR_EXPRESSION("^(cmTest|file|sharedFile).*$")
+INCLUDE_REGULAR_EXPRESSION("^(cmTest|file|sharedFile).*$" ".*")
 
 LINK_DIRECTORIES(
   ${Complex_BINARY_DIR}/Library

+ 5 - 1
Tests/ComplexOneConfig/Executable/CMakeLists.txt

@@ -17,7 +17,11 @@ FIND_LIBRARY(CMAKE_LIB
              ${Complex_BINARY_DIR}/../../Source/MinSizeRel
              ${Complex_BINARY_DIR}/../../Source/RelWithDebInfo)
 
-TARGET_LINK_LIBRARIES(complex ${CMAKE_LIB})
+# Specify the same one for debug/optimized to increase coverage
+TARGET_LINK_LIBRARIES(complex 
+                      ${CMAKE_LIB}
+                      debug ${CMAKE_LIB}
+                      optimized ${CMAKE_LIB})
 
 #
 # Output the files required by 'complex' to a file.

+ 72 - 0
Tests/ComplexOneConfig/Executable/complex.cxx

@@ -157,6 +157,30 @@ int main()
   // ----------------------------------------------------------------------
   // Test various IF/ELSE combinations
 
+#ifdef SHOULD_NOT_BE_DEFINED_NOT
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_NOT is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_NOT
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_NOT is defined.");
+#endif
+  
+#ifdef SHOULD_NOT_BE_DEFINED_NOT2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_NOT2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_NOT2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_NOT2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_AND
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND is defined.");
 #else
@@ -169,6 +193,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_AND is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_AND2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_AND2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_AND2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_AND2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_OR
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR is defined.");
 #else
@@ -181,6 +217,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_OR is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_OR2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_OR2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_OR2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_OR2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_MATCHES
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES is defined.");
 #else
@@ -193,6 +241,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_MATCHES is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_MATCHES2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_MATCHES2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_MATCHES2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_MATCHES2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_COMMAND
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND is defined.");
 #else
@@ -205,6 +265,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_COMMAND is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_COMMAND2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_COMMAND2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_COMMAND2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_COMMAND2 is defined.");
+#endif
+  
   // ----------------------------------------------------------------------
   // Test FOREACH
 

+ 7 - 2
Tests/ComplexOneConfig/Library/CMakeLists.txt

@@ -8,10 +8,15 @@ ADD_EXECUTABLE(create_file create_file.cxx)
 
 #
 # Create static library
-# SOURCE_FILES_REMOVE is used for Coverage
+# SOURCE_FILES_REMOVE is used for Coverage. empty.h is included for coverage
 #
 AUX_SOURCE_DIRECTORY(ExtraSources LibrarySources)
-SOURCE_FILES(LibrarySources file2 create_file.cxx GENERATED nonexisting_file)
+SOURCE_FILES(LibrarySources 
+  file2 
+  empty 
+  create_file.cxx 
+  GENERATED 
+  nonexisting_file)
 SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file) 
 ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 

+ 1 - 0
Tests/ComplexOneConfig/Library/empty.h

@@ -0,0 +1 @@
+int file2();

+ 37 - 0
Tests/ComplexOneConfig/VarTests.cmake

@@ -2,6 +2,7 @@
 # Test SET
 #
 SET (ZERO_VAR 0)
+SET (ZERO_VAR2 0)
 
 IF(ZERO_VAR)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED)
@@ -22,30 +23,66 @@ VARIABLE_REQUIRES(ONE_VAR
 #
 # Test various IF/ELSE combinations
 #
+IF(NOT ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_NOT)
+ELSE(NOT ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_NOT)
+ENDIF(NOT ZERO_VAR)
+
+IF(NOT ONE_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_NOT2)
+ELSE(NOT ONE_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_NOT2)
+ENDIF(NOT ONE_VAR)
+
 IF(ONE_VAR AND ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_AND)
 ELSE(ONE_VAR AND ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_AND)
 ENDIF(ONE_VAR AND ONE_VAR2)
 
+IF(ONE_VAR AND ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_AND2)
+ELSE(ONE_VAR AND ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_AND2)
+ENDIF(ONE_VAR AND ZERO_VAR)
+
 IF(ZERO_VAR OR ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_OR)
 ELSE(ZERO_VAR OR ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_OR)
 ENDIF(ZERO_VAR OR ONE_VAR2)
 
+IF(ZERO_VAR OR ZERO_VAR2)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_OR2)
+ELSE(ZERO_VAR OR ZERO_VAR2)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_OR2)
+ENDIF(ZERO_VAR OR ZERO_VAR2)
+
 IF(STRING_VAR MATCHES "^CMake")
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_MATCHES)
 ELSE(STRING_VAR MATCHES "^CMake")
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_MATCHES)
 ENDIF(STRING_VAR MATCHES "^CMake")
 
+IF(STRING_VAR MATCHES "^foo")
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_MATCHES2)
+ELSE(STRING_VAR MATCHES "^foo")
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_MATCHES2)
+ENDIF(STRING_VAR MATCHES "^foo")
+
 IF(COMMAND "IF")
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_COMMAND)
 ELSE(COMMAND "IF")
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_COMMAND)
 ENDIF(COMMAND "IF")
 
+IF(COMMAND "ROQUEFORT")
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_COMMAND2)
+ELSE(COMMAND "ROQUEFORT")
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_COMMAND2)
+ENDIF(COMMAND "ROQUEFORT")
+
 #
 # Test FOREACH
 #

+ 1 - 1
Tests/ComplexRelativePaths/CMakeLists.txt

@@ -46,7 +46,7 @@ INCLUDE_DIRECTORIES(BEFORE
   ${Complex_BINARY_DIR}
 )
 
-INCLUDE_REGULAR_EXPRESSION("^(cmTest|file|sharedFile).*$")
+INCLUDE_REGULAR_EXPRESSION("^(cmTest|file|sharedFile).*$" ".*")
 
 LINK_DIRECTORIES(
   ${Complex_BINARY_DIR}/Library

+ 5 - 1
Tests/ComplexRelativePaths/Executable/CMakeLists.txt

@@ -17,7 +17,11 @@ FIND_LIBRARY(CMAKE_LIB
              ${Complex_BINARY_DIR}/../../Source/MinSizeRel
              ${Complex_BINARY_DIR}/../../Source/RelWithDebInfo)
 
-TARGET_LINK_LIBRARIES(complex ${CMAKE_LIB})
+# Specify the same one for debug/optimized to increase coverage
+TARGET_LINK_LIBRARIES(complex 
+                      ${CMAKE_LIB}
+                      debug ${CMAKE_LIB}
+                      optimized ${CMAKE_LIB})
 
 #
 # Output the files required by 'complex' to a file.

+ 72 - 0
Tests/ComplexRelativePaths/Executable/complex.cxx

@@ -157,6 +157,30 @@ int main()
   // ----------------------------------------------------------------------
   // Test various IF/ELSE combinations
 
+#ifdef SHOULD_NOT_BE_DEFINED_NOT
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_NOT is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_NOT
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_NOT is defined.");
+#endif
+  
+#ifdef SHOULD_NOT_BE_DEFINED_NOT2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_NOT2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_NOT2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_NOT2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_AND
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND is defined.");
 #else
@@ -169,6 +193,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_AND is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_AND2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_AND2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_AND2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_AND2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_OR
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR is defined.");
 #else
@@ -181,6 +217,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_OR is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_OR2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_OR2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_OR2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_OR2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_MATCHES
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES is defined.");
 #else
@@ -193,6 +241,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_MATCHES is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_MATCHES2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_MATCHES2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_MATCHES2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_MATCHES2 is defined.");
+#endif
+  
 #ifdef SHOULD_NOT_BE_DEFINED_COMMAND
   cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND is defined.");
 #else
@@ -205,6 +265,18 @@ int main()
   cmPassed("SHOULD_BE_DEFINED_COMMAND is defined.");
 #endif
   
+#ifdef SHOULD_NOT_BE_DEFINED_COMMAND2
+  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND2 is defined.");
+#else
+  cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND2 is not defined.");
+#endif
+  
+#ifndef SHOULD_BE_DEFINED_COMMAND2
+  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_COMMAND2 is not defined.\n");
+#else
+  cmPassed("SHOULD_BE_DEFINED_COMMAND2 is defined.");
+#endif
+  
   // ----------------------------------------------------------------------
   // Test FOREACH
 

+ 7 - 2
Tests/ComplexRelativePaths/Library/CMakeLists.txt

@@ -8,10 +8,15 @@ ADD_EXECUTABLE(create_file create_file.cxx)
 
 #
 # Create static library
-# SOURCE_FILES_REMOVE is used for Coverage
+# SOURCE_FILES_REMOVE is used for Coverage. empty.h is included for coverage
 #
 AUX_SOURCE_DIRECTORY(ExtraSources LibrarySources)
-SOURCE_FILES(LibrarySources file2 create_file.cxx GENERATED nonexisting_file)
+SOURCE_FILES(LibrarySources 
+  file2 
+  empty 
+  create_file.cxx 
+  GENERATED 
+  nonexisting_file)
 SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file) 
 ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 

+ 1 - 0
Tests/ComplexRelativePaths/Library/empty.h

@@ -0,0 +1 @@
+int file2();

+ 37 - 0
Tests/ComplexRelativePaths/VarTests.cmake

@@ -2,6 +2,7 @@
 # Test SET
 #
 SET (ZERO_VAR 0)
+SET (ZERO_VAR2 0)
 
 IF(ZERO_VAR)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED)
@@ -22,30 +23,66 @@ VARIABLE_REQUIRES(ONE_VAR
 #
 # Test various IF/ELSE combinations
 #
+IF(NOT ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_NOT)
+ELSE(NOT ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_NOT)
+ENDIF(NOT ZERO_VAR)
+
+IF(NOT ONE_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_NOT2)
+ELSE(NOT ONE_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_NOT2)
+ENDIF(NOT ONE_VAR)
+
 IF(ONE_VAR AND ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_AND)
 ELSE(ONE_VAR AND ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_AND)
 ENDIF(ONE_VAR AND ONE_VAR2)
 
+IF(ONE_VAR AND ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_AND2)
+ELSE(ONE_VAR AND ZERO_VAR)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_AND2)
+ENDIF(ONE_VAR AND ZERO_VAR)
+
 IF(ZERO_VAR OR ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_OR)
 ELSE(ZERO_VAR OR ONE_VAR2)
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_OR)
 ENDIF(ZERO_VAR OR ONE_VAR2)
 
+IF(ZERO_VAR OR ZERO_VAR2)
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_OR2)
+ELSE(ZERO_VAR OR ZERO_VAR2)
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_OR2)
+ENDIF(ZERO_VAR OR ZERO_VAR2)
+
 IF(STRING_VAR MATCHES "^CMake")
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_MATCHES)
 ELSE(STRING_VAR MATCHES "^CMake")
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_MATCHES)
 ENDIF(STRING_VAR MATCHES "^CMake")
 
+IF(STRING_VAR MATCHES "^foo")
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_MATCHES2)
+ELSE(STRING_VAR MATCHES "^foo")
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_MATCHES2)
+ENDIF(STRING_VAR MATCHES "^foo")
+
 IF(COMMAND "IF")
   ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_COMMAND)
 ELSE(COMMAND "IF")
   ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_COMMAND)
 ENDIF(COMMAND "IF")
 
+IF(COMMAND "ROQUEFORT")
+  ADD_DEFINITIONS(-DSHOULD_NOT_BE_DEFINED_COMMAND2)
+ELSE(COMMAND "ROQUEFORT")
+  ADD_DEFINITIONS(-DSHOULD_BE_DEFINED_COMMAND2)
+ENDIF(COMMAND "ROQUEFORT")
+
 #
 # Test FOREACH
 #

+ 4 - 1
Tests/Testing/CMakeLists.txt

@@ -34,7 +34,10 @@ FIND_LIBRARY(CMAKE_LIB
              ${Testing_BINARY_DIR}/../../Source/MinSizeRel
              ${Testing_BINARY_DIR}/../../Source/RelWithDebInfo)
 
-LINK_LIBRARIES(${CMAKE_LIB})
+# Specify the same one for debug/optimized to increase coverage
+LINK_LIBRARIES(${CMAKE_LIB}
+               debug ${CMAKE_LIB}
+               optimized ${CMAKE_LIB})
 
 #
 # Include Dart

+ 2 - 0
Tests/Wrapping/vtkExcluded.h

@@ -0,0 +1,2 @@
+// A comment
+// Another comment

+ 2 - 0
Tests/Wrapping/vtkIncluded.h

@@ -0,0 +1,2 @@
+// A comment
+// Another comment (force coverage)