mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2025-06-26 03:17:59 +08:00
Merge pull request #178 from jsalling/feature/coverage-fixture
100% code coverage for Unity Fixture
This commit is contained in:
@ -1,4 +1,7 @@
|
|||||||
CC = gcc
|
CC = gcc
|
||||||
|
ifeq ($(shell uname -s), Darwin)
|
||||||
|
CC = clang
|
||||||
|
endif
|
||||||
#DEBUG = -O0 -g
|
#DEBUG = -O0 -g
|
||||||
CFLAGS += -std=c99
|
CFLAGS += -std=c99
|
||||||
CFLAGS += -pedantic
|
CFLAGS += -pedantic
|
||||||
@ -15,21 +18,22 @@ SRC = ../src/unity_fixture.c \
|
|||||||
main/AllTests.c
|
main/AllTests.c
|
||||||
|
|
||||||
INC_DIR = -I../src -I../../../src/
|
INC_DIR = -I../src -I../../../src/
|
||||||
|
BUILD_DIR = ../build
|
||||||
TARGET = ../build/fixture_tests.exe
|
TARGET = ../build/fixture_tests.exe
|
||||||
|
|
||||||
all: default noStdlibMalloc 32bits
|
all: default noStdlibMalloc 32bits
|
||||||
|
|
||||||
default: ../build/
|
default: $(BUILD_DIR)
|
||||||
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET)
|
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_SUPPORT_64
|
||||||
@ echo "default build"
|
@ echo "default build"
|
||||||
./$(TARGET)
|
./$(TARGET)
|
||||||
|
|
||||||
32bits: ../build/
|
32bits: $(BUILD_DIR)
|
||||||
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m32
|
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m32
|
||||||
@ echo "32bits build"
|
@ echo "32bits build"
|
||||||
./$(TARGET)
|
./$(TARGET)
|
||||||
|
|
||||||
noStdlibMalloc: ../build/
|
noStdlibMalloc: $(BUILD_DIR)
|
||||||
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_EXCLUDE_STDLIB_MALLOC
|
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_EXCLUDE_STDLIB_MALLOC
|
||||||
@ echo "build with noStdlibMalloc"
|
@ echo "build with noStdlibMalloc"
|
||||||
./$(TARGET)
|
./$(TARGET)
|
||||||
@ -40,13 +44,22 @@ clang89: ../build/
|
|||||||
-D UNITY_EXCLUDE_STDLIB_MALLOC -std=c89 -Wno-comment ; ./$(TARGET)
|
-D UNITY_EXCLUDE_STDLIB_MALLOC -std=c89 -Wno-comment ; ./$(TARGET)
|
||||||
|
|
||||||
clangEverything:
|
clangEverything:
|
||||||
clang $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m64 -Weverything
|
clang $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -Weverything
|
||||||
|
|
||||||
../build :
|
$(BUILD_DIR):
|
||||||
mkdir -p ../build
|
mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(TARGET)
|
rm -f $(TARGET) $(BUILD_DIR)/*.gc*
|
||||||
|
|
||||||
|
coverage: $(BUILD_DIR)
|
||||||
|
cd $(BUILD_DIR) && \
|
||||||
|
$(CC) $(DEFINES) $(foreach i, $(SRC), ../test/$(i)) $(INC_DIR) -o $(TARGET) -fprofile-arcs -ftest-coverage
|
||||||
|
rm -f $(BUILD_DIR)/*.gcda
|
||||||
|
./$(TARGET) > /dev/null ; ./$(TARGET) -v > /dev/null
|
||||||
|
cd $(BUILD_DIR) && \
|
||||||
|
gcov unity_fixture.c | head -3
|
||||||
|
grep '###' $(BUILD_DIR)/unity_fixture.c.gcov -C2 || true # Show uncovered lines
|
||||||
|
|
||||||
# These extended flags DO get included before any target build runs
|
# These extended flags DO get included before any target build runs
|
||||||
CFLAGS += -Wbad-function-cast
|
CFLAGS += -Wbad-function-cast
|
||||||
@ -62,5 +75,6 @@ CFLAGS += -Wstrict-prototypes
|
|||||||
CFLAGS += -Wswitch-default
|
CFLAGS += -Wswitch-default
|
||||||
CFLAGS += -Wundef
|
CFLAGS += -Wundef
|
||||||
CFLAGS += -Wno-error=undef # Warning only, this should not stop the build
|
CFLAGS += -Wno-error=undef # Warning only, this should not stop the build
|
||||||
|
CFLAGS += -Wunreachable-code
|
||||||
CFLAGS += -Wunused
|
CFLAGS += -Wunused
|
||||||
CFLAGS += -fstrict-aliasing
|
CFLAGS += -fstrict-aliasing
|
||||||
|
@ -136,6 +136,22 @@ TEST(UnityFixture, FreeNULLSafety)
|
|||||||
free(NULL);
|
free(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(UnityFixture, ConcludeTestIncrementsFailCount)
|
||||||
|
{
|
||||||
|
_U_UINT savedFails = Unity.TestFailures;
|
||||||
|
_U_UINT savedIgnores = Unity.TestIgnores;
|
||||||
|
UnityOutputCharSpy_Enable(1);
|
||||||
|
Unity.CurrentTestFailed = 1;
|
||||||
|
UnityConcludeFixtureTest(); // Resets TestFailed for this test to pass
|
||||||
|
Unity.CurrentTestIgnored = 1;
|
||||||
|
UnityConcludeFixtureTest(); // Resets TestIgnored
|
||||||
|
UnityOutputCharSpy_Enable(0);
|
||||||
|
TEST_ASSERT_EQUAL(savedFails + 1, Unity.TestFailures);
|
||||||
|
TEST_ASSERT_EQUAL(savedIgnores + 1, Unity.TestIgnores);
|
||||||
|
Unity.TestFailures = savedFails;
|
||||||
|
Unity.TestIgnores = savedIgnores;
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------
|
//------------------------------------------------------------
|
||||||
|
|
||||||
TEST_GROUP(UnityCommandOptions);
|
TEST_GROUP(UnityCommandOptions);
|
||||||
@ -276,6 +292,21 @@ TEST(UnityCommandOptions, UnknownCommandIsIgnored)
|
|||||||
TEST_ASSERT_EQUAL(98, UnityFixture.RepeatCount);
|
TEST_ASSERT_EQUAL(98, UnityFixture.RepeatCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(UnityCommandOptions, GroupOrNameFilterWithoutStringFails)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL(1, UnityGetCommandLineOptions(3, unknownCommand));
|
||||||
|
TEST_ASSERT_EQUAL(1, UnityGetCommandLineOptions(5, unknownCommand));
|
||||||
|
TEST_ASSERT_EQUAL(1, UnityMain(3, unknownCommand, NULL));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(UnityCommandOptions, GroupFilterReallyFilters)
|
||||||
|
{
|
||||||
|
_U_UINT saved = Unity.NumberOfTests;
|
||||||
|
TEST_ASSERT_EQUAL(0, UnityGetCommandLineOptions(4, unknownCommand));
|
||||||
|
UnityIgnoreTest(NULL, "non-matching", NULL);
|
||||||
|
TEST_ASSERT_EQUAL(saved, Unity.NumberOfTests);
|
||||||
|
}
|
||||||
|
|
||||||
IGNORE_TEST(UnityCommandOptions, TestShouldBeIgnored)
|
IGNORE_TEST(UnityCommandOptions, TestShouldBeIgnored)
|
||||||
{
|
{
|
||||||
TEST_FAIL_MESSAGE("This test should not run!");
|
TEST_FAIL_MESSAGE("This test should not run!");
|
||||||
|
@ -19,6 +19,7 @@ TEST_GROUP_RUNNER(UnityFixture)
|
|||||||
RUN_TEST_CASE(UnityFixture, CallocFillsWithZero);
|
RUN_TEST_CASE(UnityFixture, CallocFillsWithZero);
|
||||||
RUN_TEST_CASE(UnityFixture, PointerSet);
|
RUN_TEST_CASE(UnityFixture, PointerSet);
|
||||||
RUN_TEST_CASE(UnityFixture, FreeNULLSafety);
|
RUN_TEST_CASE(UnityFixture, FreeNULLSafety);
|
||||||
|
RUN_TEST_CASE(UnityFixture, ConcludeTestIncrementsFailCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_GROUP_RUNNER(UnityCommandOptions)
|
TEST_GROUP_RUNNER(UnityCommandOptions)
|
||||||
@ -32,6 +33,8 @@ TEST_GROUP_RUNNER(UnityCommandOptions)
|
|||||||
RUN_TEST_CASE(UnityCommandOptions, MultipleOptions);
|
RUN_TEST_CASE(UnityCommandOptions, MultipleOptions);
|
||||||
RUN_TEST_CASE(UnityCommandOptions, MultipleOptionsDashRNotLastAndNoValueSpecified);
|
RUN_TEST_CASE(UnityCommandOptions, MultipleOptionsDashRNotLastAndNoValueSpecified);
|
||||||
RUN_TEST_CASE(UnityCommandOptions, UnknownCommandIsIgnored);
|
RUN_TEST_CASE(UnityCommandOptions, UnknownCommandIsIgnored);
|
||||||
|
RUN_TEST_CASE(UnityCommandOptions, GroupOrNameFilterWithoutStringFails);
|
||||||
|
RUN_TEST_CASE(UnityCommandOptions, GroupFilterReallyFilters);
|
||||||
RUN_TEST_CASE(UnityCommandOptions, TestShouldBeIgnored);
|
RUN_TEST_CASE(UnityCommandOptions, TestShouldBeIgnored);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ static int spy_enable;
|
|||||||
|
|
||||||
void UnityOutputCharSpy_Create(int s)
|
void UnityOutputCharSpy_Create(int s)
|
||||||
{
|
{
|
||||||
size = s;
|
size = (s > 0) ? s : 0;
|
||||||
count = 0;
|
count = 0;
|
||||||
spy_enable = 0;
|
spy_enable = 0;
|
||||||
buffer = malloc((size_t)size);
|
buffer = malloc((size_t)size);
|
||||||
|
Reference in New Issue
Block a user