Ver Fonte

complex: Simplify test for single-character exe name

Run the test executable as a custom command instead of depending on
cmSystemTools::RunSingleCommand.
Brad King há 14 anos atrás
pai
commit
49d6dd67f1

+ 3 - 1
Tests/Complex/Executable/A.cxx

@@ -1,7 +1,9 @@
 // Include code from a header that should not be compiled separately.
 #include "A.hh"
 
+#include <stdio.h>
 int main()
 {
-  return A();
+  printf("#define A_VALUE %d\n", A());
+  return 0;
 }

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

@@ -55,8 +55,10 @@ SET_SOURCE_FILES_PROPERTIES(complex_nobuild.cxx PROPERTIES
 SET_SOURCE_FILES_PROPERTIES(complex_nobuild.c PROPERTIES
   HEADER_FILE_ONLY 1)
 
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
 ADD_EXECUTABLE(A A.cxx A.hh A.h A.txt)
-ADD_EXECUTABLE(complex complex testcflags.c )
+ADD_CUSTOM_COMMAND(OUTPUT Aout.h COMMAND A > Aout.h VERBATIM)
+ADD_EXECUTABLE(complex complex testcflags.c Aout.h)
 #  Sub1/NameConflictTest.c Sub2/NameConflictTest.c)
 ADD_EXECUTABLE(complex.file complex.file.cxx complex_nobuild.cxx
   complex_nobuild.c)

+ 7 - 35
Tests/Complex/Executable/complex.cxx

@@ -3,6 +3,7 @@
 #include "cmTestGeneratedHeader.h"
 #include "cmVersion.h"
 #include "ExtraSources/file1.h"
+#include "Aout.h"
 #include "file2.h"
 #include "sharedFile.h"
 extern "C" {
@@ -148,42 +149,7 @@ extern "C" int NameConflictTest2();
 
 int main()
 {
-  std::string exe = BINARY_DIR;
-  exe += "/bin/";
-#ifdef  CMAKE_INTDIR
-  exe += CMAKE_INTDIR;
-  exe += "/";
-#endif
-
 #ifdef COMPLEX_TEST_CMAKELIB  
-  // Test a single character executable to test a: in makefiles
-  exe += "A";
-  exe += cmSystemTools::GetExecutableExtension();
-  int ret;
-  std::string errorMessage; 
-  exe = cmSystemTools::ConvertToRunCommandPath(exe.c_str());
-  if(cmSystemTools::RunSingleCommand(exe.c_str(), 0, &ret))
-    {
-    if(ret != 10)
-      {
-      errorMessage += exe;
-      errorMessage += " did not return 10";
-      }
-    }
-  else
-    {
-    errorMessage += exe;
-    errorMessage += ": failed to run.";
-    }
-  if(errorMessage.size())
-    {
-    cmFailed(errorMessage.c_str());
-    }
-  else
-    {
-    cmPassed("run Single Character executable A returned 10 as expected.");
-    }
-
     // ----------------------------------------------------------------------
   // Test cmSystemTools::UpperCase
   std::string str = "abc";
@@ -1064,6 +1030,12 @@ int main()
     }
 #endif
 
+#if defined(A_VALUE) && A_VALUE == 10
+  cmPassed("Single-character executable A worked.");
+#else
+  cmFailed("Single-character executable A failed.");
+#endif
+
   // ----------------------------------------------------------------------
   // Summary
 

+ 3 - 1
Tests/ComplexOneConfig/Executable/A.cxx

@@ -1,7 +1,9 @@
 // Include code from a header that should not be compiled separately.
 #include "A.hh"
 
+#include <stdio.h>
 int main()
 {
-  return A();
+  printf("#define A_VALUE %d\n", A());
+  return 0;
 }

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

@@ -55,8 +55,10 @@ SET_SOURCE_FILES_PROPERTIES(complex_nobuild.cxx PROPERTIES
 SET_SOURCE_FILES_PROPERTIES(complex_nobuild.c PROPERTIES
   HEADER_FILE_ONLY 1)
 
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
 ADD_EXECUTABLE(A A.cxx A.hh A.h A.txt)
-ADD_EXECUTABLE(complex complex testcflags.c )
+ADD_CUSTOM_COMMAND(OUTPUT Aout.h COMMAND A > Aout.h VERBATIM)
+ADD_EXECUTABLE(complex complex testcflags.c Aout.h)
 #  Sub1/NameConflictTest.c Sub2/NameConflictTest.c)
 ADD_EXECUTABLE(complex.file complex.file.cxx complex_nobuild.cxx
   complex_nobuild.c)

+ 7 - 35
Tests/ComplexOneConfig/Executable/complex.cxx

@@ -3,6 +3,7 @@
 #include "cmTestGeneratedHeader.h"
 #include "cmVersion.h"
 #include "ExtraSources/file1.h"
+#include "Aout.h"
 #include "file2.h"
 #include "sharedFile.h"
 extern "C" {
@@ -148,42 +149,7 @@ extern "C" int NameConflictTest2();
 
 int main()
 {
-  std::string exe = BINARY_DIR;
-  exe += "/bin/";
-#ifdef  CMAKE_INTDIR
-  exe += CMAKE_INTDIR;
-  exe += "/";
-#endif
-
 #ifdef COMPLEX_TEST_CMAKELIB  
-  // Test a single character executable to test a: in makefiles
-  exe += "A";
-  exe += cmSystemTools::GetExecutableExtension();
-  int ret;
-  std::string errorMessage; 
-  exe = cmSystemTools::ConvertToRunCommandPath(exe.c_str());
-  if(cmSystemTools::RunSingleCommand(exe.c_str(), 0, &ret))
-    {
-    if(ret != 10)
-      {
-      errorMessage += exe;
-      errorMessage += " did not return 10";
-      }
-    }
-  else
-    {
-    errorMessage += exe;
-    errorMessage += ": failed to run.";
-    }
-  if(errorMessage.size())
-    {
-    cmFailed(errorMessage.c_str());
-    }
-  else
-    {
-    cmPassed("run Single Character executable A returned 10 as expected.");
-    }
-
     // ----------------------------------------------------------------------
   // Test cmSystemTools::UpperCase
   std::string str = "abc";
@@ -1064,6 +1030,12 @@ int main()
     }
 #endif
 
+#if defined(A_VALUE) && A_VALUE == 10
+  cmPassed("Single-character executable A worked.");
+#else
+  cmFailed("Single-character executable A failed.");
+#endif
+
   // ----------------------------------------------------------------------
   // Summary