mirror of
https://github.com/pocoproject/poco.git
synced 2025-06-06 14:40:49 +02:00
107 lines
2.0 KiB
C++
107 lines
2.0 KiB
C++
//
|
|
// WinTestRunner.cpp
|
|
//
|
|
|
|
|
|
#include "WinTestRunner/WinTestRunner.h"
|
|
#include "TestRunnerDlg.h"
|
|
#include "CppUnit/TestRunner.h"
|
|
#include <fstream>
|
|
|
|
|
|
namespace CppUnit {
|
|
|
|
|
|
WinTestRunner::WinTestRunner()
|
|
{
|
|
}
|
|
|
|
|
|
WinTestRunner::~WinTestRunner()
|
|
{
|
|
for (std::vector<Test*>::iterator it = _tests.begin(); it != _tests.end(); ++it)
|
|
delete *it;
|
|
}
|
|
|
|
|
|
void WinTestRunner::run()
|
|
{
|
|
// Note: The following code is some evil hack to
|
|
// add batch capability to the MFC based WinTestRunner.
|
|
|
|
std::string cmdLine(AfxGetApp()->m_lpCmdLine);
|
|
if (cmdLine.size() >= 2 && cmdLine[0] == '/' && (cmdLine[1] == 'b' || cmdLine[1] == 'B'))
|
|
{
|
|
TestRunner runner;
|
|
for (std::vector<Test*>::iterator it = _tests.begin(); it != _tests.end(); ++it)
|
|
runner.addTest((*it)->toString(), *it);
|
|
_tests.clear();
|
|
std::vector<std::string> args;
|
|
args.push_back("WinTestRunner");
|
|
args.push_back("-all");
|
|
bool success = runner.run(args);
|
|
ExitProcess(success ? 0 : 1);
|
|
}
|
|
else
|
|
{
|
|
// We're running in interactive mode.
|
|
TestRunnerDlg dlg;
|
|
dlg.setTests(_tests);
|
|
dlg.DoModal();
|
|
}
|
|
}
|
|
|
|
|
|
void WinTestRunner::addTest(Test* pTest)
|
|
{
|
|
_tests.push_back(pTest);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(WinTestRunnerApp, CWinApp)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
BOOL WinTestRunnerApp::InitInstance()
|
|
{
|
|
std::string cmdLine(AfxGetApp()->m_lpCmdLine);
|
|
if (cmdLine.size() >= 2 && cmdLine[0] == '/' && (cmdLine[1] == 'b' || cmdLine[1] == 'B'))
|
|
{
|
|
// We're running in batch mode.
|
|
std::string outPath;
|
|
if (cmdLine.size() > 4 && cmdLine[2] == ':')
|
|
{
|
|
outPath = cmdLine.substr(3);
|
|
}
|
|
else
|
|
{
|
|
char buffer[1024];
|
|
GetModuleFileName(NULL, buffer, sizeof(buffer));
|
|
outPath = buffer;
|
|
outPath += ".out";
|
|
}
|
|
freopen(outPath.c_str(), "w", stdout);
|
|
freopen(outPath.c_str(), "w", stderr);
|
|
TestMain();
|
|
}
|
|
else
|
|
{
|
|
AllocConsole();
|
|
SetConsoleTitle("CppUnit WinTestRunner Console");
|
|
freopen("CONOUT$", "w", stdout);
|
|
freopen("CONOUT$", "w", stderr);
|
|
freopen("CONIN$", "r", stdin);
|
|
TestMain();
|
|
FreeConsole();
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
void WinTestRunnerApp::TestMain()
|
|
{
|
|
}
|
|
|
|
|
|
} // namespace CppUnit
|