mirror of
https://github.com/ennorehling/cutest.git
synced 2024-12-21 23:52:20 +00:00
fix memory leak in CuTest when a test fails
This commit is contained in:
parent
6e268687db
commit
0fe17b4c0f
7
CuTest.c
7
CuTest.c
@ -129,6 +129,7 @@ CuTest* CuTestNew(const char* name, TestFunction function)
|
||||
void CuTestDelete(CuTest *t)
|
||||
{
|
||||
if (!t) return;
|
||||
CuStringDelete(t->message);
|
||||
free(t->name);
|
||||
free(t);
|
||||
}
|
||||
@ -153,7 +154,9 @@ static void CuFailInternal(CuTest* tc, const char* file, int line, CuString* str
|
||||
CuStringInsert(string, buf, 0);
|
||||
|
||||
tc->failed = 1;
|
||||
tc->message = string->buffer;
|
||||
free(tc->message);
|
||||
tc->message = CuStringNew();
|
||||
CuStringAppend(tc->message, string->buffer);
|
||||
if (tc->jumpBuf != 0) longjmp(*(tc->jumpBuf), 0);
|
||||
}
|
||||
|
||||
@ -327,7 +330,7 @@ void CuSuiteDetails(CuSuite* testSuite, CuString* details)
|
||||
{
|
||||
failCount++;
|
||||
CuStringAppendFormat(details, "%d) %s: %s\n",
|
||||
failCount, testCase->name, testCase->message);
|
||||
failCount, testCase->name, testCase->message->buffer);
|
||||
}
|
||||
}
|
||||
CuStringAppend(details, "\n!!!FAILURES!!!\n");
|
||||
|
4
CuTest.h
4
CuTest.h
@ -4,7 +4,7 @@
|
||||
#include <setjmp.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#define CUTEST_VERSION "CuTest 1.5"
|
||||
#define CUTEST_VERSION "CuTest 1.5b"
|
||||
|
||||
/* CuString */
|
||||
|
||||
@ -46,7 +46,7 @@ struct CuTest
|
||||
TestFunction function;
|
||||
int failed;
|
||||
int ran;
|
||||
const char* message;
|
||||
CuString *message;
|
||||
jmp_buf *jumpBuf;
|
||||
};
|
||||
|
||||
|
14
CuTestTest.c
14
CuTestTest.c
@ -12,17 +12,17 @@
|
||||
|
||||
#define CompareAsserts(tc, message, expected, actual) X_CompareAsserts((tc), __FILE__, __LINE__, (message), (expected), (actual))
|
||||
|
||||
static void X_CompareAsserts(CuTest* tc, const char *file, int line, const char* message, const char* expected, const char* actual)
|
||||
static void X_CompareAsserts(CuTest* tc, const char *file, int line, const char* message, const char* expected, CuString *actual)
|
||||
{
|
||||
int mismatch;
|
||||
if (expected == NULL || actual == NULL) {
|
||||
if (expected == NULL || actual == NULL || actual==NULL) {
|
||||
mismatch = (expected != NULL || actual != NULL);
|
||||
} else {
|
||||
const char *front = __FILE__ ":";
|
||||
const size_t frontLen = strlen(front);
|
||||
const size_t expectedLen = strlen(expected);
|
||||
|
||||
const char *matchStr = actual;
|
||||
const char *matchStr = actual->buffer;
|
||||
|
||||
mismatch = (strncmp(matchStr, front, frontLen) != 0);
|
||||
if (!mismatch) {
|
||||
@ -200,7 +200,7 @@ void TestCuAssertPtrEquals_Success(CuTest* tc)
|
||||
/* test success case */
|
||||
CuAssertPtrEquals(&tc2, &x, &x);
|
||||
CuAssertTrue(tc, ! tc2.failed);
|
||||
CuAssertTrue(tc, NULL == tc2.message);
|
||||
CuAssertTrue(tc, tc2.message == NULL);
|
||||
}
|
||||
|
||||
void TestCuAssertPtrEquals_Failure(CuTest* tc)
|
||||
@ -229,7 +229,7 @@ void TestCuAssertPtrNotNull_Success(CuTest* tc)
|
||||
/* test success case */
|
||||
CuAssertPtrNotNull(&tc2, &x);
|
||||
CuAssertTrue(tc, ! tc2.failed);
|
||||
CuAssertTrue(tc, NULL == tc2.message);
|
||||
CuAssertTrue(tc, tc2.message == NULL);
|
||||
}
|
||||
|
||||
void TestCuAssertPtrNotNull_Failure(CuTest* tc)
|
||||
@ -645,11 +645,11 @@ void TestAssertDblEquals(CuTest* tc)
|
||||
|
||||
CuAssertDblEquals(tc2, x, x, 0.0);
|
||||
CuAssertTrue(tc, ! tc2->failed);
|
||||
CuAssertTrue(tc, NULL == tc2->message);
|
||||
CuAssertTrue(tc, tc2->message == NULL);
|
||||
|
||||
CuAssertDblEquals(tc2, x, y, 0.01);
|
||||
CuAssertTrue(tc, ! tc2->failed);
|
||||
CuAssertTrue(tc, NULL == tc2->message);
|
||||
CuAssertTrue(tc, tc2->message == NULL);
|
||||
|
||||
tc2->jumpBuf = &buf;
|
||||
if (setjmp(buf) == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user