]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add malloc mock
authorBastian Dehn <hhaalo@arcor.de>
Thu, 30 Oct 2025 16:48:28 +0000 (17:48 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 30 Oct 2025 16:48:28 +0000 (17:48 +0100)
CMakeLists.txt
tests/CMakeLists.txt
tests/kds_s2000w_client_mock.c
tests/kds_s2000w_client_mock.h

index 09d684a2b9e52543e717e367d098412e37dcd7c4..ec9c268dc7e64542dbb8958179926371290d800b 100644 (file)
@@ -25,7 +25,8 @@ IF (RUN_TESTS)
 -pedantic \
 -g \
 -fsanitize=address \
--Wl,--wrap,kds_s2000w_client_init,\
+-Wl,--wrap,malloc,\
+--wrap,kds_s2000w_client_init,\
 --wrap,kds_s2000w_client_free,\
 --wrap,kds_s2000w_client_open_session,\
 --wrap,kds_s2000w_client_close_session,\
index 388b4b223b8d187d5a77ab28b5a9cefae3a13e53..1377332355eff3a006971ac35d495d3b829a86a4 100644 (file)
@@ -63,14 +63,16 @@ TARGET_LINK_LIBRARIES("kds_s2000w_option_descriptor_tests"
        sane-kds_s2000w_net-static)
 
 ADD_EXECUTABLE("kds_s2000w_image_type_check_tests"
-       "kds_s2000w_image_type_check_tests.c")
+       "kds_s2000w_image_type_check_tests.c"
+       "kds_s2000w_client_mock.c")
 ADD_DEPENDENCIES("kds_s2000w_image_type_check_tests" sane-kds_s2000w_net-static)
 TARGET_LINK_LIBRARIES("kds_s2000w_image_type_check_tests"
        ${CMOCKA_LIBRARY}
        sane-kds_s2000w_net-static)
 
 ADD_EXECUTABLE("kds_s2000w_pixel_converter_tests"
-       "kds_s2000w_pixel_converter_tests.c")
+       "kds_s2000w_pixel_converter_tests.c"
+       "kds_s2000w_client_mock.c")
 ADD_DEPENDENCIES("kds_s2000w_pixel_converter_tests" sane-kds_s2000w_net-static)
 TARGET_LINK_LIBRARIES("kds_s2000w_pixel_converter_tests"
        ${CMOCKA_LIBRARY}
index 73a8074a844c3bfeff21142e562c68f8926faa6f..1f515737c18ae83e2628882b8212dad24dca149b 100644 (file)
@@ -4,6 +4,26 @@
 #include <unistd.h>
 #include "kds_s2000w_client_mock.h"
 
+extern void* __real_malloc(size_t size);
+int8_t mock_no_mem_counter = -1;
+
+void set_no_mem_counter(int8_t counter)
+{
+       mock_no_mem_counter = counter;
+}
+
+void* __wrap_malloc(size_t size)
+{
+       if (mock_no_mem_counter < 0)
+               return __real_malloc(size);
+
+       mock_no_mem_counter--;
+       if (mock_no_mem_counter < 0)
+               return NULL;
+       
+       return __real_malloc(size);
+}
+
 void mock_response(response_t* resp)
 {
        const response_t* mock_resp = mock_type(response_t*);
index f1eeceb8de431bf4020179ef337d4fa2052c5dc5..aa91e4f18cd7f11947212cb607897b456c93a5aa 100644 (file)
@@ -8,6 +8,9 @@
 #include "../src/kds_s2000w_client.h"
 #include "../src/kds_s2000w_image_converter.h"
 
+void set_no_mem_counter(int8_t counter);
+void* __wrap_malloc(size_t size);
+
 void mock_response(response_t* resp);
 
 void __wrap_kds_s2000w_client_init(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat);