Commit 308b876d authored by Emilia Kasper's avatar Emilia Kasper
Browse files

Don't create fixtures for simple tests



The test fixtures are (meant to be) useful for sharing common
setup. Don't bother when we don't have any setup/teardown.

This only addresses simple tests. Parameterized tests (ADD_ALL_TESTS)
will be made more user-friendly in a follow-up.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent 6ec327ee
Loading
Loading
Loading
Loading
+11 −62
Original line number Diff line number Diff line
@@ -18,27 +18,15 @@
#include "testutil.h"
#include "e_os.h"

typedef struct {
    const char *test_case_name;
    const char *test_section;
} SIMPLE_FIXTURE;

/**********************************************************************
 *
 * Test of a_strnid's tbl_standard
 *
 ***/

static SIMPLE_FIXTURE setup_tbl_standard(const char *const test_case_name)
{
    SIMPLE_FIXTURE fixture;
    fixture.test_case_name = test_case_name;
    return fixture;
}

#include "../crypto/asn1/tbl_standard.h"

static int execute_tbl_standard(SIMPLE_FIXTURE fixture)
static int test_tbl_standard()
{
    const ASN1_STRING_TABLE *tmp;
    int last_nid = -1;
@@ -53,38 +41,27 @@ static int execute_tbl_standard(SIMPLE_FIXTURE fixture)
    }

    if (last_nid != 0) {
        fprintf(stderr, "%s: Table order OK\n", fixture.test_section);
        fprintf(stderr, "asn1 tbl_standard: Table order OK\n");
        return 1;
    }

    for (tmp = tbl_standard, i = 0; i < OSSL_NELEM(tbl_standard); i++, tmp++)
        fprintf(stderr, "%s: Index %" OSSLzu ", NID %d, Name=%s\n",
               fixture.test_section, i, tmp->nid, OBJ_nid2ln(tmp->nid));
        fprintf(stderr, "asn1 tbl_standard: Index %" OSSLzu ", NID %d, Name=%s\n",
                i, tmp->nid, OBJ_nid2ln(tmp->nid));

    return 0;
}

static void teardown_tbl_standard(SIMPLE_FIXTURE fixture)
{
}

/**********************************************************************
 *
 * Test of ameth_lib's standard_methods
 *
 ***/

static SIMPLE_FIXTURE setup_standard_methods(const char *const test_case_name)
{
    SIMPLE_FIXTURE fixture;
    fixture.test_case_name = test_case_name;
    return fixture;
}

#include "internal/asn1_int.h"
#include "../crypto/asn1/standard_methods.h"

static int execute_standard_methods(SIMPLE_FIXTURE fixture)
static int test_standard_methods()
{
    const EVP_PKEY_ASN1_METHOD **tmp;
    int last_pkey_id = -1;
@@ -100,51 +77,23 @@ static int execute_standard_methods(SIMPLE_FIXTURE fixture)
    }

    if (last_pkey_id != 0) {
        fprintf(stderr, "%s: Table order OK\n", fixture.test_section);
        fprintf(stderr, "asn1 standard methods: Table order OK\n");
        return 1;
    }

    for (tmp = standard_methods, i = 0; i < OSSL_NELEM(standard_methods);
         i++, tmp++)
        fprintf(stderr, "%s: Index %" OSSLzu ", pkey ID %d, Name=%s\n",
               fixture.test_section, i, (*tmp)->pkey_id,
        fprintf(stderr, "asn1 standard methods: Index %" OSSLzu
                ", pkey ID %d, Name=%s\n", i, (*tmp)->pkey_id,
                OBJ_nid2sn((*tmp)->pkey_id));

    return 0;
}

static void teardown_standard_methods(SIMPLE_FIXTURE fixture)
{
}

/**********************************************************************
 *
 * Test driver
 *
 ***/

static struct {
    const char *section;
    SIMPLE_FIXTURE (*setup)(const char *const test_case_name);
    int (*execute)(SIMPLE_FIXTURE);
    void (*teardown)(SIMPLE_FIXTURE);
} tests[] = {
    {"asn1 tlb_standard", setup_tbl_standard, execute_tbl_standard,
     teardown_tbl_standard},
    {"asn1 standard_methods", setup_standard_methods, execute_standard_methods,
     teardown_standard_methods}
};

static int drive_tests(int idx)
{
    SETUP_TEST_FIXTURE(SIMPLE_FIXTURE, tests[idx].setup);
    fixture.test_section = tests[idx].section;
    EXECUTE_TEST(tests[idx].execute, tests[idx].teardown);
}

