Commit 0b76ce99 authored by Richard Levitte's avatar Richard Levitte
Browse files

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: default avatarMatt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8288)
parent 7dec815e
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -46,7 +46,9 @@ static const OPENSSL_CTX_METHOD foo_method = {
    foo_free
};

static int foo_init(void) {
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))
    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));
        && 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;