aboutsummaryrefslogtreecommitdiff
path: root/tests/qtest
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2021-10-19 06:07:45 -0400
committerMichael S. Tsirkin <mst@redhat.com>2021-10-20 04:44:05 -0400
commit81d7228647e0bd17d4f4f0434b8ed410fe5f7497 (patch)
treecd64a509522c8e0ffcfc897ccbc1a6fb901957ad /tests/qtest
parent71352aa95bf49d7a0ddab4e685147974c32ebc2c (diff)
downloadqemu-81d7228647e0bd17d4f4f0434b8ed410fe5f7497.zip
qemu-81d7228647e0bd17d4f4f0434b8ed410fe5f7497.tar.gz
qemu-81d7228647e0bd17d4f4f0434b8ed410fe5f7497.tar.bz2
bios-tables-test: don't disassemble empty files
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>
Diffstat (limited to 'tests/qtest')
-rw-r--r--tests/qtest/bios-tables-test.c32
1 files changed, 25 insertions, 7 deletions
diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 6e21a65..798f68c 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);
+ exp_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;