From 92afac2a0ca640f19d39da6e7e82e1acb93e2024 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Wed, 10 May 2023 11:06:12 +0200 Subject: Refactoring of gluten_read/write Refactor includes: - use static inline instead of macro - return -1 if there is an error and don't exit - eval return 0 or -1 - adjust code and tests --- tests/unit/test_errors.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) (limited to 'tests/unit/test_errors.c') diff --git a/tests/unit/test_errors.c b/tests/unit/test_errors.c index d00d42e..ca6fcb0 100644 --- a/tests/unit/test_errors.c +++ b/tests/unit/test_errors.c @@ -1,4 +1,3 @@ -#include #include #include #include @@ -31,6 +30,7 @@ START_TEST(test_bound_check) { struct op ops[] = { { OP_RETURN, { { 0 } } }, + { OP_END, { { 0 } } }, }; ops[0].op.ret.val.offset = test_max_size_data[_i].offset; ops[0].op.ret.val.type = test_max_size_data[_i].type; @@ -45,9 +45,10 @@ START_TEST(test_write_op_return) { .call = { .nr = __NR_getpid, .has_ret = true, .ret = { OFFSET_DATA, DATA_SIZE - 1 } } } }, + { OP_END, { { 0 } } }, }; - eval(&gluten, ops, &req, notifyfd); + ck_assert_int_eq(eval(&gluten, ops, &req, notifyfd), -1); } START_TEST(test_write_op_load) @@ -58,20 +59,28 @@ START_TEST(test_write_op_load) { .load = { { OFFSET_SECCOMP_DATA, 1 }, { OFFSET_DATA, DATA_SIZE - 1 }, sizeof(a) } } }, + { OP_END, { { 0 } } }, }; - eval(&gluten, ops, &req, notifyfd); + ck_assert_int_eq(eval(&gluten, ops, &req, notifyfd), -1); } +struct gluten_offset test_max_size_read_data[] = { + { OFFSET_DATA, DATA_SIZE }, + { OFFSET_RO_DATA, RO_DATA_SIZE }, + { OFFSET_SECCOMP_DATA, 6 }, +}; + START_TEST(test_read_op_return) { struct op ops[] = { { OP_RETURN, { { 0 } } }, + { OP_END, { { 0 } } }, }; - ops[0].op.ret.val.offset = test_max_size_data[_i].offset - 1; - ops[0].op.ret.val.type = test_max_size_data[_i].type; + ops[0].op.ret.val.offset = test_max_size_read_data[_i].offset - 1; + ops[0].op.ret.val.type = test_max_size_read_data[_i].type; - eval(&gluten, ops, &req, notifyfd); + ck_assert_int_eq(eval(&gluten, ops, &req, notifyfd), -1); } Suite *error_suite(void) @@ -82,21 +91,22 @@ Suite *error_suite(void) s = suite_create("Error handling"); bounds = tcase_create("bound checks"); - tcase_add_loop_exit_test(bounds, test_bound_check, EXIT_FAILURE, 0, - sizeof(test_max_size_data) / - sizeof(test_max_size_data[0])); + tcase_add_loop_test(bounds, test_bound_check, 0, + sizeof(test_max_size_data) / + sizeof(test_max_size_data[0])); suite_add_tcase(s, bounds); gwrite = tcase_create("write gluten"); tcase_add_checked_fixture(gwrite, setup_error_check, teardown); - tcase_add_exit_test(gwrite, test_write_op_return, EXIT_FAILURE); - tcase_add_exit_test(gwrite, test_write_op_load, EXIT_FAILURE); + tcase_add_test(gwrite, test_write_op_return); + tcase_add_test(gwrite, test_write_op_load); suite_add_tcase(s, gwrite); gread = tcase_create("read gluten"); - tcase_add_loop_exit_test(gread, test_read_op_return, EXIT_FAILURE, 0, - sizeof(test_max_size_data) / - sizeof(test_max_size_data[0])); + tcase_add_checked_fixture(gread, setup_error_check, teardown); + tcase_add_loop_test(gread, test_read_op_return, 0, + sizeof(test_max_size_read_data) / + sizeof(test_max_size_read_data[0])); suite_add_tcase(s, gread); return s; -- cgit v1.2.3