X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=tests%2FWgetTest.pm.in;h=01657412400d57893387ccf38df1fc965c7c9adc;hb=1fe5ddb7feb233de8b312c24a2b3a482316026aa;hp=2e124e3c6d96a4c159d2b2414482136418d03376;hpb=b132127412def9e5094f70bed5792618a91b1b5d;p=wget diff --git a/tests/WgetTest.pm.in b/tests/WgetTest.pm.in index 2e124e3c..01657412 100644 --- a/tests/WgetTest.pm.in +++ b/tests/WgetTest.pm.in @@ -69,12 +69,18 @@ sub new { sub run { my $self = shift; my $result_message = "Test successful.\n"; + my $errcode; printf "Running test $self->{_name}\n"; # Setup - $self->_setup(); + my $new_result = $self->_setup(); chdir ("$self->{_workdir}/$self->{_name}/input"); + if (defined $new_result) { + $result_message = $new_result; + $errcode = 1; + goto cleanup; + } # Launch server my $pid = $self->_fork_and_launch_server(); @@ -84,10 +90,11 @@ sub run { my $cmdline = $self->{_cmdline}; $cmdline = $self->_substitute_port($cmdline); print "Calling $cmdline\n"; - my $errcode = + $errcode = ($cmdline =~ m{^/.*}) ? system ($cmdline) : system ("$self->{_workdir}/../src/$cmdline"); + $errcode >>= 8; # XXX: should handle abnormal error codes. # Shutdown server # if we didn't explicitely kill the server, we would have to call @@ -98,13 +105,14 @@ sub run { # Verify download unless ($errcode == $self->{_errcode}) { $result_message = "Test failed: wrong code returned (was: $errcode, expected: $self->{_errcode})\n"; + goto cleanup; } my $error_str; if ($error_str = $self->_verify_download()) { $result_message = $error_str; } - # Cleanup + cleanup: $self->_cleanup(); print $result_message; @@ -143,9 +151,10 @@ sub _setup { } chdir ("../input"); - $self->_setup_server(); + my $ret = $self->_setup_server(); chdir ($self->{_workdir}); + return $ret; } @@ -153,7 +162,7 @@ sub _cleanup { my $self = shift; chdir ($self->{_workdir}); - File::Path::rmtree ($self->{_name}); + File::Path::rmtree ($self->{_name}) unless $ENV{WGET_TEST_NO_CLEANUP}; }