Skip to content

Commit

Permalink
complex: Simplify test for single-character exe name
Browse files Browse the repository at this point in the history
Run the test executable as a custom command instead of depending on
cmSystemTools::RunSingleCommand.
  • Loading branch information
bradking committed Dec 23, 2011
1 parent 76ac88b commit 49d6dd6
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 74 deletions.
4 changes: 3 additions & 1 deletion 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;
}
4 changes: 3 additions & 1 deletion Tests/Complex/Executable/CMakeLists.txt
Expand Up @@ -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)
Expand Down
42 changes: 7 additions & 35 deletions Tests/Complex/Executable/complex.cxx
Expand Up @@ -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" {
Expand Down Expand Up @@ -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";
Expand Down Expand Up @@ -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

Expand Down
4 changes: 3 additions & 1 deletion 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;
}
4 changes: 3 additions & 1 deletion Tests/ComplexOneConfig/Executable/CMakeLists.txt
Expand Up @@ -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)
Expand Down
42 changes: 7 additions & 35 deletions Tests/ComplexOneConfig/Executable/complex.cxx
Expand Up @@ -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" {
Expand Down Expand Up @@ -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";
Expand Down Expand Up @@ -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

Expand Down

0 comments on commit 49d6dd6

Please sign in to comment.