/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2000-2009 Kitware, Inc., Insight Software Consortium Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ #ifndef cmAddTestCommand_h #define cmAddTestCommand_h #include "cmCommand.h" /** \class cmAddTestCommand * \brief Add a test to the lists of tests to run. * * cmAddTestCommand adds a test to the list of tests to run . */ class cmAddTestCommand : public cmCommand { public: /** * This is a virtual constructor for the command. */ virtual cmCommand* Clone() { return new cmAddTestCommand; } /** * This is called when the command is first encountered in * the CMakeLists.txt file. */ virtual bool InitialPass(std::vector const& args, cmExecutionStatus &status); /** * The name of the command as specified in CMakeList.txt. */ virtual const char* GetName() { return "add_test";} /** * Succinct documentation. */ virtual const char* GetTerseDocumentation() { return "Add a test to the project with the specified arguments."; } /** * More documentation. */ virtual const char* GetFullDocumentation() { return " add_test(testname Exename arg1 arg2 ... )\n" "If the ENABLE_TESTING command has been run, this command adds a " "test target to the current directory. If ENABLE_TESTING has not " "been run, this command does nothing. " "The tests are run by the testing subsystem by executing Exename " "with the specified arguments. Exename can be either an executable " "built by this project or an arbitrary executable on the " "system (like tclsh). The test will be run with the current working " "directory set to the CMakeList.txt files corresponding directory " "in the binary tree.\n" "\n" " add_test(NAME [CONFIGURATIONS [Debug|Release|...]]\n" " [WORKING_DIRECTORY dir]\n" " COMMAND [arg1 [arg2 ...]])\n" "If COMMAND specifies an executable target (created by " "add_executable) it will automatically be replaced by the location " "of the executable created at build time. " "If a CONFIGURATIONS option is given then the test will be executed " "only when testing under one of the named configurations. " "If a WORKING_DIRECTORY option is given then the test will be executed " "in the given directory." "\n" "Arguments after COMMAND may use \"generator expressions\" with the " "syntax \"$<...>\". " "These expressions are evaluted during build system generation and " "produce information specific to each generated build configuration. " "Valid expressions are:\n" " $ = configuration name\n" " $ = main file (.exe, .so.1.2, .a)\n" " $ = file used to link (.a, .lib, .so)\n" " $ = file with soname (.so.3)\n" "where \"tgt\" is the name of a target. " "Target file expressions produce a full path, but _DIR and _NAME " "versions can produce the directory and file name components:\n" " $/$\n" " $/$\n" " $/$\n" "Example usage:\n" " add_test(NAME mytest\n" " COMMAND testDriver --config $\n" " --exe $)\n" "This creates a test \"mytest\" whose command runs a testDriver " "tool passing the configuration name and the full path to the " "executable file produced by target \"myexe\"." ; } cmTypeMacro(cmAddTestCommand, cmCommand); private: bool HandleNameMode(std::vector const& args); }; #endif