acpi-test: issue errors instead of warnings when possible

If the expected (offline) acpi tables loaded correctly,
it is safe to assume the iasl installation is OK and
issue an error if the actual tables failed to load.

Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Marcel Apfelbaum 2014-02-27 16:17:32 +02:00 committed by Michael S. Tsirkin
parent 262f6f5140
commit 15d914b18d

View File

@ -411,7 +411,7 @@ static bool compare_signature(AcpiSdtTable *sdt, uint32_t signature)
return sdt->header.signature == signature; return sdt->header.signature == signature;
} }
static void load_asl(GArray *sdts, AcpiSdtTable *sdt) static bool load_asl(GArray *sdts, AcpiSdtTable *sdt)
{ {
AcpiSdtTable *temp; AcpiSdtTable *temp;
GError *error = NULL; GError *error = NULL;
@ -440,18 +440,22 @@ static void load_asl(GArray *sdts, AcpiSdtTable *sdt)
g_string_append_printf(command_line, "-d %s", sdt->aml_file); g_string_append_printf(command_line, "-d %s", sdt->aml_file);
/* pass 'out' and 'out_err' in order to be redirected */ /* pass 'out' and 'out_err' in order to be redirected */
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, NULL, &error);
g_assert_no_error(error); g_assert_no_error(error);
ret = g_file_get_contents(sdt->asl_file, (gchar **)&sdt->asl, if (ret) {
&sdt->asl_len, &error); ret = g_file_get_contents(sdt->asl_file, (gchar **)&sdt->asl,
g_assert(ret); &sdt->asl_len, &error);
g_assert_no_error(error); g_assert(ret);
g_assert(sdt->asl_len); g_assert_no_error(error);
g_assert(sdt->asl_len);
}
g_free(out); g_free(out);
g_free(out_err); g_free(out_err);
g_string_free(command_line, true); g_string_free(command_line, true);
return !ret;
} }
#define COMMENT_END "*/" #define COMMENT_END "*/"
@ -518,6 +522,7 @@ static void test_acpi_asl(test_data *data)
int i; int i;
AcpiSdtTable *sdt, *exp_sdt; AcpiSdtTable *sdt, *exp_sdt;
test_data exp_data; test_data exp_data;
gboolean exp_err, err;
memset(&exp_data, 0, sizeof(exp_data)); memset(&exp_data, 0, sizeof(exp_data));
exp_data.tables = load_expected_aml(data); exp_data.tables = load_expected_aml(data);
@ -528,12 +533,15 @@ static void test_acpi_asl(test_data *data)
sdt = &g_array_index(data->tables, AcpiSdtTable, i); sdt = &g_array_index(data->tables, AcpiSdtTable, i);
exp_sdt = &g_array_index(exp_data.tables, AcpiSdtTable, i); exp_sdt = &g_array_index(exp_data.tables, AcpiSdtTable, i);
load_asl(data->tables, sdt); err = load_asl(data->tables, sdt);
asl = normalize_asl(sdt->asl); asl = normalize_asl(sdt->asl);
load_asl(exp_data.tables, exp_sdt); exp_err = load_asl(exp_data.tables, exp_sdt);
exp_asl = normalize_asl(exp_sdt->asl); exp_asl = normalize_asl(exp_sdt->asl);
/* TODO: check for warnings */
g_assert(!err || exp_err);
if (g_strcmp0(asl->str, exp_asl->str)) { if (g_strcmp0(asl->str, exp_asl->str)) {
sdt->tmp_files_retain = true; sdt->tmp_files_retain = true;
exp_sdt->tmp_files_retain = true; exp_sdt->tmp_files_retain = true;