BUG: fix CommandLine test problems with spaces and testing for the return value

This commit is contained in:
Bill Hoffman 2005-02-16 13:15:25 -05:00
parent e689bfa201
commit ee0db4aeb4
3 changed files with 67 additions and 32 deletions

View File

@ -778,16 +778,28 @@ int cmake::CMakeCommand(std::vector<std::string>& args)
else if (args[1] == "chdir" && args.size() >= 4)
{
std::string directory = args[2];
unsigned pos = 3;
if(!cmSystemTools::FileExists(directory.c_str()))
{
directory += " ";
directory += args[3];
if(!cmSystemTools::FileExists(directory.c_str()))
{
cmSystemTools::Error("Directory does not exist for chdir command (try1): ", args[2].c_str());
cmSystemTools::Error("Directory does not exist for chdir command (try2): ", directory.c_str());
}
pos = 4;
}
std::string command = "\"";
command += args[3];
command += args[pos];
command += "\"";
for (std::string::size_type cc = 4; cc < args.size(); cc ++)
for (std::string::size_type cc = pos+1; cc < args.size(); cc ++)
{
command += " \"";
command += args[cc];
command += "\"";
}
int retval = 0;
int timeout = 0;
if ( cmSystemTools::RunSingleCommand(command.c_str(), 0, &retval,

View File

@ -184,7 +184,9 @@ int do_cmake(int ac, char** av)
{
wiz = true;
}
else if (strcmp(av[i], "-E") == 0)
// if command has already been set, then
// do not eat the -E
else if (!command && strcmp(av[i], "-E") == 0)
{
command = true;
}

View File

@ -2,24 +2,33 @@ PROJECT(CommandLineTest)
GET_FILENAME_COMPONENT(CMAKE_BIN_DIR ${CMAKE_COMMAND} PATH)
FIND_PROGRAM(DUMP_DOC_EXE NAMES DumpDocumentation PATHS ${CMAKE_BIN_DIR})
MACRO(EXEC_CMAKE_COMMAND CMAKE_ARGS)
EXEC_PROGRAM("${CMAKE_COMMAND}" ARGS "${CMAKE_ARGS}" RETURN_VALUE RET)
IF(${RET})
MESSAGE(SEND_ERROR "CMake command failed with arguments \"${CMAKE_ARGS}\"")
ENDIF(${RET})
ENDMACRO(EXEC_CMAKE_COMMAND)
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E chdir ${CMAKE_CURRENT_SOURCE_DIR} \"${CMAKE_COMMAND} -E echo \\\"Hello World\\\"\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E time \"${CMAKE_COMMAND} -N -L ${CommandLineTest_SOURCE_DIR}\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E time \"${CMAKE_COMMAND} -N -LA ${CommandLineTest_SOURCE_DIR}\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E time \"${CMAKE_COMMAND} -N -LH ${CommandLineTest_SOURCE_DIR}\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E time \"${CMAKE_COMMAND} -N -LAH ${CommandLineTest_SOURCE_DIR}\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--help")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--help-command-list")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--help ADD_EXECUTABLE")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--help-command ADD_EXECUTABLE")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--help-full \"${CMAKE_CURRENT_BINARY_DIR}/cmake.txt\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--help-man \"${CMAKE_CURRENT_BINARY_DIR}/cmake.man\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--help-html \"${CMAKE_CURRENT_BINARY_DIR}/cmake.html\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--copyright \"${CMAKE_CURRENT_BINARY_DIR}/Copyright.txt\"")
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "--version \"${CMAKE_CURRENT_BINARY_DIR}/version.txt\"")
EXEC_CMAKE_COMMAND("-E chdir ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_COMMAND} -E echo \"Hello World\"")
EXEC_CMAKE_COMMAND("-E time \"${CMAKE_COMMAND} -N -L ${CommandLineTest_SOURCE_DIR}\"")
EXEC_CMAKE_COMMAND("-E time \"${CMAKE_COMMAND} -N -LA ${CommandLineTest_SOURCE_DIR}\"")
EXEC_CMAKE_COMMAND("-E time \"${CMAKE_COMMAND} -N -LH ${CommandLineTest_SOURCE_DIR}\"")
EXEC_CMAKE_COMMAND("-E time \"${CMAKE_COMMAND} -N -LAH ${CommandLineTest_SOURCE_DIR}\"")
EXEC_CMAKE_COMMAND("--help")
EXEC_CMAKE_COMMAND("--help-command-list")
EXEC_CMAKE_COMMAND("--help ADD_EXECUTABLE")
EXEC_CMAKE_COMMAND("--help-command ADD_EXECUTABLE")
EXEC_CMAKE_COMMAND("--help-full \"${CMAKE_CURRENT_BINARY_DIR}/cmake.txt\"")
EXEC_CMAKE_COMMAND("--help-man \"${CMAKE_CURRENT_BINARY_DIR}/cmake.man\"")
EXEC_CMAKE_COMMAND("--help-html \"${CMAKE_CURRENT_BINARY_DIR}/cmake.html\"")
EXEC_CMAKE_COMMAND("--copyright \"${CMAKE_CURRENT_BINARY_DIR}/Copyright.txt\"")
EXEC_CMAKE_COMMAND("--version \"${CMAKE_CURRENT_BINARY_DIR}/version.txt\"")
IF(DUMP_DOC_EXE)
EXEC_PROGRAM(${DUMP_DOC_EXE} ARGS "--all-for-coverage \"${CMAKE_CURRENT_BINARY_DIR}/all_for_coverage.txt\"")
EXEC_PROGRAM(${DUMP_DOC_EXE} ARGS "--all-for-coverage \"${CMAKE_CURRENT_BINARY_DIR}/all_for_coverage.txt\"" RETURN_VALUE RET)
IF(${RET})
MESSAGE(SEND_ERROR "DumpDoc command failed ")
ENDIF(${RET})
ELSE(DUMP_DOC_EXE)
MESSAGE(SEND_ERROR "Cannot find DumpDocumentation executable.")
ENDIF(DUMP_DOC_EXE)
@ -28,20 +37,32 @@ ADD_EXECUTABLE(CommandLineTest CommandLineTest.cxx)
GET_FILENAME_COMPONENT(CMAKE_COMMAND_PATH "${CMAKE_COMMAND}" PATH)
SET(CTEST_COMMAND "${CMAKE_COMMAND_PATH}/ctest")
MACRO(EXEC_CTEST_COMMAND CMAKE_ARGS)
EXEC_PROGRAM("${CTEST_COMMAND}" ARGS "${CMAKE_ARGS}" RETURN_VALUE RET)
IF(${RET})
MESSAGE(SEND_ERROR "CTest command failed with arguments \"${CMAKE_ARGS}\"")
ENDIF(${RET})
ENDMACRO(EXEC_CTEST_COMMAND)
MACRO(EXEC_CTEST_COMMAND_WITH_DIR DIR CMAKE_ARGS)
EXEC_PROGRAM("${CTEST_COMMAND}" "${DIR}" ARGS "${CMAKE_ARGS}" RETURN_VALUE RET)
IF(${RET})
MESSAGE(SEND_ERROR "CTest command failed with arguments \"${CMAKE_ARGS}\"")
ENDIF(${RET})
ENDMACRO(EXEC_CTEST_COMMAND_WITH_DIR)
EXEC_PROGRAM(${CTEST_COMMAND} "${CMAKE_CURRENT_BINARY_DIR}/../.." ARGS "-N")
EXEC_PROGRAM(${CTEST_COMMAND} "${CMAKE_CURRENT_BINARY_DIR}/../.." ARGS "-R complex -N")
EXEC_PROGRAM(${CTEST_COMMAND} "${CMAKE_CURRENT_BINARY_DIR}/../.." ARGS "-E Simple -N")
EXEC_PROGRAM(${CTEST_COMMAND} "${CMAKE_CURRENT_BINARY_DIR}/../.." ARGS "-E Simple -N")
EXEC_PROGRAM(${CTEST_COMMAND} "${CMAKE_CURRENT_BINARY_DIR}/../.." ARGS "-N -I -10")
EXEC_PROGRAM(${CTEST_COMMAND} "${CMAKE_CURRENT_BINARY_DIR}/../.." ARGS "-N -I 10-")
EXEC_PROGRAM(${CTEST_COMMAND} "${CMAKE_CURRENT_BINARY_DIR}/../.." ARGS "-N -I 3,4")
EXEC_PROGRAM(${CTEST_COMMAND} ARGS "--help")
EXEC_PROGRAM(${CTEST_COMMAND} ARGS "--copyright")
EXEC_PROGRAM(${CTEST_COMMAND} ARGS "--help-full \"${CMAKE_CURRENT_BINARY_DIR}/ctest.txt\"")
EXEC_PROGRAM(${CTEST_COMMAND} ARGS "--help-man \"${CMAKE_CURRENT_BINARY_DIR}/ctest.man\"")
EXEC_PROGRAM(${CTEST_COMMAND} ARGS "--help-html \"${CMAKE_CURRENT_BINARY_DIR}/ctest.html\"")
EXEC_PROGRAM(${CTEST_COMMAND} ARGS "--version")
EXEC_CTEST_COMMAND_WITH_DIR("${CMAKE_CURRENT_BINARY_DIR}/../.." "-N")
EXEC_CTEST_COMMAND_WITH_DIR("${CMAKE_CURRENT_BINARY_DIR}/../.." "-R complex -N")
EXEC_CTEST_COMMAND_WITH_DIR("${CMAKE_CURRENT_BINARY_DIR}/../.." "-E Simple -N")
EXEC_CTEST_COMMAND_WITH_DIR("${CMAKE_CURRENT_BINARY_DIR}/../.." "-E Simple -N")
EXEC_CTEST_COMMAND_WITH_DIR("${CMAKE_CURRENT_BINARY_DIR}/../.." "-N -I -10")
EXEC_CTEST_COMMAND_WITH_DIR("${CMAKE_CURRENT_BINARY_DIR}/../.." "-N -I 10-")
EXEC_CTEST_COMMAND_WITH_DIR("${CMAKE_CURRENT_BINARY_DIR}/../.." "-N -I 3,4")
EXEC_CTEST_COMMAND("--help")
EXEC_CTEST_COMMAND("--copyright")
EXEC_CTEST_COMMAND("--help-full \"${CMAKE_CURRENT_BINARY_DIR}/ctest.txt\"")
EXEC_CTEST_COMMAND("--help-man \"${CMAKE_CURRENT_BINARY_DIR}/ctest.man\"")
EXEC_CTEST_COMMAND("--help-html \"${CMAKE_CURRENT_BINARY_DIR}/ctest.html\"")
EXEC_CTEST_COMMAND("--version")
IF(THIS_SHOULD_BE_SET)
MESSAGE(STATUS "***************************")