| From 36ebd92fa53c0097f1e2f9ec5aa5b5c6ec1b411d Mon Sep 17 00:00:00 2001 |
| From: Thomas Perrot <thomas.perrot@bootlin.com> |
| Date: Wed, 29 Sep 2021 13:50:35 +0200 |
| Subject: [PATCH] test: retriable tests are marked failed only when all |
| attempts have failed |
| |
| Fixes: #1193 |
| |
| Upstream-Status: Accepted |
| |
| Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com> |
| --- |
| test/tinytest.c | 13 ++++++------- |
| test/tinytest.h | 2 +- |
| 2 files changed, 7 insertions(+), 8 deletions(-) |
| |
| diff --git a/test/tinytest.c b/test/tinytest.c |
| index 85dfe74a720e..bf2882418eb6 100644 |
| --- a/test/tinytest.c |
| +++ b/test/tinytest.c |
| @@ -310,7 +310,8 @@ testcase_run_forked_(const struct testgroup_t *group, |
| |
| int |
| testcase_run_one(const struct testgroup_t *group, |
| - const struct testcase_t *testcase) |
| + const struct testcase_t *testcase, |
| + const int test_attempts) |
| { |
| enum outcome outcome; |
| |
| @@ -348,7 +349,7 @@ testcase_run_one(const struct testgroup_t *group, |
| if (opt_verbosity>0 && !opt_forked) |
| puts("SKIPPED"); |
| } else { |
| - if (!opt_forked) |
| + if (!opt_forked && (testcase->flags & TT_RETRIABLE) && !test_attempts) |
| printf("\n [%s FAILED]\n", testcase->name); |
| } |
| |
| @@ -525,22 +526,20 @@ tinytest_main(int c, const char **v, struct testgroup_t *groups) |
| struct testgroup_t *group = &groups[i]; |
| for (j = 0; group->cases[j].name; ++j) { |
| struct testcase_t *testcase = &group->cases[j]; |
| - int test_attempts = 3; |
| + int test_attempts = (testcase->flags & TT_RETRIABLE) ? 3: 1; |
| int test_ret_err; |
| |
| if (!(testcase->flags & TT_ENABLED_)) |
| continue; |
| |
| for (;;) { |
| - test_ret_err = testcase_run_one(group, testcase); |
| + test_ret_err = testcase_run_one(group, testcase, test_attempts); |
| |
| if (test_ret_err == OK) |
| break; |
| - if (!(testcase->flags & TT_RETRIABLE)) |
| + if (!--test_attempts) |
| break; |
| printf("\n [RETRYING %s (%i)]\n", testcase->name, test_attempts); |
| - if (!test_attempts--) |
| - break; |
| } |
| |
| switch (test_ret_err) { |
| diff --git a/test/tinytest.h b/test/tinytest.h |
| index d321dd467542..c276b5339331 100644 |
| --- a/test/tinytest.h |
| +++ b/test/tinytest.h |
| @@ -92,7 +92,7 @@ char *tinytest_format_hex_(const void *, unsigned long); |
| tinytest_set_flag_(groups, named, 1, TT_SKIP) |
| |
| /** Run a single testcase in a single group. */ |
| -int testcase_run_one(const struct testgroup_t *,const struct testcase_t *); |
| +int testcase_run_one(const struct testgroup_t *,const struct testcase_t *, const int test_attempts); |
| |
| void tinytest_set_aliases(const struct testlist_alias_t *aliases); |
| |
| -- |
| 2.31.1 |
| |