Browse Source

Change logic of ctest subdirs command to allow for absolute paths. Also added test coverage for passing absolute paths to subdirs.

Zach Mullen 16 years ago
parent
commit
c9c0ee4056

+ 9 - 6
Source/CTest/cmCTestTestHandler.cxx

@@ -82,17 +82,20 @@ bool cmCTestSubdirCommand
   for ( it = args.begin(); it != args.end(); ++ it )
     {
     cmSystemTools::ChangeDirectory(cwd.c_str());
-    std::string fname = cwd;
-    fname += "/";
-    fname += *it;
+    std::string fname;
 
-    //sanity check on relative path; if not, try absolute path
-    if ( !cmSystemTools::FileIsDirectory(fname.c_str()))
+    if(cmSystemTools::FileIsFullPath(it->c_str()))
       {
       fname = *it;
       }
+    else
+      {
+      fname = cwd;
+      fname += "/";
+      fname += *it;
+      }
 
-    if ( !cmSystemTools::FileExists(fname.c_str()) )
+    if ( !cmSystemTools::FileIsDirectory(fname.c_str()) )
       {
       // No subdirectory? So what...
       continue;

+ 3 - 0
Tests/CMakeLists.txt

@@ -1210,6 +1210,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
     -S "${CMake_BINARY_DIR}/Tests/CTestTestSubdir/test.cmake" -V
     --output-log "${CMake_BINARY_DIR}/Tests/CTestTestSubdir/testOutput.log"
     )
+  #make sure all 3 subdirs were added
+  SET_TESTS_PROPERTIES(CTestTestSubdir PROPERTIES
+    PASS_REGULAR_EXPRESSION "0 tests failed out of 3")
     
   CONFIGURE_FILE(
     "${CMake_SOURCE_DIR}/Tests/CTestTestTimeout/test.cmake.in"

+ 2 - 0
Tests/CTestTestSubdir/CMakeLists.txt

@@ -9,3 +9,5 @@ GET_FILENAME_COMPONENT(CTEST_COMMAND "${CMAKE_COMMAND}" PATH)
 SET(CTEST_COMMAND "${CTEST_COMMAND}/ctest")
 
 ADD_SUBDIRECTORY(subdir)
+SUBDIRS(subdir2)
+SUBDIRS("${CTestTestSubdir_SOURCE_DIR}/subdir3")

+ 1 - 1
Tests/CTestTestSubdir/subdir/CMakeLists.txt

@@ -1,2 +1,2 @@
 ADD_EXECUTABLE (main main.c)
-ADD_TEST (TestMain main)
+ADD_TEST (TestMain1 main)

+ 2 - 0
Tests/CTestTestSubdir/subdir2/CMakeLists.txt

@@ -0,0 +1,2 @@
+ADD_EXECUTABLE (main2 main.c)
+ADD_TEST (TestMain2 main2)

+ 4 - 0
Tests/CTestTestSubdir/subdir2/main.c

@@ -0,0 +1,4 @@
+int main(void)
+{
+  return 0;
+}

+ 2 - 0
Tests/CTestTestSubdir/subdir3/CMakeLists.txt

@@ -0,0 +1,2 @@
+ADD_EXECUTABLE (main3 main.c)
+ADD_TEST (TestMain3 main3)

+ 4 - 0
Tests/CTestTestSubdir/subdir3/main.c

@@ -0,0 +1,4 @@
+int main(void)
+{
+  return 0;
+}