[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] bios-tables-test: don't disassemble empty files
From: |
Michael S. Tsirkin |
Subject: |
[PATCH] bios-tables-test: don't disassemble empty files |
Date: |
Tue, 19 Oct 2021 06:12:49 -0400 |
A recommended way to populate new tables is to have an
empty expected file. In this case, attempts to disassemble
will fail but it is useful to disassemble the actual files.
Detect and skip decompile step in this case.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
tests/qtest/bios-tables-test.c | 32 +++++++++++++++++++++++++-------
1 file changed, 25 insertions(+), 7 deletions(-)
diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index a5546180b7..ee0ddb088e 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -271,19 +271,28 @@ static void dump_aml_files(test_data *data, bool rebuild)
}
}
+static bool create_tmp_asl(AcpiSdtTable *sdt)
+{
+ GError *error = NULL;
+ gint fd;
+
+ fd = g_file_open_tmp("asl-XXXXXX.dsl", &sdt->asl_file, &error);
+ g_assert_no_error(error);
+ close(fd);
+
+ return false;
+}
+
static bool load_asl(GArray *sdts, AcpiSdtTable *sdt)
{
AcpiSdtTable *temp;
GError *error = NULL;
GString *command_line = g_string_new(iasl);
- gint fd;
gchar *out, *out_err;
gboolean ret;
int i;
- fd = g_file_open_tmp("asl-XXXXXX.dsl", &sdt->asl_file, &error);
- g_assert_no_error(error);
- close(fd);
+ create_tmp_asl(sdt);
/* build command line */
g_string_append_printf(command_line, " -p %s ", sdt->asl_file);
@@ -463,11 +472,20 @@ static void test_acpi_asl(test_data *data)
err = load_asl(data->tables, sdt);
asl = normalize_asl(sdt->asl);
- exp_err = load_asl(exp_data.tables, exp_sdt);
- exp_asl = normalize_asl(exp_sdt->asl);
+ /*
+ * If expected file is empty - it's likely that it was a stub just
+ * created for step 1 above: we do want to decompile the actual one.
+ */
+ if (exp_sdt->aml_len) {
+ exp_err = load_asl(exp_data.tables, exp_sdt);
+ exp_asl = normalize_asl(exp_sdt->asl);
+ } else {
+ exp_err = create_tmp_asl(exp_sdt);
+ GString *asl = g_string_new("");
+ }
/* TODO: check for warnings */
- g_assert(!err || exp_err);
+ g_assert(!err || exp_err || !exp_sdt->aml_len);
if (g_strcmp0(asl->str, exp_asl->str)) {
sdt->tmp_files_retain = true;
--
MST
- [PATCH] bios-tables-test: don't disassemble empty files,
Michael S. Tsirkin <=