cmake_minimum_required (VERSION 2.6)
project(CommandLineTest)

get_filename_component(CMAKE_BIN_DIR ${CMAKE_COMMAND} PATH)
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()
endmacro()

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\"")

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()
endmacro()
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()
endmacro()

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 "***************************")
  message(STATUS "PreLoad.cmake works fine.")
  message(STATUS "***************************")
else()
  message("***************************")
  message(FATAL_ERROR "PreLoad.cmake does not work.")
endif()

if(DEFINED ENV{TEST_ENVIRONMENT_VARIABLE_NOTSET})
  message(SEND_ERROR "Environment variable definition test broken!")
endif()

set(ENV{TEST_ENVIRONMENT_VARIABLE} "Environment variable set")
if("$ENV{TEST_ENVIRONMENT_VARIABLE}" STREQUAL "Environment variable set")
  message(STATUS "Environment variable set to: $ENV{TEST_ENVIRONMENT_VARIABLE}")
  if(NOT DEFINED ENV{TEST_ENVIRONMENT_VARIABLE})
    message(SEND_ERROR "Environment variable definition test failed!")
  endif()
else()
  message(SEND_ERROR "Environment variable setting is broken")
endif()
