mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2025-06-25 18:57:58 +08:00
Fix C89 warnings about variables at top of scope, enums, variadic macros
Add extern UnityFixture in internals header. Add C89 target in Makefile clang will show these warnings but can suppress "//" with -Wno-comment.
This commit is contained in:
@ -15,6 +15,7 @@ struct _UnityFixture
|
||||
const char* NameFilter;
|
||||
const char* GroupFilter;
|
||||
};
|
||||
extern struct _UnityFixture UnityFixture;
|
||||
|
||||
typedef void unityfunction(void);
|
||||
void UnityTestRunner(unityfunction* setup,
|
||||
|
@ -34,6 +34,11 @@ noStdlibMalloc: ../build/
|
||||
@ echo "build with noStdlibMalloc"
|
||||
./$(TARGET)
|
||||
|
||||
clang89: ../build/
|
||||
clang $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m32 -std=c89 -Wno-comment
|
||||
clang $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m32 \
|
||||
-D UNITY_EXCLUDE_STDLIB_MALLOC -std=c89 -Wno-comment ; ./$(TARGET)
|
||||
|
||||
clangEverything:
|
||||
clang $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m64 -Weverything
|
||||
|
||||
@ -56,5 +61,6 @@ CFLAGS += -Wstrict-overflow=5
|
||||
CFLAGS += -Wstrict-prototypes
|
||||
CFLAGS += -Wswitch-default
|
||||
CFLAGS += -Wundef
|
||||
CFLAGS += -Wno-error=undef # Warning only, this should not stop the build
|
||||
CFLAGS += -Wunused
|
||||
CFLAGS += -fstrict-aliasing
|
||||
|
@ -10,8 +10,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
extern struct _UnityFixture UnityFixture;
|
||||
|
||||
TEST_GROUP(UnityFixture);
|
||||
|
||||
TEST_SETUP(UnityFixture)
|
||||
@ -314,6 +312,9 @@ TEST_TEAR_DOWN(LeakDetection)
|
||||
}
|
||||
|
||||
// This tricky set of defines lets us see if we are using the Spy, returns 1 if true
|
||||
#ifdef __STDC_VERSION__
|
||||
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
#define USING_SPY_AS(a) EXPAND_AND_USE_2ND(ASSIGN_VALUE(a), 0)
|
||||
#define ASSIGN_VALUE(a) VAL_##a
|
||||
#define VAL_UnityOutputCharSpy_OutputChar 0, 1
|
||||
@ -322,6 +323,16 @@ TEST_TEAR_DOWN(LeakDetection)
|
||||
#if USING_SPY_AS(UNITY_OUTPUT_CHAR)
|
||||
#define USING_OUTPUT_SPY // UNITY_OUTPUT_CHAR = UnityOutputCharSpy_OutputChar
|
||||
#endif
|
||||
#endif // >= 199901
|
||||
|
||||
#else // __STDC_VERSION__ else
|
||||
#define UnityOutputCharSpy_OutputChar 42
|
||||
#if UNITY_OUTPUT_CHAR == UnityOutputCharSpy_OutputChar // Works if no -Wundef -Werror
|
||||
#define USING_OUTPUT_SPY
|
||||
#endif
|
||||
#undef UnityOutputCharSpy_OutputChar
|
||||
#endif // __STDC_VERSION__
|
||||
|
||||
TEST(LeakDetection, DetectsLeak)
|
||||
{
|
||||
#ifndef USING_OUTPUT_SPY
|
||||
@ -347,8 +358,8 @@ TEST(LeakDetection, BufferOverrunFoundDuringFree)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
void* m = malloc(10);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
char* s = (char*)m;
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
s[10] = (char)0xFF;
|
||||
UnityOutputCharSpy_Enable(1);
|
||||
EXPECT_ABORT_BEGIN
|
||||
@ -367,8 +378,8 @@ TEST(LeakDetection, BufferOverrunFoundDuringRealloc)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
void* m = malloc(10);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
char* s = (char*)m;
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
s[10] = (char)0xFF;
|
||||
UnityOutputCharSpy_Enable(1);
|
||||
EXPECT_ABORT_BEGIN
|
||||
@ -387,8 +398,8 @@ TEST(LeakDetection, BufferGuardWriteFoundDuringFree)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
void* m = malloc(10);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
char* s = (char*)m;
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
s[-1] = (char)0x00; // Will not detect 0
|
||||
s[-2] = (char)0x01;
|
||||
UnityOutputCharSpy_Enable(1);
|
||||
@ -408,8 +419,8 @@ TEST(LeakDetection, BufferGuardWriteFoundDuringRealloc)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
void* m = malloc(10);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
char* s = (char*)m;
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
s[-1] = (char)0x0A;
|
||||
UnityOutputCharSpy_Enable(1);
|
||||
EXPECT_ABORT_BEGIN
|
||||
@ -450,8 +461,8 @@ TEST(InternalMalloc, MallocPastBufferFails)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
||||
void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
void* n = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
TEST_ASSERT_NULL(n);
|
||||
free(m);
|
||||
#endif
|
||||
@ -461,8 +472,8 @@ TEST(InternalMalloc, CallocPastBufferFails)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
||||
void* m = calloc(1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
void* n = calloc(1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
TEST_ASSERT_NULL(n);
|
||||
free(m);
|
||||
#endif
|
||||
@ -472,8 +483,8 @@ TEST(InternalMalloc, MallocThenReallocGrowsMemoryInPlace)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
||||
void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
void* n = realloc(m, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 9);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
TEST_ASSERT_EQUAL(m, n);
|
||||
free(n);
|
||||
#endif
|
||||
@ -483,11 +494,11 @@ TEST(InternalMalloc, ReallocFailDoesNotFreeMem)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
||||
void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
void* n1 = malloc(10);
|
||||
void* out_of_mem = realloc(n1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
|
||||
TEST_ASSERT_NULL(out_of_mem);
|
||||
void* n2 = malloc(10);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
TEST_ASSERT_NULL(out_of_mem);
|
||||
TEST_ASSERT_NOT_EQUAL(n2, n1);
|
||||
free(n2);
|
||||
free(n1);
|
||||
|
@ -396,7 +396,7 @@ typedef enum _UNITY_FLOAT_TRAIT_T
|
||||
UNITY_FLOAT_IS_NOT_NAN,
|
||||
UNITY_FLOAT_IS_NAN,
|
||||
UNITY_FLOAT_IS_NOT_DET,
|
||||
UNITY_FLOAT_IS_DET,
|
||||
UNITY_FLOAT_IS_DET
|
||||
} UNITY_FLOAT_TRAIT_T;
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user