diff --git a/src/tests/cmocka/test_tools_colondb.c b/src/tests/cmocka/test_tools_colondb.c index 123ad39..5aa1058 100644 --- a/src/tests/cmocka/test_tools_colondb.c +++ b/src/tests/cmocka/test_tools_colondb.c @@ -40,16 +40,17 @@ static void create_dir(const char *path) errno = 0; ret = mkdir(path, 0775); - assert_int_equal(ret, 0); + assert_return_code(ret, errno); } -static void create_empty_file(void **state, const char *path, const char *name) +static void create_empty_file(TALLOC_CTX *test_ctx, const char *path, + const char *name) { TALLOC_CTX *tmp_ctx = NULL; char *file_name = NULL; FILE *fp = NULL; - tmp_ctx = talloc_new(*state); + tmp_ctx = talloc_new(test_ctx); assert_non_null(tmp_ctx); create_dir(path); @@ -64,27 +65,29 @@ static void create_empty_file(void **state, const char *path, const char *name) talloc_free(tmp_ctx); } -static void create_nonempty_file(void **state, +static void create_nonempty_file(TALLOC_CTX *test_ctx, const char *path, const char *name) { TALLOC_CTX *tmp_ctx = NULL; struct sss_colondb *db = NULL; + errno_t ret; struct sss_colondb_write_field table[] = { { SSS_COLONDB_STRING, { .str = TEST_STRING2 } }, { SSS_COLONDB_UINT32, { .uint32 = TEST_INT2 } }, { SSS_COLONDB_SENTINEL, { 0 } } }; - tmp_ctx = talloc_new(*state); + tmp_ctx = talloc_new(test_ctx); assert_non_null(tmp_ctx); - create_empty_file(state, TESTS_PATH, TESTS_FILE); + create_empty_file(test_ctx, TESTS_PATH, TESTS_FILE); db = sss_colondb_open(tmp_ctx, SSS_COLONDB_WRITE, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); - sss_colondb_writeline(db, table); + ret = sss_colondb_writeline(db, table); + assert_int_equal(ret, EOK); talloc_free(db); talloc_free(tmp_ctx); @@ -104,15 +107,16 @@ static int setup(void **state, int file_state) case 0: break; case 1: - create_empty_file(state, TESTS_PATH, TESTS_FILE); + create_empty_file(test_ctx, TESTS_PATH, TESTS_FILE); break; case 2: - create_nonempty_file(state, TESTS_PATH, TESTS_FILE); + create_nonempty_file(test_ctx, TESTS_PATH, TESTS_FILE); break; default: break; } + check_leaks_push(test_ctx); *state = test_ctx; return 0; @@ -143,7 +147,9 @@ static int teardown(void **state) assert_int_equal(errno, ENOENT); } + assert_true(check_leaks_pop(*state)); talloc_zfree(*state); + test_dom_suite_cleanup(TESTS_PATH, NULL, NULL); assert_true(check_leaks_pop(global_talloc_context)); assert_true(leak_check_teardown()); @@ -153,104 +159,74 @@ static int teardown(void **state) void test_open_nonexist_for_read(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_READ, TESTS_PATH "/" TESTS_FILE); assert_null(db); talloc_free(db); - - assert_true(check_leaks_pop(test_ctx)); } void test_open_nonexist_for_write(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_WRITE, TESTS_PATH "/" TESTS_FILE); assert_null(db); talloc_free(db); - - assert_true(check_leaks_pop(test_ctx)); } void test_open_exist_for_read(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_READ, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); talloc_free(db); - - assert_true(check_leaks_pop(test_ctx)); } void test_open_exist_for_write(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_WRITE, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); talloc_free(db); - - assert_true(check_leaks_pop(test_ctx)); } void test_open_nonempty_for_read(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_READ, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); talloc_free(db); - - assert_true(check_leaks_pop(test_ctx)); } void test_open_nonempty_for_write(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_WRITE, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); talloc_free(db); - - assert_true(check_leaks_pop(test_ctx)); } void test_write_to_empty(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; struct sss_colondb_write_field table[] = { { SSS_COLONDB_STRING, { .str = TEST_STRING1 } }, @@ -259,9 +235,6 @@ void test_write_to_empty(void **state) }; errno_t ret; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_WRITE, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); @@ -270,12 +243,11 @@ void test_write_to_empty(void **state) assert_int_equal(ret, 0); talloc_free(db); - assert_true(check_leaks_pop(test_ctx)); } void test_write_to_nonempty(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; struct sss_colondb_write_field table[] = { { SSS_COLONDB_STRING, { .str = TEST_STRING1 } }, @@ -284,9 +256,6 @@ void test_write_to_nonempty(void **state) }; errno_t ret; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_WRITE, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); @@ -295,16 +264,14 @@ void test_write_to_nonempty(void **state) assert_int_equal(ret, 0); talloc_free(db); - assert_true(check_leaks_pop(test_ctx)); } void test_read_from_nonempty(void **state) { - TALLOC_CTX *test_ctx = NULL; - TALLOC_CTX *test_ctx_child = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; errno_t ret; - const char *string; + const char *string = NULL; uint32_t number; struct sss_colondb_read_field table[] = { { SSS_COLONDB_STRING, { .str = &string } }, @@ -312,29 +279,22 @@ void test_read_from_nonempty(void **state) { SSS_COLONDB_SENTINEL, { 0 } } }; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_READ, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); - test_ctx_child = talloc_new(test_ctx); - - ret = sss_colondb_readline(test_ctx_child, db, table); + ret = sss_colondb_readline(test_ctx, db, table); assert_int_equal(ret, 0); assert_string_equal(string, TEST_STRING2); assert_int_equal(number, TEST_INT2); - talloc_free(test_ctx_child); - + talloc_zfree(string); talloc_free(db); - assert_true(check_leaks_pop(test_ctx)); } void test_read_from_empty(void **state) { - TALLOC_CTX *test_ctx = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; errno_t ret; const char *string; @@ -345,9 +305,6 @@ void test_read_from_empty(void **state) { SSS_COLONDB_SENTINEL, { 0 } } }; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_READ, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); @@ -356,16 +313,14 @@ void test_read_from_empty(void **state) assert_int_equal(ret, EOF); talloc_free(db); - assert_true(check_leaks_pop(test_ctx)); } void test_write_read(void **state) { - TALLOC_CTX *test_ctx = NULL; - TALLOC_CTX *test_ctx_child = NULL; + TALLOC_CTX *test_ctx = *state; struct sss_colondb *db = NULL; errno_t ret; - const char *string; + const char *string = NULL; uint32_t number; struct sss_colondb_write_field table_in[] = { { SSS_COLONDB_STRING, { .str = TEST_STRING2 } }, @@ -378,9 +333,6 @@ void test_write_read(void **state) { SSS_COLONDB_SENTINEL, { 0 } } }; - test_ctx = talloc_new(*state); - check_leaks_push(test_ctx); - db = sss_colondb_open(test_ctx, SSS_COLONDB_WRITE, TESTS_PATH "/" TESTS_FILE); assert_non_null(db); @@ -394,17 +346,13 @@ void test_write_read(void **state) TESTS_PATH "/" TESTS_FILE); assert_non_null(db); - test_ctx_child = talloc_new(test_ctx); - - ret = sss_colondb_readline(test_ctx_child, db, table_out); + ret = sss_colondb_readline(test_ctx, db, table_out); assert_int_equal(ret, 0); assert_string_equal(string, TEST_STRING2); assert_int_equal(number, TEST_INT2); - talloc_free(test_ctx_child); - + talloc_zfree(string); talloc_free(db); - assert_true(check_leaks_pop(test_ctx)); } int main(int argc, const char *argv[])