Peter Xu <pet...@redhat.com> writes:

> On Fri, Nov 24, 2023 at 01:14:31PM -0300, Fabiano Rosas wrote:
>> Our usage of gtest results in us losing the very basic functionality
>> of "knowing which test failed". The issue is that gtest only prints
>> test names ("paths" in gtest parlance) once the test has finished, but
>> we use asserts in the tests and crash gtest itself before it can print
>> anything. We also use a final abort when the result of g_test_run is
>> not 0.
>> 
>> Depending on how the test failed/broke we can see the function that
>> trigged the abort, which may be representative of the test, but it
>> could also just be some generic function.
>> 
>> We have been relying on the primitive method of looking at the name of
>> the previous successful test and then looking at the code to figure
>> out which test should have come next.
>> 
>> Add a wrapper to the test registration that does the job of printing
>> the test name before running.
>> 
>> Signed-off-by: Fabiano Rosas <faro...@suse.de>
>> ---
>>  tests/qtest/migration-helpers.c | 32 ++++++++++++++++++++++++++++++++
>>  tests/qtest/migration-helpers.h |  1 +
>>  2 files changed, 33 insertions(+)
>> 
>> diff --git a/tests/qtest/migration-helpers.c 
>> b/tests/qtest/migration-helpers.c
>> index f1106128a9..164e09c299 100644
>> --- a/tests/qtest/migration-helpers.c
>> +++ b/tests/qtest/migration-helpers.c
>> @@ -298,3 +298,35 @@ char *resolve_machine_version(const char *alias, const 
>> char *var1,
>>  
>>      return find_common_machine_version(machine_name, var1, var2);
>>  }
>> +
>> +typedef struct {
>> +    char *name;
>> +    void (*func)(void);
>> +} MigrationTest;
>> +
>> +static void migration_test_destroy(gpointer data)
>> +{
>> +    MigrationTest *test = (MigrationTest *)data;
>> +
>> +    g_free(test->name);
>> +    g_free(test);
>> +}
>> +
>> +static void migration_test_wrapper(const void *data)
>> +{
>> +    MigrationTest *test = (MigrationTest *)data;
>> +
>> +    g_test_message("Running /%s%s", qtest_get_arch(), test->name);
>
> /%s/%s?

The test name contains a leading slash.

Reply via email to