diff mbox series

[RFC,v14,52/80] tests: device-introspect-test: cope with ARM TCG-only devices

Message ID 20210416162824.25131-53-cfontana@suse.de (mailing list archive)
State New, archived
Headers show
Series arm cleanup experiment for kvm-only build | expand

Commit Message

Claudio Fontana April 16, 2021, 4:27 p.m. UTC
Skip the test_device_intro_concrete for now for ARM KVM-only build,
as on ARM we currently build devices for ARM that are not
compatible with a KVM-only build.

We can remove this workaround when we fix this in KConfig etc,
and we only list and build machines that are compatible with KVM
for KVM-only builds.

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/qtest/device-introspect-test.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

Comments

Thomas Huth April 19, 2021, 10:22 a.m. UTC | #1
On 16/04/2021 18.27, Claudio Fontana wrote:
> Skip the test_device_intro_concrete for now for ARM KVM-only build,
> as on ARM we currently build devices for ARM that are not
> compatible with a KVM-only build.
> 
> We can remove this workaround when we fix this in KConfig etc,
> and we only list and build machines that are compatible with KVM
> for KVM-only builds.
> 
> Signed-off-by: Claudio Fontana <cfontana@suse.de>
> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>   tests/qtest/device-introspect-test.c | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
> 
> diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
> index bbec166dbc..1ff15e2247 100644
> --- a/tests/qtest/device-introspect-test.c
> +++ b/tests/qtest/device-introspect-test.c
> @@ -329,12 +329,30 @@ int main(int argc, char **argv)
>       qtest_add_func("device/introspect/none", test_device_intro_none);
>       qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
>       qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
> +
> +    /*
> +     * XXX currently we build also boards for ARM that are incompatible with KVM.
> +     * We therefore need to check this explicitly, and only test virt for kvm-only
> +     * arm builds.
> +     * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
> +     * are built for the kvm-only build, we could remove this.
> +     */
> +#ifndef CONFIG_TCG
> +    {
> +        const char *arch = qtest_get_arch();
> +        if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
> +            goto add_machine_test_done;
> +        }
> +    }
> +#endif /* !CONFIG_TCG */
>       if (g_test_quick()) {
>           qtest_add_data_func("device/introspect/concrete/defaults/none",
>                               g_strdup(common_args), test_device_intro_concrete);
>       } else {
>           qtest_cb_for_every_machine(add_machine_test_case, true);
>       }
> +    goto add_machine_test_done;

That last goto does not make much sense, since the label is right below.

  Thomas


> + add_machine_test_done:
>       return g_test_run();
>   }
>
Claudio Fontana April 19, 2021, 10:24 a.m. UTC | #2
On 4/19/21 12:22 PM, Thomas Huth wrote:
> On 16/04/2021 18.27, Claudio Fontana wrote:
>> Skip the test_device_intro_concrete for now for ARM KVM-only build,
>> as on ARM we currently build devices for ARM that are not
>> compatible with a KVM-only build.
>>
>> We can remove this workaround when we fix this in KConfig etc,
>> and we only list and build machines that are compatible with KVM
>> for KVM-only builds.
>>
>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>   tests/qtest/device-introspect-test.c | 18 ++++++++++++++++++
>>   1 file changed, 18 insertions(+)
>>
>> diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
>> index bbec166dbc..1ff15e2247 100644
>> --- a/tests/qtest/device-introspect-test.c
>> +++ b/tests/qtest/device-introspect-test.c
>> @@ -329,12 +329,30 @@ int main(int argc, char **argv)
>>       qtest_add_func("device/introspect/none", test_device_intro_none);
>>       qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
>>       qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
>> +
>> +    /*
>> +     * XXX currently we build also boards for ARM that are incompatible with KVM.
>> +     * We therefore need to check this explicitly, and only test virt for kvm-only
>> +     * arm builds.
>> +     * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
>> +     * are built for the kvm-only build, we could remove this.
>> +     */
>> +#ifndef CONFIG_TCG
>> +    {
>> +        const char *arch = qtest_get_arch();
>> +        if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
>> +            goto add_machine_test_done;
>> +        }
>> +    }
>> +#endif /* !CONFIG_TCG */
>>       if (g_test_quick()) {
>>           qtest_add_data_func("device/introspect/concrete/defaults/none",
>>                               g_strdup(common_args), test_device_intro_concrete);
>>       } else {
>>           qtest_cb_for_every_machine(add_machine_test_case, true);
>>       }
>> +    goto add_machine_test_done;
> 
> That last goto does not make much sense, since the label is right below.

