From 308b876da9eff2f6455a32751b7ffeeaf6ee3fb8 Mon Sep 17 00:00:00 2001 From: Emilia Kasper Date: Thu, 3 Nov 2016 17:15:41 +0100 Subject: [PATCH] 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: Rich Salz --- test/asn1_internal_test.c | 73 ++++++--------------------------------- test/d2i_test.c | 29 +--------------- test/testutil.c | 2 ++ test/testutil.h | 15 ++++---- test/x509_internal_test.c | 43 ++--------------------- 5 files changed, 24 insertions(+), 138 deletions(-) diff --git a/test/asn1_internal_test.c b/test/asn1_internal_test.c index eed7c580f0..6a5fce4081 100644 --- a/test/asn1_internal_test.c +++ b/test/asn1_internal_test.c @@ -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, - OBJ_nid2sn((*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]); } diff --git a/test/d2i_test.c b/test/d2i_test.c index c536764bae..e12f249242 100644 --- a/test/d2i_test.c +++ b/test/d2i_test.c @@ -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 , e.g. * d2i_test generalname bad_generalname.der diff --git a/test/testutil.c b/test/testutil.c index c783b4a98a..f1cad6450f 100644 --- a/test/testutil.c +++ b/test/testutil.c @@ -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); diff --git a/test/testutil.h b/test/testutil.h index 68d202adb1..af7c48cc61 100644 --- a/test/testutil.h +++ b/test/testutil.h @@ -12,7 +12,15 @@ #include +/* + * 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. diff --git a/test/x509_internal_test.c b/test/x509_internal_test.c index baa4c5a1fd..e0cb6158d7 100644 --- a/test/x509_internal_test.c +++ b/test/x509_internal_test.c @@ -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]); }