From c9ede993e5be5278351a6bfef06381286b7bf830 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Wed, 11 Jan 2017 13:49:17 -0800 Subject: [PATCH] Fix base_services_start The old version wasn't working - it was passing even though two services fail to start in Workstation currently. I'm really not sure why the old approach wasn't working, but it wasn't, and I rather hate `script_output` anyway, so here's a different way of doing it which relies on `eval`ing `assert_script_output` instead. (I really should send a PR for a non-fatal version of assert_script_output...) --- tests/base_services_start.pm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/base_services_start.pm b/tests/base_services_start.pm index 2c5360ee..bfc8134f 100644 --- a/tests/base_services_start.pm +++ b/tests/base_services_start.pm @@ -6,11 +6,19 @@ sub run { my $self = shift; # switch to TTY3 for both, graphical and console tests $self->root_console(tty=>3); - my $output = script_output 'systemctl --failed'; - if ($output =~ /1 loaded units/ && $output =~ /mcelog.service/) { + # dump the systemctl output + assert_script_run "systemctl --failed | tee /tmp/failed.txt"; + # if we have 0 failed services, we're good + eval "assert_script_run 'grep \"0 loaded units\" /tmp/failed.txt';"; + return unless $@; + # if only mcelog failed, that's a soft fail + eval "assert_script_run 'grep \"1 loaded units\" /tmp/failed.txt';"; + if ($@) { + die "More than one services failed to start"; + } + else { + assert_script_run "systemctl is-failed mcelog.service"; record_soft_failure; - } elsif (! $output =~ /0 loaded units/) { - die "Services other than mcelog failed to load"; } }