1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
|
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile: cmCTestScriptHandler.h,v $
Language: C++
Date: $Date: 2007-06-08 20:06:33 $
Version: $Revision: 1.19 $
Copyright (c) 2002 Kitware, Inc. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef cmCTestScriptHandler_h
#define cmCTestScriptHandler_h
#include "cmCTestGenericHandler.h"
#include "cmListFileCache.h"
class cmMakefile;
class cmLocalGenerator;
class cmGlobalGenerator;
class cmake;
class cmCTestCommand;
/** \class cmCTestScriptHandler
* \brief A class that handles ctest -S invocations
*
* CTest script is controlled using several variables that script has to
* specify and some optional ones. Required ones are:
* CTEST_SOURCE_DIRECTORY - Source directory of the project
* CTEST_BINARY_DIRECTORY - Binary directory of the project
* CTEST_COMMAND - Testing commands
*
* Optional variables are:
* CTEST_BACKUP_AND_RESTORE
* CTEST_CMAKE_COMMAND
* CTEST_CMAKE_OUTPUT_FILE_NAME
* CTEST_CONTINUOUS_DURATION
* CTEST_CONTINUOUS_MINIMUM_INTERVAL
* CTEST_CVS_CHECKOUT
* CTEST_CVS_COMMAND
* CTEST_UPDATE_COMMAND
* CTEST_DASHBOARD_ROOT
* CTEST_ENVIRONMENT
* CTEST_INITIAL_CACHE
* CTEST_START_WITH_EMPTY_BINARY_DIRECTORY
* CTEST_START_WITH_EMPTY_BINARY_DIRECTORY_ONCE
*
* In addition the following variables can be used. The number can be 1-10.
* CTEST_EXTRA_UPDATES_1
* CTEST_EXTRA_UPDATES_2
* ...
* CTEST_EXTRA_UPDATES_10
*
* CTest script can use the following arguments CTest provides:
* CTEST_SCRIPT_ARG
* CTEST_SCRIPT_DIRECTORY
* CTEST_SCRIPT_NAME
*
*/
class cmCTestScriptHandler : public cmCTestGenericHandler
{
public:
cmTypeMacro(cmCTestScriptHandler, cmCTestGenericHandler);
/**
* Add a script to run, and if is should run in the current process
*/
void AddConfigurationScript(const char *, bool pscope);
/**
* Run a dashboard using a specified confiuration script
*/
int ProcessHandler();
/*
* Run a script
*/
static bool RunScript(cmCTest* ctest, const char *script, bool InProcess);
int RunCurrentScript();
/*
* Empty Binary Directory
*/
static bool EmptyBinaryDirectory(const char *dir);
/*
* Some elapsed time handling functions
*/
static void SleepInSeconds(unsigned int secondsToWait);
void UpdateElapsedTime();
/**
* Return the time remaianing that the script is allowed to run in
* seconds if the user has set the variable CTEST_TIME_LIMIT. If that has
* not been set it returns 1e7 seconds
*/
double GetRemainingTimeAllowed();
cmCTestScriptHandler();
~cmCTestScriptHandler();
void Initialize();
void CreateCMake();
void GetCommandDocumentation(std::vector<cmDocumentationEntry>& v) const;
private:
// reads in a script
int ReadInScript(const std::string& total_script_arg);
int ExecuteScript(const std::string& total_script_arg);
// extract vars from the script to set ivars
int ExtractVariables();
// perform a CVS checkout of the source dir
int CheckOutSourceDir();
// perform any extra cvs updates that were requested
int PerformExtraUpdates();
// backup and restore dirs
int BackupDirectories();
void RestoreBackupDirectories();
int RunConfigurationScript(const std::string& script, bool pscope);
int RunConfigurationDashboard();
// Add ctest command
void AddCTestCommand(cmCTestCommand* command);
std::vector<cmStdString> ConfigurationScripts;
std::vector<bool> ScriptProcessScope;
bool Backup;
bool EmptyBinDir;
bool EmptyBinDirOnce;
cmStdString SourceDir;
cmStdString BinaryDir;
cmStdString BackupSourceDir;
cmStdString BackupBinaryDir;
cmStdString CTestRoot;
cmStdString CVSCheckOut;
cmStdString CTestCmd;
cmStdString UpdateCmd;
cmStdString CTestEnv;
cmStdString InitCache;
cmStdString CMakeCmd;
cmStdString CMOutFile;
std::vector<cmStdString> ExtraUpdates;
double MinimumInterval;
double ContinuousDuration;
// what time in seconds did this script start running
double ScriptStartTime;
cmMakefile *Makefile;
cmLocalGenerator *LocalGenerator;
cmGlobalGenerator *GlobalGenerator;
cmake *CMake;
};
#endif
|