Fixed ticket #481 (testrunner should exit with non-zero status if one of tests fails)

http://sourceforge.net/apps/trac/cppcheck/ticket/481
This commit is contained in:
Slava Semushin 2009-07-18 19:08:10 +07:00
parent a0a526a205
commit d04eeb4fd4
3 changed files with 12 additions and 4 deletions

View File

@ -20,7 +20,6 @@
int main(int argc, const char *argv[])
{
TestFixture::runTests((argc == 2) ? argv[1] : NULL);
return 0;
return TestFixture::runTests((argc == 2) ? argv[1] : NULL);
}

View File

@ -64,6 +64,8 @@ public:
std::ostringstream TestFixture::errmsg;
unsigned int TestFixture::countTests;
size_t TestFixture::fails_counter = 0;
TestFixture::TestFixture(const std::string &_name) : classname(_name)
{
TestRegistry::theInstance().addTest(this);
@ -105,6 +107,8 @@ void TestFixture::assertEquals(const char *filename, int linenr, const std::stri
{
if (expected != actual)
{
++fails_counter;
errmsg << "Assertion failed in " << filename << " at line " << linenr << std::endl
<< "Expected:" << std::endl
<< writestr(expected) << std::endl
@ -124,6 +128,8 @@ void TestFixture::assertEquals(const char *filename, int linenr, unsigned int ex
void TestFixture::assertThrowFail(const char *filename, int linenr)
{
++fails_counter;
errmsg << "Assertion failed in " << filename << " at line " << linenr << std::endl
<< "The expected exception was not thrown" << std::endl;
}
@ -144,7 +150,7 @@ void TestFixture::run(const std::string &str)
run();
}
void TestFixture::runTests(const char cmd[])
size_t TestFixture::runTests(const char cmd[])
{
std::string classname(cmd ? cmd : "");
std::string testname("");
@ -170,6 +176,8 @@ void TestFixture::runTests(const char cmd[])
std::cout << "\n\nTesting Complete\nNumber of tests: " << countTests << "\n";
std::cerr << errmsg.str();
return fails_counter;
}
void TestFixture::reportOut(const std::string & /*outmsg*/)

View File

@ -29,6 +29,7 @@ class TestFixture : public ErrorLogger
private:
static std::ostringstream errmsg;
static unsigned int countTests;
static size_t fails_counter;
protected:
std::string classname;
@ -52,7 +53,7 @@ public:
virtual ~TestFixture() { }
static void printTests();
static void runTests(const char cmd[]);
static size_t runTests(const char cmd[]);
};