|
Packit |
8c9aa0 |
#ifndef CPPUNIT_HELPER_COMMANDLINEPARSER_H
|
|
Packit |
8c9aa0 |
#define CPPUNIT_HELPER_COMMANDLINEPARSER_H
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#include <cppunit/Portability.h>
|
|
Packit |
8c9aa0 |
#include <deque>
|
|
Packit |
8c9aa0 |
#include <cppunit/plugin/PlugInParameters.h>
|
|
Packit |
8c9aa0 |
#include <string>
|
|
Packit |
8c9aa0 |
#include <stdexcept>
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! Exception thrown on error while parsing command line.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
class CommandLineParserException : public std::runtime_error
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
public:
|
|
Packit |
8c9aa0 |
CommandLineParserException( std::string message )
|
|
Packit |
8c9aa0 |
: std::runtime_error( message )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
};
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
struct CommandLinePlugInInfo
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
std::string m_fileName;
|
|
Packit |
8c9aa0 |
CPPUNIT_NS::PlugInParameters m_parameters;
|
|
Packit |
8c9aa0 |
};
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! \brief Parses a command line.
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
-c --compiler
|
|
Packit |
8c9aa0 |
-x --xml [filename]
|
|
Packit |
8c9aa0 |
-s --xsl stylesheet
|
|
Packit |
8c9aa0 |
-e --encoding encoding
|
|
Packit |
8c9aa0 |
-b --brief-progress
|
|
Packit |
8c9aa0 |
-n --no-progress
|
|
Packit |
8c9aa0 |
-t --text
|
|
Packit |
8c9aa0 |
-o --cout
|
|
Packit |
8c9aa0 |
-w --wait
|
|
Packit |
8c9aa0 |
filename[="options"]
|
|
Packit |
8c9aa0 |
:testpath
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
class CommandLineParser
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
public:
|
|
Packit |
8c9aa0 |
/*! Constructs a CommandLineParser object.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
CommandLineParser( int argc,
|
|
Packit |
8c9aa0 |
const char *argv[] );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/// Destructor.
|
|
Packit |
8c9aa0 |
virtual ~CommandLineParser();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! Parses the command line.
|
|
Packit |
8c9aa0 |
* \exception CommandLineParserException if an error occurs.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void parse();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
bool useCompilerOutputter() const;
|
|
Packit |
8c9aa0 |
bool useXmlOutputter() const;
|
|
Packit |
8c9aa0 |
std::string getXmlFileName() const;
|
|
Packit |
8c9aa0 |
std::string getXmlStyleSheet() const;
|
|
Packit |
8c9aa0 |
std::string getEncoding() const;
|
|
Packit |
8c9aa0 |
bool useBriefTestProgress() const;
|
|
Packit |
8c9aa0 |
bool noTestProgress() const;
|
|
Packit |
8c9aa0 |
bool useTextOutputter() const;
|
|
Packit |
8c9aa0 |
bool useCoutStream() const;
|
|
Packit |
8c9aa0 |
bool waitBeforeExit() const;
|
|
Packit |
8c9aa0 |
std::string getTestPath() const;
|
|
Packit |
8c9aa0 |
int getPlugInCount() const;
|
|
Packit |
8c9aa0 |
CommandLinePlugInInfo getPlugInAt( int index ) const;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
protected:
|
|
Packit |
8c9aa0 |
/// Prevents the use of the copy constructor.
|
|
Packit |
8c9aa0 |
CommandLineParser( const CommandLineParser © );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/// Prevents the use of the copy operator.
|
|
Packit |
8c9aa0 |
void operator =( const CommandLineParser © );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void readNonOptionCommands();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
bool hasNextArgument() const;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string getNextArgument();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string getCurrentArgument() const;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
bool argumentStartsWith( const std::string &expected ) const;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void getNextOption();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
bool isOption( const std::string &shortName,
|
|
Packit |
8c9aa0 |
const std::string &longName );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string getNextParameter();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string getNextOptionalParameter();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void fail( std::string message );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
protected:
|
|
Packit |
8c9aa0 |
bool m_useCompiler;
|
|
Packit |
8c9aa0 |
bool m_useXml;
|
|
Packit |
8c9aa0 |
std::string m_xmlFileName;
|
|
Packit |
8c9aa0 |
std::string m_xsl;
|
|
Packit |
8c9aa0 |
std::string m_encoding;
|
|
Packit |
8c9aa0 |
bool m_briefProgress;
|
|
Packit |
8c9aa0 |
bool m_noProgress;
|
|
Packit |
8c9aa0 |
bool m_useText;
|
|
Packit |
8c9aa0 |
bool m_useCout;
|
|
Packit |
8c9aa0 |
bool m_waitBeforeExit;
|
|
Packit |
8c9aa0 |
std::string m_testPath;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
typedef std::deque<CommandLinePlugInInfo> PlugIns;
|
|
Packit |
8c9aa0 |
PlugIns m_plugIns;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
typedef std::deque<std::string> Arguments;
|
|
Packit |
8c9aa0 |
Arguments m_arguments;
|
|
Packit |
8c9aa0 |
unsigned int m_currentArgument;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string m_option;
|
|
Packit |
8c9aa0 |
};
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#endif // CPPUNIT_HELPER_COMMANDLINEPARSER_H
|