From 4ca8264ef36a8edbab0a896013472f41070c5c4e Mon Sep 17 00:00:00 2001 From: tsntsumi Date: Sat, 14 Aug 2010 09:14:27 +0000 Subject: [PATCH] Changed to use a global variable though delivered a pointer to the second argument of longjmp. Because the size of int and pointer is different in 64 bits environment. The second argument of longjmp is int. --- src/ccunit/CCUnitTestFixture.c | 54 +++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/ccunit/CCUnitTestFixture.c b/src/ccunit/CCUnitTestFixture.c index 217512f..da12152 100644 --- a/src/ccunit/CCUnitTestFixture.c +++ b/src/ccunit/CCUnitTestFixture.c @@ -32,14 +32,14 @@ #include /** - * run test fixtures exception. + * run tests exception. */ -jmp_buf _ccunit_run_env; +jmp_buf _ccunit_runTest_env; /** - * run tests exception. + * run tests exception */ -jmp_buf _ccunit_runTest_env; +CCUnitTestFailure* _ccunit_testFailure; extern void _ccunit_startTest (CCUnitTestResult* result, struct CCUnitTestCase* test); @@ -70,44 +70,45 @@ CCUnitTestCase* ccunit_addNewTestCase (CCUnitTestFixture* fixture, /* * Runs the bare test sequence. * - * @throws _ccunit_run_env + * @return failure */ -static void runTest (CCUnitTestCase* testCase, - CCUnitTestFunc* setUp, - CCUnitTestFunc* tearDown, - CCUnitTestResult* result) +static CCUnitTestFailure* runTest (CCUnitTestCase* testCase, + CCUnitTestFunc* setUp, + CCUnitTestFunc* tearDown, + CCUnitTestResult* result) { - int failure = 0; - int runFailure = 0; + CCUnitTestFailure* runFailure = NULL; if (setUp && setUp->runTest) { - if ((failure = setjmp (_ccunit_runTest_env)) == 0) + if (setjmp (_ccunit_runTest_env) == 0) setUp->runTest (); else { - ((CCUnitTestFailure*)failure)->testCase = setUp; - longjmp (_ccunit_run_env, failure); + _ccunit_testFailure->testCase = setUp; + return _ccunit_testFailure; } } - if ((runFailure = setjmp (_ccunit_runTest_env)) == 0) + if (setjmp (_ccunit_runTest_env) == 0) { result->runCount ++; testCase->runTest (); } else - ((CCUnitTestFailure*)runFailure)->testCase = testCase; + { + runFailure = _ccunit_testFailure; + runFailure->testCase = testCase; + } if (tearDown && tearDown->runTest) { - if ((failure = setjmp (_ccunit_runTest_env)) == 0) + if (setjmp (_ccunit_runTest_env) == 0) tearDown->runTest (); else { - ((CCUnitTestFailure*)failure)->testCase = tearDown; - ccunit_addFailure (result, (CCUnitTestFailure*)failure); + _ccunit_testFailure->testCase = tearDown; + ccunit_addFailure (result, _ccunit_testFailure); } } - if (runFailure) - longjmp (_ccunit_run_env, runFailure); + return runFailure; } /** @@ -118,18 +119,17 @@ static void runTest (CCUnitTestCase* testCase, static void run (CCUnitTest* test, CCUnitTestResult* result) { CCUnitTestFixture* fixture = (CCUnitTestFixture*)test; - int failure = 0; CCUnitListIterator itor; CCUnitTestCase* testCase; assert (test->type == ccunitTypeFixture); ccunit_initListIterator (&fixture->testCases, &itor); while ((testCase = ccunit_nextListIterator (&itor)) != NULL) { + CCUnitTestFailure* failure = NULL; _ccunit_startTest (result, testCase); - if ((failure = setjmp (_ccunit_run_env)) == 0) - runTest (testCase, fixture->setUp, fixture->tearDown, result); - else - ccunit_addFailure (result, (CCUnitTestFailure*)failure); + failure = runTest (testCase, fixture->setUp, fixture->tearDown, result); + if (failure) + ccunit_addFailure (result, failure); _ccunit_endTest (result, testCase); } } @@ -143,7 +143,7 @@ static void destroy (CCUnitTest* test) CCUnitTestFixture* fixture; assert (test->type == ccunitTypeFixture); fixture = (CCUnitTestFixture*)test; - safe_free ((char*)fixture->name); + safe_free (fixture->name); ccunit_deleteTestFunc (fixture->setUp); ccunit_deleteTestFunc (fixture->tearDown); ccunit_deleteList (&fixture->testCases, -- 2.11.0