From a4056da0a3c754776912cf947968161284592ead Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Fri, 5 Jun 2009 18:58:26 +0000 Subject: [PATCH] Let subs work with the test hash directly, there's no need to use a local copy. --- tools/privoxy-regression-test.pl | 178 +++++++++++++++---------------- 1 file changed, 84 insertions(+), 94 deletions(-) diff --git a/tools/privoxy-regression-test.pl b/tools/privoxy-regression-test.pl index b51a1652..82a39d69 100755 --- a/tools/privoxy-regression-test.pl +++ b/tools/privoxy-regression-test.pl @@ -7,7 +7,7 @@ # A regression test "framework" for Privoxy. For documentation see: # perldoc privoxy-regression-test.pl # -# $Id: privoxy-regression-test.pl,v 1.182 2009/06/01 13:21:48 fk Exp $ +# $Id: privoxy-regression-test.pl,v 1.183 2009/06/05 18:55:21 fk Exp $ # # Wish list: # @@ -640,38 +640,37 @@ sub register_dependency ($$) { # XXX: somewhat misleading name sub execute_regression_test ($) { - my $test_ref = shift; - my %test = %{$test_ref}; + my $test = shift; my $result = 0; - if ($test{'type'} == CLIENT_HEADER_TEST) { + if ($test->{'type'} == CLIENT_HEADER_TEST) { - $result = execute_client_header_regression_test($test_ref); + $result = execute_client_header_regression_test($test); - } elsif ($test{'type'} == SERVER_HEADER_TEST) { + } elsif ($test->{'type'} == SERVER_HEADER_TEST) { - $result = execute_server_header_regression_test($test_ref); + $result = execute_server_header_regression_test($test); - } elsif ($test{'type'} == DUMB_FETCH_TEST - or $test{'type'} == TRUSTED_CGI_REQUEST) { + } elsif ($test->{'type'} == DUMB_FETCH_TEST + or $test->{'type'} == TRUSTED_CGI_REQUEST) { - $result = execute_dumb_fetch_test($test_ref); + $result = execute_dumb_fetch_test($test); - } elsif ($test{'type'} == METHOD_TEST) { + } elsif ($test->{'type'} == METHOD_TEST) { - $result = execute_method_test($test_ref); + $result = execute_method_test($test); - } elsif ($test{'type'} == BLOCK_TEST) { + } elsif ($test->{'type'} == BLOCK_TEST) { - $result = execute_block_test($test_ref); + $result = execute_block_test($test); - } elsif ($test{'type'} == STICKY_ACTIONS_TEST) { + } elsif ($test->{'type'} == STICKY_ACTIONS_TEST) { - $result = execute_sticky_actions_test($test_ref); + $result = execute_sticky_actions_test($test); } else { - die "Unsupported test type detected: " . $test{'type'}; + die "Unsupported test type detected: " . $test->{'type'}; } return $result; @@ -679,14 +678,13 @@ sub execute_regression_test ($) { sub execute_method_test ($) { - my $test_ref = shift; - my %test = %{$test_ref}; + my $test = shift; my $buffer_ref; my $status_code; - my $method = $test{'data'}; + my $method = $test->{'data'}; my $curl_parameters = ''; - my $expected_status_code = $test{'expected-status-code'}; + my $expected_status_code = $test->{'expected-status-code'}; $curl_parameters .= '--request ' . $method . ' '; # Don't complain about the 'missing' body @@ -702,22 +700,21 @@ sub execute_method_test ($) { sub execute_dumb_fetch_test ($) { - my $test_ref = shift; - my %test = %{$test_ref}; + my $test = shift; my $buffer_ref; my $status_code; my $curl_parameters = ''; - my $expected_status_code = $test{'expected-status-code'}; + my $expected_status_code = $test->{'expected-status-code'}; - if (defined $test{method}) { - $curl_parameters .= '--request ' . $test{method} . ' '; + if (defined $test->{method}) { + $curl_parameters .= '--request ' . $test->{method} . ' '; } - if ($test{type} == TRUSTED_CGI_REQUEST) { + if ($test->{type} == TRUSTED_CGI_REQUEST) { $curl_parameters .= '--referer ' . PRIVOXY_CGI_URL . ' '; } - $curl_parameters .= $test{'data'}; + $curl_parameters .= $test->{'data'}; $buffer_ref = get_page_with_curl($curl_parameters); $status_code = get_status_code($buffer_ref); @@ -841,28 +838,28 @@ sub check_status_code_result ($$) { sub execute_client_header_regression_test ($) { - my $test_ref = shift; + my $test = shift; my $buffer_ref; my $header; - $buffer_ref = get_show_request_with_curl($test_ref); + $buffer_ref = get_show_request_with_curl($test); - $header = get_header($buffer_ref, $test_ref); + $header = get_header($buffer_ref, $test); - return check_header_result($test_ref, $header); + return check_header_result($test, $header); } sub execute_server_header_regression_test ($) { - my $test_ref = shift; + my $test = shift; my $buffer_ref; my $header; - $buffer_ref = get_head_with_curl($test_ref); + $buffer_ref = get_head_with_curl($test); - $header = get_server_header($buffer_ref, $test_ref); + $header = get_server_header($buffer_ref, $test); - return check_header_result($test_ref, $header); + return check_header_result($test, $header); } sub interpret_result ($) { @@ -872,16 +869,15 @@ sub interpret_result ($) { sub check_header_result ($$) { - my $test_ref = shift; + my $test = shift; my $header = shift; - my %test = %{$test_ref}; - my $expect_header = $test{'expect-header'}; + my $expect_header = $test->{'expect-header'}; my $success = 0; if ($expect_header eq 'NO CHANGE') { - if (defined($header) and $header eq $test{'data'}) { + if (defined($header) and $header eq $test->{'data'}) { $success = 1; @@ -894,7 +890,7 @@ sub check_header_result ($$) { } elsif ($expect_header eq 'REMOVAL') { - if (defined($header) and $header eq $test{'data'}) { + if (defined($header) and $header eq $test->{'data'}) { l(LL_VERBOSE_FAILURE, "Ooops. Expected removal but: '" . $header . "' is still there."); @@ -908,7 +904,7 @@ sub check_header_result ($$) { } elsif ($expect_header eq 'SOME CHANGE') { - if (defined($header) and not $header eq $test{'data'}) { + if (defined($header) and not $header eq $test->{'data'}) { $success = 1; @@ -949,12 +945,11 @@ sub get_header ($$) { our $filtered_request = ''; my $buffer_ref = shift; - my $test_ref = shift; + my $test = shift; - my %test = %{$test_ref}; my @buffer = @{$buffer_ref}; - my $expect_header = $test{'expect-header'}; + my $expect_header = $test->{'expect-header'}; die "get_header called with no expect header" unless defined $expect_header; @@ -969,7 +964,7 @@ sub get_header ($$) { or $expect_header eq 'NO CHANGE' or $expect_header eq 'SOME CHANGE') { - $expect_header = $test{'data'}; + $expect_header = $test->{'data'}; } $header_to_get = get_header_name($expect_header); @@ -1008,24 +1003,23 @@ sub get_header ($$) { sub get_server_header ($$) { my $buffer_ref = shift; - my $test_ref = shift; + my $test = shift; - my %test = %{$test_ref}; my @buffer = @{$buffer_ref}; - my $expect_header = $test{'expect-header'}; + my $expect_header = $test->{'expect-header'}; my $header; my $header_to_get; # XXX: Should be caught before starting to test. - log_and_die("No expect header for test " . $test{'number'}) + log_and_die("No expect header for test " . $test->{'number'}) unless defined $expect_header; if ($expect_header eq 'REMOVAL' or $expect_header eq 'NO CHANGE' or $expect_header eq 'SOME CHANGE') { - $expect_header = $test{'data'}; + $expect_header = $test->{'data'}; } $header_to_get = get_header_name($expect_header); @@ -1071,22 +1065,21 @@ sub get_test_keys () { # XXX: incomplete sub test_content_as_string ($) { - my $test_ref = shift; - my %test = %{$test_ref}; + my $test = shift; my $s = "\n\t"; foreach my $key (get_test_keys()) { - $test{$key} = 'Not set' unless (defined $test{$key}); + $test->{$key} = 'Not set' unless (defined $test->{$key}); } - $s .= 'Tag: ' . $test{'tag'}; + $s .= 'Tag: ' . $test->{'tag'}; $s .= "\n\t"; - $s .= 'Set header: ' . $test{'data'}; # XXX: adjust for other test types + $s .= 'Set header: ' . $test->{'data'}; # XXX: adjust for other test types $s .= "\n\t"; - $s .= 'Expected header: ' . $test{'expect-header'}; + $s .= 'Expected header: ' . $test->{'expect-header'}; $s .= "\n\t"; - $s .= 'Ignore: ' . $test{'ignore'}; + $s .= 'Ignore: ' . $test->{'ignore'}; return $s; } @@ -1146,18 +1139,17 @@ sub get_cgi_page_or_else ($) { sub get_show_request_with_curl ($) { our $privoxy_cgi_url; - my $test_ref = shift; - my %test = %{$test_ref}; + my $test = shift; my $curl_parameters = ' '; - my $header = $test{'data'}; + my $header = $test->{'data'}; if (cli_option_is_set('header-fuzzing')) { $header = fuzz_header($header); } # Enable the action to test - $curl_parameters .= '-H \'X-Privoxy-Control: ' . $test{'tag'} . '\' '; + $curl_parameters .= '-H \'X-Privoxy-Control: ' . $test->{'tag'} . '\' '; # The header to filter $curl_parameters .= '-H \'' . $header . '\' '; @@ -1171,15 +1163,14 @@ sub get_show_request_with_curl ($) { sub get_head_with_curl ($) { our $fellatio_url = FELLATIO_URL; - my $test_ref = shift; - my %test = %{$test_ref}; + my $test = shift; my $curl_parameters = ' '; # Enable the action to test - $curl_parameters .= '-H \'X-Privoxy-Control: ' . $test{'tag'} . '\' '; + $curl_parameters .= '-H \'X-Privoxy-Control: ' . $test->{'tag'} . '\' '; # The header to filter - $curl_parameters .= '-H \'X-Gimme-Head-With: ' . $test{'data'} . '\' '; + $curl_parameters .= '-H \'X-Gimme-Head-With: ' . $test->{'data'} . '\' '; $curl_parameters .= '--head '; $curl_parameters .= ' '; @@ -1257,8 +1248,8 @@ sub array_as_string ($) { } sub show_test ($) { - my $test_ref = shift; - log_message('Test is:' . test_content_as_string($test_ref)); + my $test = shift; + log_message('Test is:' . test_content_as_string($test)); } # Conditional log @@ -1313,76 +1304,75 @@ sub log_result ($$) { our $verbose_test_description; our $filtered_request; - my $test_ref = shift; + my $test = shift; my $result = shift; my $number = shift; - my %test = %{$test_ref}; my $message = ''; $message .= interpret_result($result); $message .= " for test "; $message .= $number; $message .= '/'; - $message .= $test{'number'}; + $message .= $test->{'number'}; $message .= '/'; - $message .= $test{'section-id'}; + $message .= $test->{'section-id'}; $message .= '/'; - $message .= $test{'regression-test-id'}; + $message .= $test->{'regression-test-id'}; $message .= '.'; if ($verbose_test_description) { - if ($test{'type'} == CLIENT_HEADER_TEST) { + if ($test->{'type'} == CLIENT_HEADER_TEST) { $message .= ' Header '; - $message .= quote($test{'data'}); + $message .= quote($test->{'data'}); $message .= ' and tag '; - $message .= quote($test{'tag'}); + $message .= quote($test->{'tag'}); - } elsif ($test{'type'} == SERVER_HEADER_TEST) { + } elsif ($test->{'type'} == SERVER_HEADER_TEST) { $message .= ' Request Header '; - $message .= quote($test{'data'}); + $message .= quote($test->{'data'}); $message .= ' and tag '; - $message .= quote($test{'tag'}); + $message .= quote($test->{'tag'}); - } elsif ($test{'type'} == DUMB_FETCH_TEST) { + } elsif ($test->{'type'} == DUMB_FETCH_TEST) { $message .= ' URL '; - $message .= quote($test{'data'}); + $message .= quote($test->{'data'}); $message .= ' and expected status code '; - $message .= quote($test{'expected-status-code'}); + $message .= quote($test->{'expected-status-code'}); - } elsif ($test{'type'} == TRUSTED_CGI_REQUEST) { + } elsif ($test->{'type'} == TRUSTED_CGI_REQUEST) { $message .= ' CGI URL '; - $message .= quote($test{'data'}); + $message .= quote($test->{'data'}); $message .= ' and expected status code '; - $message .= quote($test{'expected-status-code'}); + $message .= quote($test->{'expected-status-code'}); - } elsif ($test{'type'} == METHOD_TEST) { + } elsif ($test->{'type'} == METHOD_TEST) { $message .= ' HTTP method '; - $message .= quote($test{'data'}); + $message .= quote($test->{'data'}); $message .= ' and expected status code '; - $message .= quote($test{'expected-status-code'}); + $message .= quote($test->{'expected-status-code'}); - } elsif ($test{'type'} == BLOCK_TEST) { + } elsif ($test->{'type'} == BLOCK_TEST) { $message .= ' Supposedly-blocked URL: '; - $message .= quote($test{'data'}); + $message .= quote($test->{'data'}); - } elsif ($test{'type'} == STICKY_ACTIONS_TEST) { + } elsif ($test->{'type'} == STICKY_ACTIONS_TEST) { $message .= ' Sticky Actions: '; - $message .= quote($test{'sticky-actions'}); + $message .= quote($test->{'sticky-actions'}); $message .= ' and URL: '; - $message .= quote($test{'data'}); + $message .= quote($test->{'data'}); } else { - die "Incomplete support for test type " . $test{'type'} . " detected."; + die "Incomplete support for test type " . $test->{'type'} . " detected."; } } -- 2.39.2