summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2003-08-06 19:03:56 (GMT)
committerBrad King <brad.king@kitware.com>2003-08-06 19:03:56 (GMT)
commit1471a1a6f1d0386ac5997792b8795396a7ad8720 (patch)
tree06610deb7d823151ba03e6fc440b7d5499be8524
parentb78888fe3889c2477b0d0ce93d6ab14bcdd25000 (diff)
downloadCMake-1471a1a6f1d0386ac5997792b8795396a7ad8720.zip
CMake-1471a1a6f1d0386ac5997792b8795396a7ad8720.tar.gz
CMake-1471a1a6f1d0386ac5997792b8795396a7ad8720.tar.bz2
ENH: Added documentation for ctest.
-rw-r--r--Source/ctest.cxx103
-rw-r--r--Utilities/CMakeLists.txt20
2 files changed, 102 insertions, 21 deletions
diff --git a/Source/ctest.cxx b/Source/ctest.cxx
index f0756ad..3236c1d 100644
--- a/Source/ctest.cxx
+++ b/Source/ctest.cxx
@@ -17,10 +17,92 @@
#include "cmCTest.h"
#include "cmSystemTools.h"
+// Need these for documentation support.
+#include "cmake.h"
+#include "cmDocumentation.h"
+
+//----------------------------------------------------------------------------
+static const cmDocumentationEntry cmDocumentationName[] =
+{
+ {0,
+ " ctest - Testing driver provided by CMake.", 0},
+ {0,0,0}
+};
+
+//----------------------------------------------------------------------------
+static const cmDocumentationEntry cmDocumentationUsage[] =
+{
+ {0,
+ " ctest [options]", 0},
+ {0,0,0}
+};
+
+//----------------------------------------------------------------------------
+static const cmDocumentationEntry cmDocumentationDescription[] =
+{
+ {0,
+ "The \"ctest\" executable is the CMake test driver program. "
+ "CMake-generated build trees created for projects that use "
+ "the ENABLE_TESTING and ADD_TEST commands have testing support. "
+ "This program will run the tests and report results.", 0},
+ CMAKE_STANDARD_INTRODUCTION,
+ {0,0,0}
+};
+
+//----------------------------------------------------------------------------
+static const cmDocumentationEntry cmDocumentationOptions[] =
+{
+ {"-C <config>", "Choose configuration to test.",
+ "Some CMake-generated build trees can have multiple build configurations "
+ "in the same tree. This option can be used to specify which one should "
+ "be tested. Example configurations are \"Debug\" and \"Release\"."},
+ {"-V,--verbose", "Enable verbose output from tests.",
+ "Test output is normally suppressed and only summary information is "
+ "displayed. This option will show all test output."},
+ {"-N,--show-only", "Disable actual execution of tests.",
+ "This option tells ctest to list the tests that would be run but not "
+ "actually run them. Useful in conjunction with the -R and -E options."},
+ {"-R <regex>", "Run tests matching regular expression.",
+ "This option tells ctest to run only the tests whose names match the "
+ "given regular expression."},
+ {"-E <regex>", "Exclude tests matching regular expression.",
+ "This option tells ctest to NOT run the tests whose names match the "
+ "given regular expression."},
+ {0,0,0}
+};
+
+//----------------------------------------------------------------------------
+static const cmDocumentationEntry cmDocumentationSeeAlso[] =
+{
+ {0, "cmake", 0},
+ {0, "ccmake", 0},
+ {0, 0, 0}
+};
+
// this is a test driver program for cmCTest.
int main (int argc, char *argv[])
{
cmSystemTools::EnableMSVCDebugHook();
+
+ // If there is a testing input file, check for documentation options
+ // only if there are actually arguments. We want running without
+ // arguments to run tests.
+ if(argc > 1 || !cmSystemTools::FileExists("DartTestfile.txt"))
+ {
+ cmDocumentation doc;
+ if(doc.CheckOptions(argc, argv))
+ {
+ // Construct and print requested documentation.
+ doc.SetName("ctest");
+ doc.SetNameSection(cmDocumentationName);
+ doc.SetUsageSection(cmDocumentationUsage);
+ doc.SetDescriptionSection(cmDocumentationDescription);
+ doc.SetOptionsSection(cmDocumentationOptions);
+ doc.SetSeeAlsoList(cmDocumentationSeeAlso);
+ return doc.PrintRequestedDocumentation(std::cout)? 0:1;
+ }
+ }
+
cmCTest inst;
// look at the args
@@ -151,27 +233,6 @@ int main (int argc, char *argv[])
inst.m_ExcludeRegExp = args[i+1];
inst.m_UseExcludeRegExpFirst = inst.m_UseIncludeRegExp ? false : true;
}
-
- if(arg.find("-h") == 0 ||
- arg.find("-help") == 0 ||
- arg.find("-H") == 0 ||
- arg.find("--help") == 0 ||
- arg.find("/H") == 0 ||
- arg.find("/HELP") == 0 ||
- arg.find("/?") == 0)
- {
- std::cerr << "Usage: " << argv[0] << " <options>" << std::endl
- << "\t -C type Specify config type" << std::endl
- << "\t -E test Specify regular expression for tests to exclude"
- << std::endl
- << "\t -R test Specify regular expression for tests to include"
- << std::endl
- << "\t -V Verbose testing" << std::endl
- << "\t -N Only show what would be done without this option"
- << std::endl
- << "\t -H Help page" << std::endl;
- return 1;
- }
}
// call process directory
diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt
index a190fac..15de8b6 100644
--- a/Utilities/CMakeLists.txt
+++ b/Utilities/CMakeLists.txt
@@ -35,6 +35,26 @@ INSTALL_FILES(${CMAKE_DOC_DIR} FILES
)
SET(DOC_FILES ${DOC_FILES} ${CMake_BINARY_DIR}/Docs/cmake.txt)
+# Generate documentation for "ctest" executable.
+SET(CMD ${CMD_DIR}/ctest${CMD_EXT})
+ADD_CUSTOM_COMMAND(
+ TARGET documentation
+ COMMAND ${CMD}
+ ARGS --help-full ${CMake_BINARY_DIR}/Docs/ctest.txt
+ --help-html ${CMake_BINARY_DIR}/Docs/ctest.html
+ --help-man ${CMake_BINARY_DIR}/Docs/ctest.1
+ DEPENDS ${CMD}
+ SOURCE ${CMake_SOURCE_DIR}/Utilities/Doxygen/authors.txt
+ OUTPUTS ${CMake_BINARY_DIR}/Docs/ctest.txt
+ )
+ADD_DEPENDENCIES(documentation ctest)
+INSTALL_FILES(${CMAKE_MAN_DIR}/man1 FILES ${CMake_BINARY_DIR}/Docs/ctest.1)
+INSTALL_FILES(${CMAKE_DOC_DIR} FILES
+ ${CMake_BINARY_DIR}/Docs/ctest.txt
+ ${CMake_BINARY_DIR}/Docs/ctest.html
+ )
+SET(DOC_FILES ${DOC_FILES} ${CMake_BINARY_DIR}/Docs/ctest.txt)
+
# Generate documentation for "ccmake" executable.
IF(UNIX)
IF(CURSES_LIBRARY)