From d5f887a1c4123277002a970ac0bb88948cc5af40 Mon Sep 17 00:00:00 2001 From: des Date: Thu, 14 Jun 2007 16:38:58 +0000 Subject: [PATCH] Rather than start and stop the engine for every test case, just stop (and restart) it if a test failed. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1516 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-tools/regress/lib/Varnish/Test.pm | 25 +++++++++++-------- .../regress/lib/Varnish/Test/Case.pm | 5 ++++ varnish-tools/regress/varnish-regress.pl | 8 +++--- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/varnish-tools/regress/lib/Varnish/Test.pm b/varnish-tools/regress/lib/Varnish/Test.pm index 2bf963c4..1ae8da24 100644 --- a/varnish-tools/regress/lib/Varnish/Test.pm +++ b/varnish-tools/regress/lib/Varnish/Test.pm @@ -67,8 +67,6 @@ flow related to the select-loop. package Varnish::Test; -use Carp 'croak'; - use Varnish::Test::Engine; sub new($) { @@ -89,7 +87,10 @@ sub start_engine($;@) { sub stop_engine($;$) { my ($self) = @_; - (delete $self->{'engine'})->shutdown if defined $self->{'engine'}; + if (defined($self->{'engine'})) { + $self->{'engine'}->shutdown(); + delete $self->{'engine'}; + } } sub run_case($$) { @@ -98,19 +99,23 @@ sub run_case($$) { my $module = 'Varnish::Test::Case::' . $name; eval 'use ' . $module; - croak $@ if $@; + die $@ if $@; - $self->start_engine; + $self->start_engine(); my $case = $module->new($self->{'engine'}); push(@{$self->{'cases'}}, $case); - $case->init; - $case->run; - $case->fini; - - $self->stop_engine; + eval { + $case->init(); + $case->run(); + $case->fini(); + }; + if ($@) { + $self->{'engine'}->log($self, 'TST: ', $@); + $self->stop_engine(); + } } 1; diff --git a/varnish-tools/regress/lib/Varnish/Test/Case.pm b/varnish-tools/regress/lib/Varnish/Test/Case.pm index 7a860605..5d352ae4 100644 --- a/varnish-tools/regress/lib/Varnish/Test/Case.pm +++ b/varnish-tools/regress/lib/Varnish/Test/Case.pm @@ -97,6 +97,11 @@ sub fini($) { } delete $self->{'engine'}->{'case'}; + + if ($self->{'failed'}) { + die sprintf("%d out of %d tests failed\n", + $self->{'failed'}, $self->{'count'}); + } } sub run($;@) { diff --git a/varnish-tools/regress/varnish-regress.pl b/varnish-tools/regress/varnish-regress.pl index 81e512e4..4c5efe57 100755 --- a/varnish-tools/regress/varnish-regress.pl +++ b/varnish-tools/regress/varnish-regress.pl @@ -86,16 +86,18 @@ MAIN:{ } } - my $controller = Varnish::Test->new; + my $controller = new Varnish::Test; + $controller->start_engine(); foreach my $casename (@casenames) { $controller->run_case($casename); } + $controller->stop_engine(); foreach my $case (@{$controller->{'cases'}}) { (my $name = ref($case)) =~ s/.*://; - print sprintf("%s: Successful: %d Failed: %d\n", - $name, $case->{'successful'}, $case->{'failed'}); + printf("%s: Successful: %d Failed: %d\n", + $name, $case->{'successful'}, $case->{'failed'}); } } -- 2.39.5