A number of improvements to the output of the C portion of the test framework
have been made.
Specifically, a number of functions have been added to provide uniform
reporting of test case failures.
You access this functionality by including "testutil.h"
There are two unconditional functions: TEST_info and TEST_error which print
informative and error messages respectively. They have no return value and
accept a printf format string plus arguments.
All of the remaining functions are conditional tests. They return 1 if the
condition is true and 0 if false. They output a uniform diagnostic message in
the latter case and nothing in the former. The majority of these are of the
form TEST_type_cond, where _type_ is the type being tested and _cond_ is the
relation being tested. The currently available types are:
type C type
int int
uint unsigned int
char char
uchar unsigned char
long long
ulong unsigned long
size_t size_t
ptr void *
str char *
mem void *, size_t
For the integral types, cond can be:
cond C comparison
eq ==
ne !=
gt >
ge >=
lt <
le <=
For the pointer types, cond can only be _eq_ or _ne_. In the case of _str_ and
_mem_, the memory pointed to is compared. For _ptr_ just the pointer
themselves are compared. The _mem_ comparisons take a pair of pointers + sizes
as arguments (i.e. ptr1, size1, ptr2, size2).
There are two additional short hand calls for ptr:
TEST_ptr ptr != NULL
TEST_ptr_null ptr == NULL
Finally, there are two calls to check Boolean values:
TEST_true checks for != 0
TEST_false checks for == 0
In all cases, it is up to the test executable to process the return codes and
to indicate success or failure to the PERL test framework. This would usually
be done using:
if (!TEST_cond(args))
return 0;
See the brief notes at the end of test/README and look at some of the test
cases that have been converted already:
test/asn1_internal_test.c
test/cipherlist_test.c
test/crltest.c
test/lhash_test.c
test/mdc2_internal_test.c
test/pkey_meth_test.c
test/poly1305_internal_test.c
test/ssl_test.c
test/ssl_test_ctx_test.c
test/stack_test.c
test/tls13encryptiontest.c
test/tls13secretstest.c
test/x509_internal_test.c
test/x509_time_test.c
To see some examples output of failing tests, test the test_test case:
make test TESTS=test_test VERBOSE=1
To see examples of all of the new test functions have a look in
test/test_test.c This features both passing and failing calls. However, the
actual error handling is not normal for a test executable because it treats
desired failures as passes.
Pauli
--
Oracle
Dr Paul Dale | Cryptographer | Network Security & Encryption
Phone +61 7 3031 7217
Oracle Australia
--
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev