added cmocka version

This commit is contained in:
Typist committed 2023-11-08 12:38:42 +00:00
1 parent 3da2d5e046
commit a2758b2183
12 files changed
+285

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
set(TEST_NAME test-cmocka)
include(FetchContent)
FetchContent_Declare(
cmocka
GIT_REPOSITORY https://git.cryptomilk.org/projects/cmocka.git
GIT_TAG cmocka-1.1.5
GIT_SHALLOW 1
)
set(WITH_STATIC_LIB ON CACHE BOOL "CMocka: Build with a static library" FORCE)
set(WITH_CMOCKERY_SUPPORT OFF CACHE BOOL "CMocka: Install a cmockery header" FORCE)
set(WITH_EXAMPLES OFF CACHE BOOL "CMocka: Build examples" FORCE)
set(UNIT_TESTING OFF CACHE BOOL "CMocka: Build with unit testing" FORCE)
set(PICKY_DEVELOPER OFF CACHE BOOL "CMocka: Build with picky developer flags" FORCE)
FetchContent_MakeAvailable(cmocka)
function(ADD_CMOCKA_TEST_ENVIRONMENT _TARGET_NAME)
if (WIN32 OR CYGWIN OR MINGW OR MSVC)
file(TO_NATIVE_PATH "${cmocka-library_BINARY_DIR}" CMOCKA_DLL_PATH)
if (TARGET_SYSTEM_EMULATOR)
set(DLL_PATH_ENV "WINEPATH=${CMOCKA_DLL_PATH};$ENV{WINEPATH}")
else ()
set(DLL_PATH_ENV "PATH=${CMOCKA_DLL_PATH}\\${CMAKE_BUILD_TYPE};$ENV{PATH}")
endif ()
#
# IMPORTANT NOTE: The set_tests_properties(), below, internally
# stores its name/value pairs with a semicolon delimiter.
# because of this we must protect the semicolons in the path
#
string(REPLACE ";" "\\;" DLL_PATH_ENV "${DLL_PATH_ENV}")
set_tests_properties(${_TARGET_NAME}
PROPERTIES
ENVIRONMENT
"${DLL_PATH_ENV}")
endif ()
endfunction()
add_subdirectory(sample_test)
@@ -0,0 +1,6 @@
project(sample-cmocka C)
add_cmocka_test(sample_test
SOURCES sample_test.c
LINK_LIBRARIES src cmocka-static)
add_cmocka_test_environment(add_test)
@@ -0,0 +1,24 @@
#include <stdarg.h>
#include <setjmp.h>
#include <stddef.h>
#include "cmocka.h"
#include "GildedRose.h"
static void test_rose(void **state)
{
Item items[1];
init_item(items, "foo", 0, 0);
update_quality(items, 1);
assert_string_equal("fixme", items[0].name);
}
int main(void) {
const struct CMUnitTest tests[] =
{
cmocka_unit_test(test_rose),
};
return cmocka_run_group_tests(tests, NULL, NULL);
}