[PATCH 3/3] testutils: Document and enforce @func callback retvals for virTestMain()
Peter Krempa
pkrempa at redhat.com
Mon May 17 07:22:47 UTC 2021
On Mon, May 17, 2021 at 08:49:10 +0200, Michal Privoznik wrote:
> Sometimes a test has a wrapper over main() (e.g. because it's
> preloading some mock libraries). In such case, the main() is
> renamed to something else (usually mymain()), and main() is
> generated by calling one of VIR_TEST_MAIN() or
> VIR_TEST_MAIN_PRELOAD() macros.
AFAIK it's not just sometimes but always in our testsuite.
>
> This has a neat side effect - if mymain() returns an error a
> short summary is printed, e.g.:
>
> Some tests failed. Run them using:
> VIR_TEST_DEBUG=1 VIR_TEST_RANGE=5-6 ./virtest
>
> However, this detection only works if EXIT_FAILURE is returned by
> mymain(). Document and enforce this limitation.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> tests/testutils.c | 13 +++++++++++++
> tests/testutils.h | 4 ++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/tests/testutils.c b/tests/testutils.c
> index 870a3b081a..b57b44fab5 100644
> --- a/tests/testutils.c
> +++ b/tests/testutils.c
> @@ -838,6 +838,19 @@ int virTestMain(int argc,
> fprintf(stderr, "%*s", 40 - (int)(testCounter % 40), "");
> fprintf(stderr, " %-3zu %s\n", testCounter, ret == 0 ? "OK" : "FAIL");
> }
> +
> + switch (ret) {
> + case EXIT_FAILURE:
> + case EXIT_SUCCESS:
> + case EXIT_AM_SKIP:
> + case EXIT_AM_HARDFAIL:
> + break;
> + default:
> + fprintf(stderr, "Test callback did returned invalid value: %d\n", ret);
s/did//
> + ret = EXIT_AM_HARDFAIL;
> + break;
> + }
More information about the libvir-list
mailing list