int main(int argc, char **argv)
{
    ADD_ALL_TESTS(drive_tests, OSSL_NELEM(tests));
    ADD_TEST(test_tbl_standard);
    ADD_TEST(test_standard_methods);

    return run_tests(argv[0]);
}
+1 −28
Original line number Diff line number Diff line
@@ -41,18 +41,7 @@ typedef struct {

static expected_error_t expected_error = ASN1_UNKNOWN;

typedef struct d2i_test_fixture {
    const char *test_case_name;
} D2I_TEST_FIXTURE;

static D2I_TEST_FIXTURE set_up(const char *const test_case_name)
{
    D2I_TEST_FIXTURE fixture;
    fixture.test_case_name = test_case_name;
    return fixture;
}

static int execute_test(D2I_TEST_FIXTURE fixture)
static int test_bad_asn1()
{
    BIO *bio = NULL;
    ASN1_VALUE *value = NULL;
@@ -116,22 +105,6 @@ static int execute_test(D2I_TEST_FIXTURE fixture)
    return ret;
}

static void tear_down(D2I_TEST_FIXTURE fixture)
{
}

#define SETUP_D2I_TEST_FIXTURE() \
    SETUP_TEST_FIXTURE(D2I_TEST_FIXTURE, set_up)

#define EXECUTE_D2I_TEST() \
    EXECUTE_TEST(execute_test, tear_down)

static int test_bad_asn1()
{
    SETUP_D2I_TEST_FIXTURE();
    EXECUTE_D2I_TEST();
}

/*
 * Usage: d2i_test <type> <file>, e.g.
 * d2i_test generalname bad_generalname.der
+2 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ int run_tests(const char *test_prog_name)
    for (i = 0; i != num_tests; ++i) {
        if (all_tests[i].num == -1) {
            int ret = all_tests[i].test_fn();

            if (!ret) {
                printf("** %s failed **\n--------\n",
                       all_tests[i].test_case_name);
@@ -86,6 +87,7 @@ int run_tests(const char *test_prog_name)
        } else {
            for (j = 0; j < all_tests[i].num; j++) {
                int ret = all_tests[i].param_test_fn(j);

                if (!ret) {
                    printf("** %s failed test %d\n--------\n",
                           all_tests[i].test_case_name, j);
+8 −7
Original line number Diff line number Diff line
@@ -12,7 +12,15 @@

#include <openssl/err.h>

/*
 * In main(), call ADD_TEST to register each test case function, then call
 * run_tests() to execute all tests and report the results. The result
 * returned from run_tests() should be used as the return value for main().
 */
# define ADD_TEST(test_function) add_test(#test_function, test_function)

/*-
 * Test cases that share common setup should use the helper
 * SETUP_TEST_FIXTURE and EXECUTE_TEST macros for test case functions.
 *
 * SETUP_TEST_FIXTURE will call set_up() to create a new TEST_FIXTURE_TYPE
@@ -68,13 +76,6 @@
#  define TEST_CASE_NAME __func__
# endif                         /* __STDC_VERSION__ */

/*
 * In main(), call ADD_TEST to register each test case function, then call
 * run_tests() to execute all tests and report the results. The result
 * returned from run_tests() should be used as the return value for main().
 */
# define ADD_TEST(test_function) add_test(#test_function, test_function)

/*
 * Simple parameterized tests. Adds a test_function(idx) test for each
 * 0 <= idx < num.
+2 −41
Original line number Diff line number Diff line
@@ -17,28 +17,16 @@
#include "testutil.h"
#include "e_os.h"

typedef struct {
    const char *test_case_name;
    const char *test_section;
} SIMPLE_FIXTURE;

/**********************************************************************
 *
 * Test of x509v3
 *
 ***/

static SIMPLE_FIXTURE setup_standard_exts(const char *const test_case_name)
{
    SIMPLE_FIXTURE fixture;
    fixture.test_case_name = test_case_name;
    return fixture;
}

#include "../crypto/x509v3/ext_dat.h"
#include "../crypto/x509v3/standard_exts.h"

static int execute_standard_exts(SIMPLE_FIXTURE fixture)
static int test_standard_exts()
{
    size_t i;
    int prev = -1, good = 1;
@@ -64,36 +52,9 @@ static int execute_standard_exts(SIMPLE_FIXTURE fixture)
    return good;
}

static void teardown_standard_exts(SIMPLE_FIXTURE fixture)
{
}

/**********************************************************************
 *
 * Test driver
 *
 ***/

static struct {
    const char *section;
    SIMPLE_FIXTURE (*setup)(const char *const test_case_name);
    int (*execute)(SIMPLE_FIXTURE);
    void (*teardown)(SIMPLE_FIXTURE);
} tests[] = {
    {"standard_exts", setup_standard_exts, execute_standard_exts,
     teardown_standard_exts},
};

static int drive_tests(int idx)
{
    SETUP_TEST_FIXTURE(SIMPLE_FIXTURE, tests[idx].setup);
    fixture.test_section = tests[idx].section;
    EXECUTE_TEST(tests[idx].execute, tests[idx].teardown);
}

int main(int argc, char **argv)
{
    ADD_ALL_TESTS(drive_tests, OSSL_NELEM(tests));
    ADD_TEST(test_standard_exts);

    return run_tests(argv[0]);
}