[libvirt] [PATCH 02/12] test: utils: Add helpers for automatic numbering of test cases

John Ferlan jferlan at redhat.com
Thu Jan 29 19:23:52 UTC 2015


I don't see this being used anywhere in this set of patches...  I assume
you have some other upcoming patch series that will use it...

NITs

On 01/28/2015 05:30 AM, Peter Krempa wrote:
> Adding or reordering test cases is usually a pain due to static test
> case names that are then passed to virtTestRun(). To ease the numbering
> of test cases, this patch adds two simple helpers that generate the test
> names according to the order they are run. The test name can be
> configured via the reset function.
> 
> This will allow us to freely add test cases in mid of test groups

s/in mid of/in the middle of/

> without the need to re-number the rest of test cases.
> ---
>  tests/testutils.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
>  tests/testutils.h |  3 +++
>  2 files changed, 49 insertions(+)
> 
> diff --git a/tests/testutils.c b/tests/testutils.c
> index 9a79f98..c7d2615 100644
> --- a/tests/testutils.c
> +++ b/tests/testutils.c
> @@ -986,3 +986,49 @@ virDomainXMLOptionPtr virTestGenericDomainXMLConfInit(void)
>                                   &virTestGenericPrivateDataCallbacks,
>                                   NULL);
>  }
> +
> +
> +static int virtTestCounter;
> +static char virtTestCounterStr[128];
> +static char *virtTestCounterPrefixEndOffset;
> +
> +
> +/**
> + * virtTestCounterReset:
> + * @prefix: name of the test group
> + *
> + * Resets the counter and sets up the test group name to use with
> + * virtTestCounterNext(). This function is not thread safe.
> + */
> +void
> +virtTestCounterReset(const char *prefix)
> +{
> +    virtTestCounter = 0;

Not that it'd happen, but if the prefix was larger than 128
characters... ;-)

> +
> +    ignore_value(virStrcpyStatic(virtTestCounterStr, prefix));
> +    virtTestCounterPrefixEndOffset = strchrnul(virtTestCounterStr, '\0');
> +}
> +
> +
> +/**
> + * virtTestCounterNext:
> + *
> + * This function is designed to ease test creation and reordering by adding
> + * a way to do automagic test case numbring.

s/numbring/numbering

> + *
> + * Returns string consisting of test name prefix configured via
> + * virtTestCounterReset() and a number that increments in every call of this
> + * function. This function is not thread safe.
> + */
> +const char
> +*virtTestCounterNext(void)
> +{
> +    size_t len = ARRAY_CARDINALITY(virtTestCounterStr);
> +
> +    /* calculate length of the rest of the string */
> +    len -= (virtTestCounterPrefixEndOffset - virtTestCounterStr);
> +
> +    snprintf(virtTestCounterPrefixEndOffset, len, "%d", ++virtTestCounter);
> +
> +    return virtTestCounterStr;
> +}
> diff --git a/tests/testutils.h b/tests/testutils.h
> index d78818d..155b30f 100644
> --- a/tests/testutils.h
> +++ b/tests/testutils.h
> @@ -82,6 +82,9 @@ char *virtTestLogContentAndReset(void);
> 
>  void virtTestQuiesceLibvirtErrors(bool always);
> 
> +void virtTestCounterReset(const char *prefix);
> +const char *virtTestCounterNext(void);
> +
>  int virtTestMain(int argc,
>                   char **argv,
>                   int (*func)(void));
> 




More information about the libvir-list mailing list