mirror of
https://github.com/reactos/reactos.git
synced 2024-10-21 00:18:26 +00:00
c2d0d784c7
- Create a branch to do a proper merge of USB work from a trunk base instead of from cmake-bringup - In the future, DO NOT under any circumstances branch another branch. This leads to merge problems! svn path=/branches/usb-bringup-trunk/; revision=55018
141 lines
3.7 KiB
C++
141 lines
3.7 KiB
C++
/*
|
|
* Copyright (c) 2003, 2004
|
|
* Zdenek Nemec
|
|
*
|
|
* This material is provided "as is", with absolutely no warranty expressed
|
|
* or implied. Any use is at your own risk.
|
|
*
|
|
* Permission to use or copy this software for any purpose is hereby granted
|
|
* without fee, provided the above notices are retained on all copies.
|
|
* Permission to modify the code and to distribute modified code is granted,
|
|
* provided the above notices are retained, and a notice that the code was
|
|
* modified is included with the above copyright notice.
|
|
*
|
|
*/
|
|
|
|
#include "cppunit_proxy.h"
|
|
#include "file_reporter.h"
|
|
#include "cppunit_timer.h"
|
|
|
|
#include "stdio.h"
|
|
|
|
#if 0
|
|
namespace CPPUNIT_NS
|
|
{
|
|
#endif
|
|
int TestCase::m_numErrors = 0;
|
|
int TestCase::m_numTests = 0;
|
|
|
|
TestCase *TestCase::m_root = 0;
|
|
Reporter *TestCase::m_reporter = 0;
|
|
|
|
void TestCase::registerTestCase(TestCase *in_testCase) {
|
|
in_testCase->m_next = m_root;
|
|
m_root = in_testCase;
|
|
}
|
|
|
|
int TestCase::run(Reporter *in_reporter, const char *in_testName, bool invert) {
|
|
TestCase::m_reporter = in_reporter;
|
|
|
|
m_numErrors = 0;
|
|
m_numTests = 0;
|
|
|
|
TestCase *tmp = m_root;
|
|
while (tmp != 0) {
|
|
tmp->myRun(in_testName, invert);
|
|
tmp = tmp->m_next;
|
|
}
|
|
return m_numErrors;
|
|
}
|
|
#if 0
|
|
}
|
|
#endif
|
|
|
|
static void usage(const char* name)
|
|
{
|
|
printf("Usage : %s [-t=<class>[::<test>]] [-x=<class>[::<test>]] [-f=<file>]%s\n",
|
|
name, Timer::supported() ? " [-m]": "");
|
|
printf("\t[-t=<class>[::<test>]] : test class or class::test to execute;\n");
|
|
printf("\t[-x=<class>[::<test>]] : test class or class::test to exclude from execution;\n");
|
|
printf("\t[-f=<file>] : output file");
|
|
if (Timer::supported())
|
|
printf(";\n\t[-m] : monitor test execution, display time duration for each test\n");
|
|
else
|
|
printf("\n");
|
|
}
|
|
|
|
int main(int argc, char** argv) {
|
|
|
|
// CppUnit(mini) test launcher
|
|
// command line option syntax:
|
|
// test [OPTIONS]
|
|
// where OPTIONS are
|
|
// -t=CLASS[::TEST] run the test class CLASS or member test CLASS::TEST
|
|
// -x=CLASS[::TEST] run all except the test class CLASS or member test CLASS::TEST
|
|
// -f=FILE save output in file FILE instead of stdout
|
|
// -m monitor test(s) execution
|
|
const char *fileName = 0;
|
|
const char *testName = "";
|
|
const char *xtestName = "";
|
|
bool doMonitoring = false;
|
|
|
|
for (int i = 1; i < argc; ++i) {
|
|
if (argv[i][0] == '-') {
|
|
if (!strncmp(argv[i], "-t=", 3)) {
|
|
testName = argv[i]+3;
|
|
continue;
|
|
}
|
|
else if (!strncmp(argv[i], "-f=", 3)) {
|
|
fileName = argv[i]+3;
|
|
continue;
|
|
}
|
|
else if (!strncmp(argv[i], "-x=", 3)) {
|
|
xtestName = argv[i]+3;
|
|
continue;
|
|
}
|
|
else if (Timer::supported() && !strncmp(argv[i], "-m", 2)) {
|
|
doMonitoring = true;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
// invalid option, we display normal usage.
|
|
usage(argv[0]);
|
|
return 1;
|
|
}
|
|
|
|
CPPUNIT_NS::Reporter* reporter;
|
|
if (fileName != 0)
|
|
reporter = new FileReporter(fileName, doMonitoring);
|
|
else
|
|
reporter = new FileReporter(stdout, doMonitoring);
|
|
|
|
int num_errors;
|
|
if (xtestName[0] != 0) {
|
|
num_errors = CPPUNIT_NS::TestCase::run(reporter, xtestName, true);
|
|
} else {
|
|
num_errors = CPPUNIT_NS::TestCase::run(reporter, testName);
|
|
}
|
|
|
|
reporter->printSummary();
|
|
delete reporter;
|
|
|
|
return num_errors;
|
|
}
|
|
|
|
// See doc/README.intel for explanation about this code
|
|
#if defined (STLPORT) && defined (__ICL) && (__ICL >= 900) && \
|
|
(_STLP_MSVC_LIB < 1300) && defined (_STLP_USE_DYNAMIC_LIB)
|
|
# include <exception>
|
|
|
|
# undef std
|
|
namespace std
|
|
{
|
|
void _STLP_CALL unexpected() {
|
|
unexpected_handler hdl;
|
|
set_unexpected(hdl = set_unexpected((unexpected_handler)0));
|
|
hdl();
|
|
}
|
|
}
|
|
#endif
|