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 <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8288)
This commit is contained in:
Richard Levitte 2019-02-20 08:21:02 +01:00
parent 7dec815ecd
commit 0b76ce99aa

View file

@ -46,8 +46,10 @@ static const OPENSSL_CTX_METHOD foo_method = {
foo_free foo_free
}; };
static int foo_init(void) { static int foo_init(void)
foo_index = openssl_ctx_new_index(&foo_method); {
if (foo_index == -1)
foo_index = openssl_ctx_new_index(&foo_method);
return foo_index != -1; return foo_index != -1;
} }
@ -61,15 +63,20 @@ static int test_context(OPENSSL_CTX *ctx)
{ {
FOO *data = NULL; FOO *data = NULL;
return (TEST_ptr(data = openssl_ctx_get_data(ctx, foo_index)) return
/* OPENSSL_zalloc in foo_new() initialized it to zero */ TEST_true(foo_init())
&& TEST_int_eq(data->i, 42)); && 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) static int test_app_context(void)
{ {
OPENSSL_CTX *ctx = NULL; 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); OPENSSL_CTX_free(ctx);
return result; return result;
@ -82,7 +89,6 @@ static int test_def_context(void)
int setup_tests(void) int setup_tests(void)
{ {
ADD_TEST(foo_init);
ADD_TEST(test_app_context); ADD_TEST(test_app_context);
ADD_TEST(test_def_context); ADD_TEST(test_def_context);
return 1; return 1;