diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2018-06-30 13:48:17 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-06-30 14:37:04 +0200 |
commit | f6284eafd6fe9c99cd7396dcdb64fe426c63d897 (patch) | |
tree | 82ba076436b015ebc5c6b36556cc4f0afb481ce2 /tests | |
parent | cf250171de5dfddaec95e0f2709824954547bd2d (diff) | |
download | libssh-f6284eafd6fe9c99cd7396dcdb64fe426c63d897.tar.gz libssh-f6284eafd6fe9c99cd7396dcdb64fe426c63d897.tar.xz libssh-f6284eafd6fe9c99cd7396dcdb64fe426c63d897.zip |
torture: Add assert macros for ssh return codes
This allows us to print errors from ssh sessions.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 3 | ||||
-rw-r--r-- | tests/torture.h | 2 | ||||
-rw-r--r-- | tests/torture_cmocka.c | 100 | ||||
-rw-r--r-- | tests/torture_cmocka.h | 55 |
4 files changed, 159 insertions, 1 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e446f10b..4eba739c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -35,7 +35,8 @@ add_library(${TORTURE_LIBRARY} cmdline.c torture.c torture_key.c - torture_pki.c) + torture_pki.c + torture_cmocka.c) target_link_libraries(${TORTURE_LIBRARY} ${TORTURE_LINK_LIBRARIES}) if (ARGP_LIBRARY) diff --git a/tests/torture.h b/tests/torture.h index cb282778..8f3991d6 100644 --- a/tests/torture.h +++ b/tests/torture.h @@ -40,6 +40,8 @@ #include <cmocka.h> +#include "torture_cmocka.h" + #ifndef assert_return_code /* hack for older versions of cmocka */ #define assert_return_code(code, errno) \ diff --git a/tests/torture_cmocka.c b/tests/torture_cmocka.c new file mode 100644 index 00000000..72f38606 --- /dev/null +++ b/tests/torture_cmocka.c @@ -0,0 +1,100 @@ +/* + * torture.c - torture library for testing libssh + * + * This file is part of the SSH Library + * + * Copyright (c) 2018 by Andreas Schneider <asn@cryptomilk.org> + * + * The SSH Library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or (at your + * option) any later version. + * + * The SSH Library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with the SSH Library; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + */ + +#include "config.h" + +#include "torture.h" + +void _assert_ssh_return_code(ssh_session session, + int rc, + const char * const file, + const int line) +{ + char ssh_error[1024] = {0}; + + if (session != NULL) { + snprintf(ssh_error, + sizeof(ssh_error), + "ERROR: Invalid return code - %s", + ssh_get_error(session)); + } else { + snprintf(ssh_error, + sizeof(ssh_error), + "ERROR: Invalid return code"); + } + + _assert_true(rc == SSH_OK, + ssh_error, + file, + line); +} + +void _assert_ssh_return_code_equal(ssh_session session, + int rc, + int expected_rc, + const char * const file, + const int line) +{ + char ssh_error[1024] = {0}; + + if (session != NULL) { + snprintf(ssh_error, + sizeof(ssh_error), + "ERROR: Invalid return code - %s", + ssh_get_error(session)); + } else { + snprintf(ssh_error, + sizeof(ssh_error), + "ERROR: Invalid return code"); + } + + _assert_true((rc == expected_rc), + ssh_error, + file, + line); +} + +void _assert_ssh_return_code_not_equal(ssh_session session, + int rc, + int unexpected_rc, + const char * const file, + const int line) +{ + char ssh_error[1024] = {0}; + + if (session != NULL) { + snprintf(ssh_error, + sizeof(ssh_error), + "ERROR: Invalid return code - %s", + ssh_get_error(session)); + } else { + snprintf(ssh_error, + sizeof(ssh_error), + "ERROR: Invalid return code"); + } + + _assert_true((rc != unexpected_rc), + ssh_error, + file, + line); +} diff --git a/tests/torture_cmocka.h b/tests/torture_cmocka.h new file mode 100644 index 00000000..c831743d --- /dev/null +++ b/tests/torture_cmocka.h @@ -0,0 +1,55 @@ +/* + * torture.c - torture library for testing libssh + * + * This file is part of the SSH Library + * + * Copyright (c) 2018 by Andreas Schneider <asn@cryptomilk.org> + * + * The SSH Library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or (at your + * option) any later version. + * + * The SSH Library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with the SSH Library; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + */ + +#ifndef _TORTURE_CMOCKA_H +#define _TORTURE_CMOCKA_H + +#include "libssh/session.h" + +void _assert_ssh_return_code(ssh_session session, + int rc, + const char * const file, + const int line); + +#define assert_ssh_return_code(session, rc) \ + _assert_ssh_return_code((session), (rc), __FILE__, __LINE__) + +void _assert_ssh_return_code_equal(ssh_session session, + int rc, + int expected_rc, + const char * const file, + const int line); + +#define assert_ssh_return_code_equal(session, rc, expected_rc) \ + _assert_ssh_return_code_equal((session), (rc), (expected_rc), __FILE__, __LINE__) + +void _assert_ssh_return_code_not_equal(ssh_session session, + int rc, + int expected_rc, + const char * const file, + const int line); + +#define assert_ssh_return_code_not_equal(session, rc, unexpected_rc) \ + _assert_ssh_return_code_not_equal((session), (rc), (unexpected_rc), __FILE__, __LINE__) + +#endif /* _TORTURE_CMOCKA_H */ |