From: Bastian Dehn Date: Sun, 9 Nov 2025 15:22:46 +0000 (+0100) Subject: add load config test io error X-Git-Tag: v1.1.21^2~10 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=58772f13cab85e3492e1fc37e40dda56d2b7ec7c;p=sane-kds-s2000w-net.git add load config test io error --- diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index 06d0276..45d06ac 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -17,7 +17,8 @@ enum { enum { GOOD = 0, - INVAL = 4 + INVAL = 4, + IO_ERROR = 9 }; void _kds_s2000w_handler_opts_write_value_to_json(json_object* value_object, SANE_Value_Type value_type, void* value) @@ -193,6 +194,9 @@ void _kds_s2000w_handler_opts_load_config(handler_t* h) return; _kds_s2000w_handler_opts_load_options(h); + if (h->scanner_config == NULL) + return; + _kds_s2000w_handler_opts_set_autostart_on(h->scanner_config); _kds_s2000w_handler_opts_set_options(h); } @@ -541,6 +545,8 @@ void _kds_s2000w_handler_opts_set_depends_opts(const handler_t* h, int32_t kds_s2000w_handler_opts_get_option(handler_t* h, uint32_t option, void* value, int32_t* info) { _kds_s2000w_handler_opts_load_config(h); + if (h->scanner_config == NULL) + return IO_ERROR; option_descriptor_t* descriptor = kds_s2000w_option_descriptors_full_get_by_number(option); if (strcmp(descriptor->config_name, OPTION_COUNT) == 0) @@ -569,6 +575,9 @@ int32_t kds_s2000w_handler_opts_set_option(handler_t* h, uint32_t option, void* return GOOD; _kds_s2000w_handler_opts_load_config(h); + if (h->scanner_config == NULL) + return IO_ERROR; + option_descriptor_t* descriptor = kds_s2000w_option_descriptors_full_get_by_number(option); json_object* value_object = json_object_object_get(h->scanner_config, descriptor->config_name); diff --git a/tests/kds_s2000w_net_get_opt_tests.c b/tests/kds_s2000w_net_get_opt_tests.c index 6de0aff..126fb7e 100644 --- a/tests/kds_s2000w_net_get_opt_tests.c +++ b/tests/kds_s2000w_net_get_opt_tests.c @@ -953,6 +953,46 @@ void sane_kds_s2000w_net_control_get_option_fourtyseven_test(void** state) h = NULL; } +void sane_kds_s2000w_net_could_not_load_options_by_get(void** state) +{ + handler_t* h = kds_s2000w_handler_init(); + response_t* resp = kds_s2000w_client_response_init(); + resp->code = 400; + + will_return(mock_response, resp); + will_return(__wrap_kds_s2000w_client_get_option, 0); + expect_function_call(__wrap_kds_s2000w_client_get_option); + + SANE_Status status = sane_kds_s2000w_net_control_option(h, 5, SANE_ACTION_GET_VALUE, NULL, NULL); + + assert_int_equal(status, SANE_STATUS_IO_ERROR); + + kds_s2000w_handler_free(h); + h = NULL; + kds_s2000w_client_response_free(resp); + resp = NULL; +} + +void sane_kds_s2000w_net_could_not_load_options_by_set(void** state) +{ + handler_t* h = kds_s2000w_handler_init(); + response_t* resp = kds_s2000w_client_response_init(); + resp->code = 400; + + will_return(mock_response, resp); + will_return(__wrap_kds_s2000w_client_get_option, 0); + expect_function_call(__wrap_kds_s2000w_client_get_option); + + SANE_Status status = sane_kds_s2000w_net_control_option(h, 5, SANE_ACTION_SET_VALUE, NULL, NULL); + + assert_int_equal(status, SANE_STATUS_IO_ERROR); + + kds_s2000w_handler_free(h); + h = NULL; + kds_s2000w_client_response_free(resp); + resp = NULL; +} + int main() { const struct CMUnitTest net_tests[] = { @@ -996,7 +1036,9 @@ int main() cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtyfour_test), cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtyfive_test), cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtysix_test), - cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtyseven_test) + cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtyseven_test), + cmocka_unit_test(sane_kds_s2000w_net_could_not_load_options_by_get), + cmocka_unit_test(sane_kds_s2000w_net_could_not_load_options_by_set) }; return cmocka_run_group_tests(net_tests, setup, teardown);