[pve-devel] applied: [PATCH qemu-server] cfg2cmd: allow to test for expected error messages

Thomas Lamprecht t.lamprecht at proxmox.com
Tue Dec 10 11:09:19 CET 2019


Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
---
 .../minimal-defaults-to-new-machine.conf      |  5 ++++
 test/run_config2command_tests.pl              | 25 ++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)
 create mode 100644 test/cfg2cmd/minimal-defaults-to-new-machine.conf

diff --git a/test/cfg2cmd/minimal-defaults-to-new-machine.conf b/test/cfg2cmd/minimal-defaults-to-new-machine.conf
new file mode 100644
index 0000000..5c0486b
--- /dev/null
+++ b/test/cfg2cmd/minimal-defaults-to-new-machine.conf
@@ -0,0 +1,5 @@
+# TEST: newer machine verison than QEMU version installed on node
+# QEMU_VERSION: 4.1.1
+# EXPECT_ERROR: Installed QEMU version '4.1.1' is too old to run machine type 'pc-q35-42.9', please upgrade node 'localhost'
+smbios1: uuid=6cf17dc3-8341-4ecc-aebd-7503f2583fb3
+machine: pc-q35-42.9
diff --git a/test/run_config2command_tests.pl b/test/run_config2command_tests.pl
index c75be53..bad6501 100755
--- a/test/run_config2command_tests.pl
+++ b/test/run_config2command_tests.pl
@@ -117,6 +117,8 @@ sub parse_test($) {
 	    $current_test->{qemu_version} = "$1";
 	} elsif ($line =~ /^HOST_ARCH:\s*(.*)\s*$/) {
 	    $current_test->{host_arch} = "$1";
+	} elsif ($line =~ /^EXPECT_ERROR:\s*(.*)\s*$/) {
+	    $current_test->{expect_error} = "$1";
 	}
     }
 }
@@ -280,7 +282,28 @@ sub do_test($) {
 
     my ($vmid, $storecfg) = $base_env->@{qw(vmid storage_config)};
 
-    my $cmdline = PVE::QemuServer::vm_commandline($storecfg, $vmid);
+    my $cmdline = eval { PVE::QemuServer::vm_commandline($storecfg, $vmid) };
+    my $err = $@;
+
+    if (my $err_expect = $current_test->{expect_error}) {
+	if (!$err) {
+	    fail("$testname");
+	    note("did NOT get any error, but expected error: $err_expect");
+	    return;
+	}
+	chomp $err;
+	if ($err !~ /^\s*$err_expect\s*$/) {
+	    fail("$testname");
+	    note("error does not match expected error: '$err' !~ '$err_expect'");
+	} else {
+	    pass("$testname");
+	}
+	return;
+    } elsif ($err) {
+	fail("$testname");
+	note("got unexpected error: $err");
+	return;
+    }
 
     # check if QEMU version set correctly and test version_cmp
     (my $qemu_major = get_test_qemu_version()) =~ s/\..*$//;
-- 
2.20.1





More information about the pve-devel mailing list