diff --git a/src/test/rng_test_helpers.c b/src/test/rng_test_helpers.c index 262d380bda..c4243f5e9a 100644 --- a/src/test/rng_test_helpers.c +++ b/src/test/rng_test_helpers.c @@ -17,6 +17,7 @@ #include "core/or/or.h" #include "lib/crypt_ops/crypto_rand.h" +#include "ext/tinytest.h" #include "test/rng_test_helpers.h" @@ -54,7 +55,8 @@ static uint8_t rng_seed[16]; static crypto_xof_t *rng_xof = NULL; /** - * Print the seed for our PRNG to stdout. We use this when we're + * Print the seed for our PRNG to stdout. We use this when we're failed + * test that had a reproducible RNG set. **/ void testing_dump_reproducible_rng_seed(void) @@ -224,3 +226,16 @@ testing_disable_rng_override(void) rng_is_replaced = false; } + +/** + * As testing_disable_rng_override(), but dump the seed if the current + * test has failed. + */ +void +testing_disable_reproducible_rng(void) +{ + if (tinytest_cur_test_has_failed()) { + testing_dump_reproducible_rng_seed(); + } + testing_disable_rng_override(); +} diff --git a/src/test/rng_test_helpers.h b/src/test/rng_test_helpers.h index 907099450d..d7925148ae 100644 --- a/src/test/rng_test_helpers.h +++ b/src/test/rng_test_helpers.h @@ -14,8 +14,7 @@ void testing_prefilled_rng_reset(void); void testing_disable_rng_override(void); -#define testing_disable_reproducible_rng() \ - testing_disable_rng_override() +void testing_disable_reproducible_rng(void); #define testing_disable_deterministic_rng() \ testing_disable_rng_override() #define testing_disable_prefilled_rng() \