From 1e27bda1aa5d7e7af3bd46778c1293cf3c8b3f48 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Fri, 21 Aug 2020 10:38:27 +0200 Subject: [PATCH] tests: cfg2cmd: check also warnings Signed-off-by: Thomas Lamprecht --- .../custom-cpu-model-host-phys-bits.conf | 1 + test/cfg2cmd/custom-cpu-model.conf | 1 + test/run_config2command_tests.pl | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/test/cfg2cmd/custom-cpu-model-host-phys-bits.conf b/test/cfg2cmd/custom-cpu-model-host-phys-bits.conf index a770d93..76abef6 100644 --- a/test/cfg2cmd/custom-cpu-model-host-phys-bits.conf +++ b/test/cfg2cmd/custom-cpu-model-host-phys-bits.conf @@ -1,4 +1,5 @@ # TEST: Check if custom CPU models are resolved correctly +# EXPECT_WARN: warning: CPU flag/setting '-kvm_pv_unhalt' (set by custom CPU model) overwrites '+kvm_pv_unhalt' (set by PVE; to improve Linux guest spinlock performance) cores: 3 cpu: custom-qemu64,phys-bits=host name: customcpu diff --git a/test/cfg2cmd/custom-cpu-model.conf b/test/cfg2cmd/custom-cpu-model.conf index f1fa6ca..f4df6eb 100644 --- a/test/cfg2cmd/custom-cpu-model.conf +++ b/test/cfg2cmd/custom-cpu-model.conf @@ -1,4 +1,5 @@ # TEST: Check if custom CPU models are resolved correctly +# EXPECT_WARN: warning: CPU flag/setting '-kvm_pv_unhalt' (set by custom CPU model) overwrites '+kvm_pv_unhalt' (set by PVE; to improve Linux guest spinlock performance) cores: 3 cpu: custom-qemu64,flags=+virt-ssbd name: customcpu diff --git a/test/run_config2command_tests.pl b/test/run_config2command_tests.pl index 7a4c0eb..2ea6f83 100755 --- a/test/run_config2command_tests.pl +++ b/test/run_config2command_tests.pl @@ -84,6 +84,8 @@ my $current_test; # = { # description => 'Test description', # if available # qemu_version => '2.12', # host_arch => 'HOST_ARCH', +# expected_error => 'error message', +# expected_warning => 'warning message', # config => { config hash }, # expected => [ expected outcome cmd line array ], # }; @@ -92,6 +94,7 @@ my $current_test; # = { # TEST: A single line describing the test, gets outputted # QEMU_VERSION: \d+\.\d+(\.\d+)? (defaults to current version) # HOST_ARCH: x86_64 | aarch64 (default to x86_64, to make tests stable) +# EXPECT_ERROR: For negative tests # all fields are optional sub parse_test($) { my ($config_fn) = @_; @@ -120,6 +123,8 @@ sub parse_test($) { $current_test->{host_arch} = "$1"; } elsif ($line =~ /^EXPECT_ERROR:\s*(.*)\s*$/) { $current_test->{expect_error} = "$1"; + } elsif ($line =~ /^EXPECT_WARN(?:ING)?:\s*(.*)\s*$/) { + $current_test->{expect_warning} = "$1"; } } @@ -306,6 +311,24 @@ sub diff($$) { die "files differ:\n$diff"; } +$SIG{__WARN__} = sub { + my $warning = shift; + chomp $warning; + if (my $warn_expect = $current_test->{expect_warning}) { + if ($warn_expect ne $warning) { + fail($current_test->{testname}); + note("warning does not match expected error: '$warning' != '$warn_expect'"); + } else { + note("got expected warning '$warning'"); + return; + } + } + + #warn "======= WARN ======\n= ". $_[0] . "===================\n"; + fail($current_test->{testname}); + note("got unexpected expected warning '$warning'"); +}; + sub do_test($) { my ($config_fn) = @_; -- 2.39.2