Let subs work with the test hash directly, there's no need to use a local copy.
authorFabian Keil <fk@fabiankeil.de>
Fri, 5 Jun 2009 18:58:26 +0000 (18:58 +0000)
committerFabian Keil <fk@fabiankeil.de>
Fri, 5 Jun 2009 18:58:26 +0000 (18:58 +0000)
tools/privoxy-regression-test.pl

index b51a165..82a39d6 100755 (executable)
@@ -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.";
         }
     }