From 0b76ce99aaa5678b44cb99df464e977975747928 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Wed, 20 Feb 2019 08:21:02 +0100 Subject: [PATCH] test/context_internal_test.c: don't initialize as a separate test Because test order can be randomized, running foo_init() as a separate test is unsafe practice. Instead, we make it possible to call it multiple times, and call it at the start of each separate test. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8288) --- test/context_internal_test.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/test/context_internal_test.c b/test/context_internal_test.c index 7052de2322..aca3db3187 100644 --- a/test/context_internal_test.c +++ b/test/context_internal_test.c @@ -46,8 +46,10 @@ static const OPENSSL_CTX_METHOD foo_method = { foo_free }; -static int foo_init(void) { - foo_index = openssl_ctx_new_index(&foo_method); +static int foo_init(void) +{ + if (foo_index == -1) + foo_index = openssl_ctx_new_index(&foo_method); return foo_index != -1; } @@ -61,15 +63,20 @@ static int test_context(OPENSSL_CTX *ctx) { FOO *data = NULL; - return (TEST_ptr(data = openssl_ctx_get_data(ctx, foo_index)) - /* OPENSSL_zalloc in foo_new() initialized it to zero */ - && TEST_int_eq(data->i, 42)); + return + TEST_true(foo_init()) + && TEST_ptr(data = openssl_ctx_get_data(ctx, foo_index)) + /* OPENSSL_zalloc in foo_new() initialized it to zero */ + && TEST_int_eq(data->i, 42); } static int test_app_context(void) { OPENSSL_CTX *ctx = NULL; - int result = (TEST_ptr(ctx = OPENSSL_CTX_new()) && test_context(ctx)); + int result = + TEST_true(foo_init()) + && TEST_ptr(ctx = OPENSSL_CTX_new()) + && test_context(ctx); OPENSSL_CTX_free(ctx); return result; @@ -82,7 +89,6 @@ static int test_def_context(void) int setup_tests(void) { - ADD_TEST(foo_init); ADD_TEST(test_app_context); ADD_TEST(test_def_context); return 1;