diff options
Diffstat (limited to 'Source/ctest.cxx')
-rw-r--r-- | Source/ctest.cxx | 236 |
1 files changed, 113 insertions, 123 deletions
diff --git a/Source/ctest.cxx b/Source/ctest.cxx index 23b9ec4..4edd62e 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -20,104 +20,99 @@ #include "CTest/cmCTestScriptHandler.h" #include "cmsys/Encoding.hxx" -static const char * cmDocumentationName[][2] = -{ - {0, - " ctest - Testing driver provided by CMake."}, - {0,0} +static const char* cmDocumentationName[][2] = { + { 0, " ctest - Testing driver provided by CMake." }, + { 0, 0 } }; -static const char * cmDocumentationUsage[][2] = -{ - {0, - " ctest [options]"}, - {0,0} -}; - -static const char * cmDocumentationOptions[][2] = -{ - {"-C <cfg>, --build-config <cfg>", "Choose configuration to test."}, - {"-V,--verbose", "Enable verbose output from tests."}, - {"-VV,--extra-verbose", "Enable more verbose output from tests."}, - {"--debug", "Displaying more verbose internals of CTest."}, - {"--output-on-failure", "Output anything outputted by the test program " - "if the test should fail."}, - {"--test-output-size-passed <size>", "Limit the output for passed tests " - "to <size> bytes"}, - {"--test-output-size-failed <size>", "Limit the output for failed tests " - "to <size> bytes"}, - {"-F", "Enable failover."}, - {"-j <jobs>, --parallel <jobs>", "Run the tests in parallel using the " - "given number of jobs."}, - {"-Q,--quiet", "Make ctest quiet."}, - {"-O <file>, --output-log <file>", "Output to log file"}, - {"-N,--show-only", "Disable actual execution of tests."}, - {"-L <regex>, --label-regex <regex>", "Run tests with labels matching " - "regular expression."}, - {"-R <regex>, --tests-regex <regex>", "Run tests matching regular " - "expression."}, - {"-E <regex>, --exclude-regex <regex>", "Exclude tests matching regular " - "expression."}, - {"-LE <regex>, --label-exclude <regex>", "Exclude tests with labels " - "matching regular expression."}, - {"-D <dashboard>, --dashboard <dashboard>", "Execute dashboard test"}, - {"-D <var>:<type>=<value>", "Define a variable for script mode"}, - {"-M <model>, --test-model <model>", "Sets the model for a dashboard"}, - {"-T <action>, --test-action <action>", "Sets the dashboard action to " - "perform"}, - {"--track <track>", "Specify the track to submit dashboard to"}, - {"-S <script>, --script <script>", "Execute a dashboard for a " - "configuration"}, - {"-SP <script>, --script-new-process <script>", "Execute a dashboard for a " - "configuration"}, - {"-A <file>, --add-notes <file>", "Add a notes file with submission"}, - {"-I [Start,End,Stride,test#,test#|Test file], --tests-information", - "Run a specific number of tests by number."}, - {"-U, --union", "Take the Union of -I and -R"}, - {"--rerun-failed", "Run only the tests that failed previously"}, - {"--repeat-until-fail <n>", "Require each test to run <n> " - "times without failing in order to pass"}, - {"--max-width <width>", "Set the max width for a test name to output"}, - {"--interactive-debug-mode [0|1]", "Set the interactive mode to 0 or 1."}, - {"--no-label-summary", "Disable timing summary information for labels."}, - {"--build-and-test", "Configure, build and run a test."}, - {"--build-target", "Specify a specific target to build."}, - {"--build-nocmake", "Run the build without running cmake first."}, - {"--build-run-dir", "Specify directory to run programs from."}, - {"--build-two-config", "Run CMake twice"}, - {"--build-exe-dir", "Specify the directory for the executable."}, - {"--build-generator", "Specify the generator to use."}, - {"--build-generator-platform", "Specify the generator-specific platform."}, - {"--build-generator-toolset", "Specify the generator-specific toolset."}, - {"--build-project", "Specify the name of the project to build."}, - {"--build-makeprogram", "Specify the make program to use."}, - {"--build-noclean", "Skip the make clean step."}, - {"--build-config-sample", - "A sample executable to use to determine the configuration"}, - {"--build-options", "Add extra options to the build step."}, - - {"--test-command", "The test to run with the --build-and-test option."}, - {"--test-timeout", "The time limit in seconds, internal use only."}, - {"--test-load", "CPU load threshold for starting new parallel tests."}, - {"--tomorrow-tag", "Nightly or experimental starts with next day tag."}, - {"--ctest-config", "The configuration file used to initialize CTest state " - "when submitting dashboards."}, - {"--overwrite", "Overwrite CTest configuration option."}, - {"--extra-submit <file>[;<file>]", "Submit extra files to the dashboard."}, - {"--force-new-ctest-process", "Run child CTest instances as new processes"}, - {"--schedule-random", "Use a random order for scheduling tests"}, - {"--submit-index", "Submit individual dashboard tests with specific index"}, - {"--timeout <seconds>", "Set a global timeout on all tests."}, - {"--stop-time <time>", - "Set a time at which all tests should stop running."}, - {"--http1.0", "Submit using HTTP 1.0."}, - {"--no-compress-output", "Do not compress test output when submitting."}, - {"--print-labels", "Print all available test labels."}, - {0,0} +static const char* cmDocumentationUsage[][2] = { { 0, " ctest [options]" }, + { 0, 0 } }; + +static const char* cmDocumentationOptions[][2] = { + { "-C <cfg>, --build-config <cfg>", "Choose configuration to test." }, + { "-V,--verbose", "Enable verbose output from tests." }, + { "-VV,--extra-verbose", "Enable more verbose output from tests." }, + { "--debug", "Displaying more verbose internals of CTest." }, + { "--output-on-failure", "Output anything outputted by the test program " + "if the test should fail." }, + { "--test-output-size-passed <size>", "Limit the output for passed tests " + "to <size> bytes" }, + { "--test-output-size-failed <size>", "Limit the output for failed tests " + "to <size> bytes" }, + { "-F", "Enable failover." }, + { "-j <jobs>, --parallel <jobs>", "Run the tests in parallel using the " + "given number of jobs." }, + { "-Q,--quiet", "Make ctest quiet." }, + { "-O <file>, --output-log <file>", "Output to log file" }, + { "-N,--show-only", "Disable actual execution of tests." }, + { "-L <regex>, --label-regex <regex>", "Run tests with labels matching " + "regular expression." }, + { "-R <regex>, --tests-regex <regex>", "Run tests matching regular " + "expression." }, + { "-E <regex>, --exclude-regex <regex>", "Exclude tests matching regular " + "expression." }, + { "-LE <regex>, --label-exclude <regex>", "Exclude tests with labels " + "matching regular expression." }, + { "-D <dashboard>, --dashboard <dashboard>", "Execute dashboard test" }, + { "-D <var>:<type>=<value>", "Define a variable for script mode" }, + { "-M <model>, --test-model <model>", "Sets the model for a dashboard" }, + { "-T <action>, --test-action <action>", "Sets the dashboard action to " + "perform" }, + { "--track <track>", "Specify the track to submit dashboard to" }, + { "-S <script>, --script <script>", "Execute a dashboard for a " + "configuration" }, + { "-SP <script>, --script-new-process <script>", "Execute a dashboard for a " + "configuration" }, + { "-A <file>, --add-notes <file>", "Add a notes file with submission" }, + { "-I [Start,End,Stride,test#,test#|Test file], --tests-information", + "Run a specific number of tests by number." }, + { "-U, --union", "Take the Union of -I and -R" }, + { "--rerun-failed", "Run only the tests that failed previously" }, + { "--repeat-until-fail <n>", "Require each test to run <n> " + "times without failing in order to pass" }, + { "--max-width <width>", "Set the max width for a test name to output" }, + { "--interactive-debug-mode [0|1]", "Set the interactive mode to 0 or 1." }, + { "--no-label-summary", "Disable timing summary information for labels." }, + { "--build-and-test", "Configure, build and run a test." }, + { "--build-target", "Specify a specific target to build." }, + { "--build-nocmake", "Run the build without running cmake first." }, + { "--build-run-dir", "Specify directory to run programs from." }, + { "--build-two-config", "Run CMake twice" }, + { "--build-exe-dir", "Specify the directory for the executable." }, + { "--build-generator", "Specify the generator to use." }, + { "--build-generator-platform", "Specify the generator-specific platform." }, + { "--build-generator-toolset", "Specify the generator-specific toolset." }, + { "--build-project", "Specify the name of the project to build." }, + { "--build-makeprogram", "Specify the make program to use." }, + { "--build-noclean", "Skip the make clean step." }, + { "--build-config-sample", + "A sample executable to use to determine the configuration" }, + { "--build-options", "Add extra options to the build step." }, + + { "--test-command", "The test to run with the --build-and-test option." }, + { "--test-timeout", "The time limit in seconds, internal use only." }, + { "--test-load", "CPU load threshold for starting new parallel tests." }, + { "--tomorrow-tag", "Nightly or experimental starts with next day tag." }, + { "--ctest-config", "The configuration file used to initialize CTest state " + "when submitting dashboards." }, + { "--overwrite", "Overwrite CTest configuration option." }, + { "--extra-submit <file>[;<file>]", "Submit extra files to the dashboard." }, + { "--force-new-ctest-process", + "Run child CTest instances as new processes" }, + { "--schedule-random", "Use a random order for scheduling tests" }, + { "--submit-index", + "Submit individual dashboard tests with specific index" }, + { "--timeout <seconds>", "Set a global timeout on all tests." }, + { "--stop-time <time>", + "Set a time at which all tests should stop running." }, + { "--http1.0", "Submit using HTTP 1.0." }, + { "--no-compress-output", "Do not compress test output when submitting." }, + { "--print-labels", "Print all available test labels." }, + { 0, 0 } }; // this is a test driver program for cmCTest. -int main (int argc, char const* const* argv) +int main(int argc, char const* const* argv) { cmsys::Encoding::CommandLineArguments encoding_args = cmsys::Encoding::CommandLineArguments::Main(argc, argv); @@ -129,37 +124,34 @@ int main (int argc, char const* const* argv) cmSystemTools::FindCMakeResources(argv[0]); // Dispatch 'ctest --launch' mode directly. - if(argc >= 2 && strcmp(argv[1], "--launch") == 0) - { + if (argc >= 2 && strcmp(argv[1], "--launch") == 0) { return cmCTestLaunch::Main(argc, argv); - } + } cmCTest inst; - if (cmSystemTools::GetCurrentWorkingDirectory().empty()) - { + if (cmSystemTools::GetCurrentWorkingDirectory().empty()) { cmCTestLog(&inst, ERROR_MESSAGE, - "Current working directory cannot be established." << std::endl); + "Current working directory cannot be established." + << std::endl); return 1; - } + } // 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("CTestTestfile.cmake") || - cmSystemTools::FileExists("DartTestfile.txt"))) - { - if(argc == 1) - { + if (argc > 1 || + !(cmSystemTools::FileExists("CTestTestfile.cmake") || + cmSystemTools::FileExists("DartTestfile.txt"))) { + if (argc == 1) { cmCTestLog(&inst, ERROR_MESSAGE, "*********************************" - << std::endl - << "No test configuration file found!" << std::endl - << "*********************************" << std::endl); - } + << std::endl + << "No test configuration file found!" << std::endl + << "*********************************" << std::endl); + } cmDocumentation doc; doc.addCTestStandardDocSections(); - if(doc.CheckOptions(argc, argv)) - { + if (doc.CheckOptions(argc, argv)) { cmake hcm; hcm.SetHomeDirectory(""); hcm.SetHomeOutputDirectory(""); @@ -167,33 +159,31 @@ int main (int argc, char const* const* argv) // Construct and print requested documentation. cmCTestScriptHandler* ch = - static_cast<cmCTestScriptHandler*>(inst.GetHandler("script")); + static_cast<cmCTestScriptHandler*>(inst.GetHandler("script")); ch->CreateCMake(); doc.SetShowGenerators(false); doc.SetName("ctest"); - doc.SetSection("Name",cmDocumentationName); - doc.SetSection("Usage",cmDocumentationUsage); - doc.PrependSection("Options",cmDocumentationOptions); + doc.SetSection("Name", cmDocumentationName); + doc.SetSection("Usage", cmDocumentationUsage); + doc.PrependSection("Options", cmDocumentationOptions); #ifdef cout -# undef cout +#undef cout #endif - return doc.PrintRequestedDocumentation(std::cout)? 0:1; + return doc.PrintRequestedDocumentation(std::cout) ? 0 : 1; #define cout no_cout_use_cmCTestLog - } } + } // copy the args to a vector std::vector<std::string> args; - for(int i =0; i < argc; ++i) - { + for (int i = 0; i < argc; ++i) { args.push_back(argv[i]); - } + } // run ctest std::string output; - int res = inst.Run(args,&output); + int res = inst.Run(args, &output); cmCTestLog(&inst, OUTPUT, output); return res; } - |