Update a log message I missed in 1.80.
[privoxy.git] / tools / privoxy-regression-test.pl
index f550d07..986279e 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.155 2008/06/28 16:39:59 fk Exp $
+# $Id: privoxy-regression-test.pl,v 1.161 2008/10/25 15:44:26 fk Exp $
 #
 # Wish list:
 #
@@ -40,16 +40,16 @@ use strict;
 use Getopt::Long;
 
 use constant {
-               PRT_VERSION => 'Privoxy-Regression-Test 0.2',
+               PRT_VERSION => 'Privoxy-Regression-Test 0.3',
  
-              CURL => 'curl',
+               CURL => 'curl',
 
                # CLI option defaults
-              CLI_RETRIES   => 1,
-              CLI_LOOPS     => 1,
-              CLI_MAX_TIME  => 5,
-              CLI_MIN_LEVEL => 0,
-              CLI_MAX_LEVEL => 25,
+               CLI_RETRIES   => 1,
+               CLI_LOOPS     => 1,
+               CLI_MAX_TIME  => 5,
+               CLI_MIN_LEVEL => 0,
+               CLI_MAX_LEVEL => 25,
                CLI_FORKS     => 0,
 
                PRIVOXY_CGI_URL => 'http://p.p/',
@@ -155,9 +155,11 @@ sub load_regressions_tests () {
 
     our $privoxy_cgi_url;
     our @privoxy_config;
+    our %privoxy_features;
     my @actionfiles;
     my $curl_url = '';
     my $file_number = 0;
+    my $feature;
 
     $curl_url .= $privoxy_cgi_url;
     $curl_url .= 'show-status';
@@ -176,6 +178,15 @@ sub load_regressions_tests () {
 
             my $directive = $1 . " " . $2;
             push (@privoxy_config, $directive);
+
+        } elsif (m@<td><code>([^<]*)</code></td>@) {
+
+            $feature = $1;
+
+        } elsif (m@<td> (Yes|No) </td>@) {
+
+            $privoxy_features{$feature} = $1 if defined $feature;
+            $feature = undef;
         }
     }
 
@@ -310,7 +321,8 @@ sub load_action_files ($) {
 
     my $ignored = 0;
 
-    l(LL_STATUS, "Loading regression tests from action file(s) delivered by Privoxy.");
+    l(LL_STATUS, "Gathering regression tests from " .
+      @actionfiles . " action file(s) delivered by Privoxy.");
 
     for my $file_number (0 .. @actionfiles - 1) {
 
@@ -538,6 +550,8 @@ sub dependency_unsatisfied ($) {
     my $level = shift;
     our %dependencies;
     our @privoxy_config;
+    our %privoxy_features;
+
     my $dependency_problem = 0;
 
     if (defined ($dependencies{$level}{'config line'})) {
@@ -548,6 +562,20 @@ sub dependency_unsatisfied ($) {
         foreach (@privoxy_config) {
 
              $dependency_problem = 0 if (/$dependency/);
+             last;
+        }
+
+    } elsif (defined ($dependencies{$level}{'feature status'})) {
+
+        my $dependency = $dependencies{$level}{'feature status'};
+        my ($feature, $status) = $dependency =~ /([^\s]*)\s+(Yes|No)/;
+
+        $dependency_problem = 1;
+
+        if (defined($privoxy_features{$feature})
+            and ($privoxy_features{$feature} eq $status))
+        {
+            $dependency_problem = 0;
         }
     }
 
@@ -562,7 +590,12 @@ sub register_dependency ($$) {
 
     if ($dependency =~ /config line\s+(.*)/) {
 
-       $dependencies{$level}{'config line'} = $1;
+        $dependencies{$level}{'config line'} = $1;
+
+    } elsif ($dependency =~ /feature status\s+(.*)/) {
+
+        $dependencies{$level}{'feature status'} = $1;
+
     }
 }
 
@@ -793,7 +826,6 @@ sub execute_server_header_regression_test ($) {
     return check_header_result($test_ref, $header);
 }
 
-
 sub interpret_result ($) {
     my $success = shift;
     return $success ? "Success" : "Failure";
@@ -1102,7 +1134,6 @@ sub get_show_request_with_curl ($) {
     return get_cgi_page_or_else($curl_parameters);
 }
 
-
 sub get_head_with_curl ($) {
 
     our $fellatio_url = FELLATIO_URL;
@@ -1123,7 +1154,6 @@ sub get_head_with_curl ($) {
     return get_page_with_curl($curl_parameters);
 }
 
-
 sub get_page_with_curl ($) {
 
     our $proxy;
@@ -1193,7 +1223,6 @@ sub array_as_string ($) {
     return $string;
 }
 
-
 sub show_test ($) {
     my $test_ref = shift;
     log_message('Test is:' . test_content_as_string($test_ref));
@@ -1364,6 +1393,7 @@ Options and their default values if they have any:
     [--min-level $cli_options{'min-level'}]
     [--privoxy-address]
     [--retries $cli_options{'retries'}]
+    [--test-number]
     [--verbose]
     [--version]
 see "perldoc $0" for more information
@@ -1464,7 +1494,6 @@ sub start_forks($) {
     }
 }
 
-
 sub main () {
 
     init_our_variables();
@@ -1489,7 +1518,8 @@ B<privoxy-regression-test> [B<--debug bitmask>] [B<--forks> forks]
 [B<--fuzzer-feeding>] [B<--fuzzer-feeding>] [B<--help>] [B<--level level>]
 [B<--loops count>] [B<--max-level max-level>] [B<--max-time max-time>]
 [B<--min-level min-level>] B<--privoxy-address proxy-address>
-[B<--retries retries>] [B<--verbose>] [B<--version>]
+[B<--retries retries>] [B<--test-number test-number>] [B<--verbose>]
+[B<--version>]
 
 =head1 DESCRIPTION
 
@@ -1634,6 +1664,9 @@ syntax.
 
 B<--retries retries> Retry B<retries> times.
 
+B<--test-number test-number> Only run the test with the specified
+number.
+
 B<--verbose> Also log succesful test runs.
 
 B<--version> Print version and exit.