It is necessary to remove the warning that is otherwise produced about the unused label IIRC.

Ciao,

Claudio

> 
>   Thomas
> 
> 
>> + add_machine_test_done:
>>       return g_test_run();
>>   }
>>
>
Thomas Huth April 19, 2021, 10:29 a.m. UTC | #3
On 19/04/2021 12.24, Claudio Fontana wrote:
> On 4/19/21 12:22 PM, Thomas Huth wrote:
>> On 16/04/2021 18.27, Claudio Fontana wrote:
>>> Skip the test_device_intro_concrete for now for ARM KVM-only build,
>>> as on ARM we currently build devices for ARM that are not
>>> compatible with a KVM-only build.
>>>
>>> We can remove this workaround when we fix this in KConfig etc,
>>> and we only list and build machines that are compatible with KVM
>>> for KVM-only builds.
>>>
>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>> ---
>>>    tests/qtest/device-introspect-test.c | 18 ++++++++++++++++++
>>>    1 file changed, 18 insertions(+)
>>>
>>> diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
>>> index bbec166dbc..1ff15e2247 100644
>>> --- a/tests/qtest/device-introspect-test.c
>>> +++ b/tests/qtest/device-introspect-test.c
>>> @@ -329,12 +329,30 @@ int main(int argc, char **argv)
>>>        qtest_add_func("device/introspect/none", test_device_intro_none);
>>>        qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
>>>        qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
>>> +
>>> +    /*
>>> +     * XXX currently we build also boards for ARM that are incompatible with KVM.
>>> +     * We therefore need to check this explicitly, and only test virt for kvm-only
>>> +     * arm builds.
>>> +     * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
>>> +     * are built for the kvm-only build, we could remove this.
>>> +     */
>>> +#ifndef CONFIG_TCG
>>> +    {
>>> +        const char *arch = qtest_get_arch();
>>> +        if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
>>> +            goto add_machine_test_done;
>>> +        }
>>> +    }
>>> +#endif /* !CONFIG_TCG */
>>>        if (g_test_quick()) {
>>>            qtest_add_data_func("device/introspect/concrete/defaults/none",
>>>                                g_strdup(common_args), test_device_intro_concrete);
>>>        } else {
>>>            qtest_cb_for_every_machine(add_machine_test_case, true);
>>>        }
>>> +    goto add_machine_test_done;
>>
>> That last goto does not make much sense, since the label is right below.
> 
> It is necessary to remove the warning that is otherwise produced about the unused label IIRC.

Ah, ok.

Alternatively, you could maybe also drop the label completely and simply 
write the #ifndef block above like this (note the "else"):

#ifndef CONFIG_TCG
     const char *arch = qtest_get_arch();
     if (!strcmp(arch, "arm") || !strcmp(arch, "aarch64")) {
         /* Do nothing */
     }
     else
#endif /* !CONFIG_TCG */

... not sure what's nicer, though.

  Thomas
Claudio Fontana April 19, 2021, 10:33 a.m. UTC | #4
On 4/19/21 12:29 PM, Thomas Huth wrote:
> On 19/04/2021 12.24, Claudio Fontana wrote:
>> On 4/19/21 12:22 PM, Thomas Huth wrote:
>>> On 16/04/2021 18.27, Claudio Fontana wrote:
>>>> Skip the test_device_intro_concrete for now for ARM KVM-only build,
>>>> as on ARM we currently build devices for ARM that are not
>>>> compatible with a KVM-only build.
>>>>
>>>> We can remove this workaround when we fix this in KConfig etc,
>>>> and we only list and build machines that are compatible with KVM
>>>> for KVM-only builds.
>>>>
>>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>>> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>> ---
>>>>    tests/qtest/device-introspect-test.c | 18 ++++++++++++++++++
>>>>    1 file changed, 18 insertions(+)
>>>>
>>>> diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
>>>> index bbec166dbc..1ff15e2247 100644
>>>> --- a/tests/qtest/device-introspect-test.c
>>>> +++ b/tests/qtest/device-introspect-test.c
>>>> @@ -329,12 +329,30 @@ int main(int argc, char **argv)
>>>>        qtest_add_func("device/introspect/none", test_device_intro_none);
>>>>        qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
>>>>        qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
>>>> +
>>>> +    /*
>>>> +     * XXX currently we build also boards for ARM that are incompatible with KVM.
>>>> +     * We therefore need to check this explicitly, and only test virt for kvm-only
>>>> +     * arm builds.
>>>> +     * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
>>>> +     * are built for the kvm-only build, we could remove this.
>>>> +     */
>>>> +#ifndef CONFIG_TCG
>>>> +    {
>>>> +        const char *arch = qtest_get_arch();
>>>> +        if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
>>>> +            goto add_machine_test_done;
>>>> +        }
>>>> +    }
>>>> +#endif /* !CONFIG_TCG */
>>>>        if (g_test_quick()) {
>>>>            qtest_add_data_func("device/introspect/concrete/defaults/none",
>>>>                                g_strdup(common_args), test_device_intro_concrete);
>>>>        } else {
>>>>            qtest_cb_for_every_machine(add_machine_test_case, true);
>>>>        }
>>>> +    goto add_machine_test_done;
>>>
>>> That last goto does not make much sense, since the label is right below.
>>
>> It is necessary to remove the warning that is otherwise produced about the unused label IIRC.
> 
> Ah, ok.
> 
> Alternatively, you could maybe also drop the label completely and simply 
> write the #ifndef block above like this (note the "else"):
> 
> #ifndef CONFIG_TCG
>      const char *arch = qtest_get_arch();
>      if (!strcmp(arch, "arm") || !strcmp(arch, "aarch64")) {
>          /* Do nothing */
>      }
>      else
> #endif /* !CONFIG_TCG */
> 
> ... not sure what's nicer, though.
> 
>   Thomas
> 

Indeed, I tried a couple of combinations, in the end to me the less confusing was the goto one,
the #ifdef containing an open else is in my opinion worse, more error-prone, but I am open to additional comments/ideas.

Thanks,

Claudio
Alex Bennée April 20, 2021, 9:34 a.m. UTC | #5
Claudio Fontana <cfontana@suse.de> writes:

> On 4/19/21 12:29 PM, Thomas Huth wrote:
>> On 19/04/2021 12.24, Claudio Fontana wrote:
>>> On 4/19/21 12:22 PM, Thomas Huth wrote:
>>>> On 16/04/2021 18.27, Claudio Fontana wrote:
>>>>> Skip the test_device_intro_concrete for now for ARM KVM-only build,
>>>>> as on ARM we currently build devices for ARM that are not
>>>>> compatible with a KVM-only build.
>>>>>
>>>>> We can remove this workaround when we fix this in KConfig etc,
>>>>> and we only list and build machines that are compatible with KVM
>>>>> for KVM-only builds.
>>>>>
>>>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>>>> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>>> ---
>>>>>    tests/qtest/device-introspect-test.c | 18 ++++++++++++++++++
>>>>>    1 file changed, 18 insertions(+)
>>>>>
>>>>> diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
>>>>> index bbec166dbc..1ff15e2247 100644
>>>>> --- a/tests/qtest/device-introspect-test.c
>>>>> +++ b/tests/qtest/device-introspect-test.c
>>>>> @@ -329,12 +329,30 @@ int main(int argc, char **argv)
>>>>>        qtest_add_func("device/introspect/none", test_device_intro_none);
>>>>>        qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
>>>>>        qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
>>>>> +
>>>>> +    /*
>>>>> +     * XXX currently we build also boards for ARM that are incompatible with KVM.
>>>>> +     * We therefore need to check this explicitly, and only test virt for kvm-only
>>>>> +     * arm builds.
>>>>> +     * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
>>>>> +     * are built for the kvm-only build, we could remove this.
>>>>> +     */
>>>>> +#ifndef CONFIG_TCG
>>>>> +    {
>>>>> +        const char *arch = qtest_get_arch();
>>>>> +        if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
>>>>> +            goto add_machine_test_done;
>>>>> +        }
>>>>> +    }
>>>>> +#endif /* !CONFIG_TCG */
>>>>>        if (g_test_quick()) {
>>>>>            qtest_add_data_func("device/introspect/concrete/defaults/none",
>>>>>                                g_strdup(common_args), test_device_intro_concrete);
>>>>>        } else {
>>>>>            qtest_cb_for_every_machine(add_machine_test_case, true);
>>>>>        }
>>>>> +    goto add_machine_test_done;
>>>>
>>>> That last goto does not make much sense, since the label is right below.
>>>
>>> It is necessary to remove the warning that is otherwise produced about the unused label IIRC.
>> 
>> Ah, ok.
>> 
>> Alternatively, you could maybe also drop the label completely and simply 
>> write the #ifndef block above like this (note the "else"):
>> 
>> #ifndef CONFIG_TCG
>>      const char *arch = qtest_get_arch();
>>      if (!strcmp(arch, "arm") || !strcmp(arch, "aarch64")) {
>>          /* Do nothing */
>>      }
>>      else
>> #endif /* !CONFIG_TCG */
>> 
>> ... not sure what's nicer, though.
>> 
>>   Thomas
>> 
>
> Indeed, I tried a couple of combinations, in the end to me the less confusing was the goto one,
> the #ifdef containing an open else is in my opinion worse, more
> error-prone, but I am open to additional comments/ideas.

Surely a helper makes intent clearer?

  /*
   * XXX currently we build also boards for ARM that are incompatible with KVM.
   * We therefore need to check this explicitly, and only test virt for kvm-only
   * arm builds.
   * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
   * are built for the kvm-only build, we could remove this.
   */
  static bool skip_machine_tests(void)
  {
  #ifndef CONFIG_TCG
      const char *arch = qtest_get_arch();
      if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
          return true;
      }
  #endif /* !CONFIG_TCG */
      return false;
  }


  int main(int argc, char **argv)
  {
      g_test_init(&argc, &argv, NULL);

      qtest_add_func("device/introspect/list", test_device_intro_list);
      qtest_add_func("device/introspect/list-fields", test_qom_list_fields);
      qtest_add_func("device/introspect/none", test_device_intro_none);
      qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
      qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);

      if (!skip_machine_tests()) {
          if (g_test_quick()) {
              qtest_add_data_func("device/introspect/concrete/defaults/none",
                                  g_strdup(common_args), test_device_intro_concrete);
          } else {
              qtest_cb_for_every_machine(add_machine_test_case, true);
          }
      }

      return g_test_run();
  }


>
> Thanks,
>
> Claudio
Claudio Fontana April 20, 2021, 10:53 a.m. UTC | #6
On 4/20/21 11:34 AM, Alex Bennée wrote:
> 
> Claudio Fontana <cfontana@suse.de> writes:
> 
>> On 4/19/21 12:29 PM, Thomas Huth wrote:
>>> On 19/04/2021 12.24, Claudio Fontana wrote:
>>>> On 4/19/21 12:22 PM, Thomas Huth wrote:
>>>>> On 16/04/2021 18.27, Claudio Fontana wrote:
>>>>>> Skip the test_device_intro_concrete for now for ARM KVM-only build,
>>>>>> as on ARM we currently build devices for ARM that are not
>>>>>> compatible with a KVM-only build.
>>>>>>
>>>>>> We can remove this workaround when we fix this in KConfig etc,
>>>>>> and we only list and build machines that are compatible with KVM
>>>>>> for KVM-only builds.
>>>>>>
>>>>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>>>>> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>>>> ---
>>>>>>    tests/qtest/device-introspect-test.c | 18 ++++++++++++++++++
>>>>>>    1 file changed, 18 insertions(+)
>>>>>>
>>>>>> diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
>>>>>> index bbec166dbc..1ff15e2247 100644
>>>>>> --- a/tests/qtest/device-introspect-test.c
>>>>>> +++ b/tests/qtest/device-introspect-test.c
>>>>>> @@ -329,12 +329,30 @@ int main(int argc, char **argv)
>>>>>>        qtest_add_func("device/introspect/none", test_device_intro_none);
>>>>>>        qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
>>>>>>        qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
>>>>>> +
>>>>>> +    /*
>>>>>> +     * XXX currently we build also boards for ARM that are incompatible with KVM.
>>>>>> +     * We therefore need to check this explicitly, and only test virt for kvm-only
>>>>>> +     * arm builds.
>>>>>> +     * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
>>>>>> +     * are built for the kvm-only build, we could remove this.
>>>>>> +     */
>>>>>> +#ifndef CONFIG_TCG
>>>>>> +    {
>>>>>> +        const char *arch = qtest_get_arch();
>>>>>> +        if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
>>>>>> +            goto add_machine_test_done;
>>>>>> +        }
>>>>>> +    }
>>>>>> +#endif /* !CONFIG_TCG */
>>>>>>        if (g_test_quick()) {
>>>>>>            qtest_add_data_func("device/introspect/concrete/defaults/none",
>>>>>>                                g_strdup(common_args), test_device_intro_concrete);
>>>>>>        } else {
>>>>>>            qtest_cb_for_every_machine(add_machine_test_case, true);
>>>>>>        }
>>>>>> +    goto add_machine_test_done;
>>>>>
>>>>> That last goto does not make much sense, since the label is right below.
>>>>
>>>> It is necessary to remove the warning that is otherwise produced about the unused label IIRC.
>>>
>>> Ah, ok.
>>>
>>> Alternatively, you could maybe also drop the label completely and simply 
>>> write the #ifndef block above like this (note the "else"):
>>>
>>> #ifndef CONFIG_TCG
>>>      const char *arch = qtest_get_arch();
>>>      if (!strcmp(arch, "arm") || !strcmp(arch, "aarch64")) {
>>>          /* Do nothing */
>>>      }
>>>      else
>>> #endif /* !CONFIG_TCG */
>>>
>>> ... not sure what's nicer, though.
>>>
>>>   Thomas
>>>
>>
>> Indeed, I tried a couple of combinations, in the end to me the less confusing was the goto one,
>> the #ifdef containing an open else is in my opinion worse, more
>> error-prone, but I am open to additional comments/ideas.
> 
> Surely a helper makes intent clearer?

Yes, thank you :-)

Ciao,

Claudio

> 
>   /*
>    * XXX currently we build also boards for ARM that are incompatible with KVM.
>    * We therefore need to check this explicitly, and only test virt for kvm-only
>    * arm builds.
>    * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
>    * are built for the kvm-only build, we could remove this.
>    */
>   static bool skip_machine_tests(void)
>   {
>   #ifndef CONFIG_TCG
>       const char *arch = qtest_get_arch();
>       if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
>           return true;
>       }
>   #endif /* !CONFIG_TCG */
>       return false;
>   }
> 
> 
>   int main(int argc, char **argv)
>   {
>       g_test_init(&argc, &argv, NULL);
> 
>       qtest_add_func("device/introspect/list", test_device_intro_list);
>       qtest_add_func("device/introspect/list-fields", test_qom_list_fields);
>       qtest_add_func("device/introspect/none", test_device_intro_none);
>       qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
>       qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
> 
>       if (!skip_machine_tests()) {
>           if (g_test_quick()) {
>               qtest_add_data_func("device/introspect/concrete/defaults/none",
>                                   g_strdup(common_args), test_device_intro_concrete);
>           } else {
>               qtest_cb_for_every_machine(add_machine_test_case, true);
>           }
>       }
> 
>       return g_test_run();
>   }
> 
> 
>>
>> Thanks,
>>
>> Claudio
> 
>
diff mbox series

Patch

diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
index bbec166dbc..1ff15e2247 100644
--- a/tests/qtest/device-introspect-test.c
+++ b/tests/qtest/device-introspect-test.c
@@ -329,12 +329,30 @@  int main(int argc, char **argv)
     qtest_add_func("device/introspect/none", test_device_intro_none);
     qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
     qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
+
+    /*
+     * XXX currently we build also boards for ARM that are incompatible with KVM.
+     * We therefore need to check this explicitly, and only test virt for kvm-only
+     * arm builds.
+     * After we do the work of Kconfig etc to ensure that only KVM-compatible boards
+     * are built for the kvm-only build, we could remove this.
+     */
+#ifndef CONFIG_TCG
+    {
+        const char *arch = qtest_get_arch();
+        if (strcmp(arch, "arm") == 0 || strcmp(arch, "aarch64") == 0) {
+            goto add_machine_test_done;
+        }
+    }
+#endif /* !CONFIG_TCG */
     if (g_test_quick()) {
         qtest_add_data_func("device/introspect/concrete/defaults/none",
                             g_strdup(common_args), test_device_intro_concrete);
     } else {
         qtest_cb_for_every_machine(add_machine_test_case, true);
     }
+    goto add_machine_test_done;
 
+ add_machine_test_done:
     return g_test_run();
 }