From d7bfbebad61cdaaff0fc664bf6d1a8766438e724 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Fri, 2 Feb 2024 14:55:58 +0100 Subject: [PATCH] tests:client: Add test for exit_status Signed-off-by: Andreas Schneider Reviewed-by: Jakub Jelen --- tests/client/torture_session.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/client/torture_session.c b/tests/client/torture_session.c index 57f53148..e6c10680 100644 --- a/tests/client/torture_session.c +++ b/tests/client/torture_session.c @@ -397,6 +397,33 @@ static void torture_freed_channel_read_nonblocking(void **state) assert_ssh_return_code_equal(session, rc, SSH_ERROR); } +static void torture_channel_exit_status(void **state) +{ + struct torture_state *s = *state; + ssh_session session = s->ssh.session; + ssh_channel channel = NULL; + char request[256]; + int exit_status = -1; + int rc; + + rc = snprintf(request, sizeof(request), "true"); + assert_return_code(rc, errno); + + channel = ssh_channel_new(session); + assert_non_null(channel); + + rc = ssh_channel_open_session(channel); + assert_ssh_return_code(session, rc); + + /* Make the request, read parts with close */ + rc = ssh_channel_request_exec(channel, request); + assert_ssh_return_code(session, rc); + + exit_status = ssh_channel_get_exit_status(channel); + assert_int_equal(exit_status, 0); +} + + /* Ensure that calling 'ssh_channel_get_exit_status' on a freed channel does not * lead to segmentation faults. */ static void torture_freed_channel_get_exit_status(void **state) @@ -540,6 +567,9 @@ int torture_run_tests(void) { cmocka_unit_test_setup_teardown(torture_freed_channel_read_nonblocking, session_setup, session_teardown), + cmocka_unit_test_setup_teardown(torture_channel_exit_status, + session_setup, + session_teardown), cmocka_unit_test_setup_teardown(torture_freed_channel_get_exit_status, session_setup, session_teardown),