From: "Daniel P. Berrange" <berra...@redhat.com> If iasl exits with non-zero status, the test unhelpfully just reports that the AML did not match, because the data files it thought iasl generated do not exist. This adds an explicit check for the exit status of iasl and prints stderr if it was non-zero. Thus gives us a fighting chance of diagnosing why iasl failed.
Signed-off-by: Daniel P. Berrange <berra...@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> Reviewed-by: Michael S. Tsirkin <m...@redhat.com> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> --- tests/bios-tables-test.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c index 564da45..ee441f1 100644 --- a/tests/bios-tables-test.c +++ b/tests/bios-tables-test.c @@ -304,6 +304,7 @@ static bool load_asl(GArray *sdts, AcpiSdtTable *sdt) gchar *out, *out_err; gboolean ret; int i; + int status; fd = g_file_open_tmp("asl-XXXXXX.dsl", &sdt->asl_file, &error); g_assert_no_error(error); @@ -324,14 +325,25 @@ static bool load_asl(GArray *sdts, AcpiSdtTable *sdt) g_string_append_printf(command_line, "-d %s", sdt->aml_file); /* pass 'out' and 'out_err' in order to be redirected */ - ret = g_spawn_command_line_sync(command_line->str, &out, &out_err, NULL, &error); + ret = g_spawn_command_line_sync(command_line->str, &out, &out_err, &status, &error); g_assert_no_error(error); if (ret) { - ret = g_file_get_contents(sdt->asl_file, (gchar **)&sdt->asl, - &sdt->asl_len, &error); - g_assert(ret); - g_assert_no_error(error); - ret = (sdt->asl_len > 0); + if (status != 0) { + g_printerr("'%s' exited with status %d", command_line->str, status); + if (!g_str_equal(out, "")) { + g_printerr("%s", out); + } + if (!g_str_equal(out_err, "")) { + g_printerr("%s", out_err); + } + ret = FALSE; + } else { + ret = g_file_get_contents(sdt->asl_file, (gchar **)&sdt->asl, + &sdt->asl_len, &error); + g_assert(ret); + g_assert_no_error(error); + ret = (sdt->asl_len > 0); + } } g_free(out); -- MST