Commit 87e14179 authored by Markus Kauppila's avatar Markus Kauppila

Test cases executed in their own process can now bail out if

assertion fails.

Note: Bailing out doesn't work with --in-proc option.
parent 103124ac
...@@ -69,7 +69,7 @@ typedef struct TestCaseReference { ...@@ -69,7 +69,7 @@ typedef struct TestCaseReference {
* *
* \param execKey Execution key for the test * \param execKey Execution key for the test
*/ */
void _InitTestEnvironment(Uint64 execKey); void _InitTestEnvironment(Uint64 execKey, SDL_bool inproc);
/*! /*!
* Deinitializes the test environment and * Deinitializes the test environment and
......
...@@ -40,11 +40,16 @@ int _testAssertsFailed; ...@@ -40,11 +40,16 @@ int _testAssertsFailed;
/*! \brief counts the passed asserts */ /*! \brief counts the passed asserts */
int _testAssertsPassed; int _testAssertsPassed;
/*! \brief is the execution done in-process? */
SDL_bool canBailOut;
void void
_InitTestEnvironment(Uint64 execKey) _InitTestEnvironment(Uint64 execKey, SDL_bool inproc)
{ {
InitFuzzer(execKey); InitFuzzer(execKey);
canBailOut = inproc == 0;
_testReturnValue = TEST_RESULT_PASS; _testReturnValue = TEST_RESULT_PASS;
_testAssertsFailed = 0; _testAssertsFailed = 0;
_testAssertsPassed = 0; _testAssertsPassed = 0;
...@@ -87,7 +92,10 @@ AssertEquals(int expected, int actual, char *message, ...) ...@@ -87,7 +92,10 @@ AssertEquals(int expected, int actual, char *message, ...)
_testReturnValue = TEST_RESULT_FAILURE; _testReturnValue = TEST_RESULT_FAILURE;
_testAssertsFailed++; _testAssertsFailed++;
} else {
if(canBailOut)
exit(TEST_RESULT_FAILURE); // bail out from the test
} else {
AssertWithValues("AssertEquals", 1, buf, AssertWithValues("AssertEquals", 1, buf,
actual, expected, time(0)); actual, expected, time(0));
...@@ -95,6 +103,7 @@ AssertEquals(int expected, int actual, char *message, ...) ...@@ -95,6 +103,7 @@ AssertEquals(int expected, int actual, char *message, ...)
} }
} }
void void
AssertTrue(int condition, char *message, ...) AssertTrue(int condition, char *message, ...)
{ {
...@@ -109,6 +118,9 @@ AssertTrue(int condition, char *message, ...) ...@@ -109,6 +118,9 @@ AssertTrue(int condition, char *message, ...)
_testReturnValue = TEST_RESULT_FAILURE; _testReturnValue = TEST_RESULT_FAILURE;
_testAssertsFailed++; _testAssertsFailed++;
if(canBailOut)
exit(TEST_RESULT_FAILURE); // bail out from the test
} else { } else {
Assert("AssertTrue", 1, buf, time(0)); Assert("AssertTrue", 1, buf, time(0));
...@@ -131,6 +143,7 @@ AssertPass(char *message, ...) ...@@ -131,6 +143,7 @@ AssertPass(char *message, ...)
_testAssertsPassed++; _testAssertsPassed++;
} }
void void
AssertFail(char *message, ...) AssertFail(char *message, ...)
{ {
...@@ -145,5 +158,8 @@ AssertFail(char *message, ...) ...@@ -145,5 +158,8 @@ AssertFail(char *message, ...)
_testReturnValue = TEST_RESULT_FAILURE; _testReturnValue = TEST_RESULT_FAILURE;
_testAssertsFailed++; _testAssertsFailed++;
if(canBailOut)
exit(TEST_RESULT_FAILURE); // bail out from the test
} }
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
//!< Function pointer to a test case function //!< Function pointer to a test case function
typedef void (*TestCaseFp)(void *arg); typedef void (*TestCaseFp)(void *arg);
//!< Function pointer to a test case init function //!< Function pointer to a test case init function
typedef void (*InitTestInvironmentFp)(Uint64); typedef void (*InitTestInvironmentFp)(Uint64, SDL_bool);
//!< Function pointer to a test case quit function //!< Function pointer to a test case quit function
typedef int (*QuitTestInvironmentFp)(void); typedef int (*QuitTestInvironmentFp)(void);
//!< Function pointer to a test case set up function //!< Function pointer to a test case set up function
...@@ -825,7 +825,7 @@ RunTest(TestCase *testCase, Uint64 execKey) ...@@ -825,7 +825,7 @@ RunTest(TestCase *testCase, Uint64 execKey)
} }
} }
testCase->initTestEnvironment(execKey); testCase->initTestEnvironment(execKey, execute_inproc);
if(testCase->testSetUp) { if(testCase->testSetUp) {
testCase->testSetUp(0x0); testCase->testSetUp(0x0);
......
...@@ -142,6 +142,8 @@ test_dummy2(void *arg) ...@@ -142,6 +142,8 @@ test_dummy2(void *arg)
char *msg = "eello"; char *msg = "eello";
//msg[0] = 'H'; //msg[0] = 'H';
AssertTrue(1, "Assert message"); AssertTrue(1, "Assert message");
AssertTrue(0, "Assert message");
AssertTrue(1, "Assert message");
} }
void void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment