From b06a5f7c3dd057a4694c558ae7c9dbd78d9fc170 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 25 Mar 2024 20:26:47 +0100 Subject: [PATCH] fix busy device error --- src/kds_s2000w_handler.c | 5 +---- tests/kds_s2000w_net_tests.c | 24 ++++++++++++++++++++++++ tests/kds_s2000w_net_tests.h | 1 + tests/kds_s2000w_net_tests_run.c | 9 +++++---- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 3f9c672..b83bcba 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -323,11 +323,8 @@ void kds_s2000w_handler_open(const char* devicename, void** handle) return; } - if (resp->code == 423) { - kds_s2000w_client_response_free(resp); - resp = NULL; + if (resp->code == 423) h->state = BUSY; - } if (resp->code == 200) { h->current_scanner_config = json_tokener_parse(resp->data); diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index d33b25b..ccceb5a 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -912,6 +912,30 @@ void sane_kds_s2000w_net_open() assert_int_equal(h->sessionid, 1251877821); assert_int_equal(status, SANE_STATUS_GOOD); + free_handler(h); + h = NULL; + kds_s2000w_client_response_free(resp); + resp = NULL; + free(hlist); + hlist = NULL; +} + +void sane_kds_s2000w_net_open_busy_device() +{ + response* resp = kds_s2000w_client_response_init(); + resp->code = 423; + will_return(mock_response, resp); + will_return(__wrap_kds_s2000w_client_open_session, 0); + expect_function_call(__wrap_kds_s2000w_client_open_session); + void** hlist = malloc(sizeof(void*)); + + SANE_Status status = _sane_kds_s2000w_net_open("kds_s2000w_net", hlist); + handler* h = (handler*) *hlist; + + assert_int_equal(h->sessionid, 0); + assert_int_equal(h->state, BUSY); + assert_int_equal(status, SANE_STATUS_DEVICE_BUSY); + free_handler(h); h = NULL; kds_s2000w_client_response_free(resp); diff --git a/tests/kds_s2000w_net_tests.h b/tests/kds_s2000w_net_tests.h index 61b997c..e00bfd3 100644 --- a/tests/kds_s2000w_net_tests.h +++ b/tests/kds_s2000w_net_tests.h @@ -41,5 +41,6 @@ void sane_kds_s2000w_net_start_two_pages_per_feeder(void** state); void sane_kds_s2000w_net_get_parameter_cancel(); void sane_kds_s2000w_net_cancel(); void sane_kds_s2000w_net_open(); +void sane_kds_s2000w_net_open_busy_device(); #endif \ No newline at end of file diff --git a/tests/kds_s2000w_net_tests_run.c b/tests/kds_s2000w_net_tests_run.c index f3a7959..d286f87 100644 --- a/tests/kds_s2000w_net_tests_run.c +++ b/tests/kds_s2000w_net_tests_run.c @@ -126,13 +126,14 @@ int main() cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_control_get_option_twentyone, setup_default_get_option, teardown_default_get_option), cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_control_get_option_twentytwo, setup_default_get_option, teardown_default_get_option), cmocka_unit_test(sane_kds_s2000w_net_start_cancel), + cmocka_unit_test(sane_kds_s2000w_net_get_parameter_cancel), + cmocka_unit_test(sane_kds_s2000w_net_cancel), + cmocka_unit_test(sane_kds_s2000w_net_open), + cmocka_unit_test(sane_kds_s2000w_net_open_busy_device), cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start, setup_net_start, teardown_net_start), cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_one_page_per_flatscan, setup_net_start, teardown_net_start), cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_one_page_per_feeder, setup_net_start, teardown_net_start), - cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_two_pages_per_feeder, setup_net_start, teardown_net_start), - cmocka_unit_test(sane_kds_s2000w_net_get_parameter_cancel), - cmocka_unit_test(sane_kds_s2000w_net_cancel), - cmocka_unit_test(sane_kds_s2000w_net_open) + cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_two_pages_per_feeder, setup_net_start, teardown_net_start) }; return cmocka_run_group_tests(net_tests, NULL, NULL); -- 2.39.5