# A regression test "framework" for Privoxy. For documentation see:
# perldoc privoxy-regression-test.pl
#
-# $Id: privoxy-regression-test.pl,v 1.176 2009/05/27 20:26:59 fk Exp fk $
+# $Id: privoxy-regression-test.pl,v 1.182 2009/06/01 13:21:48 fk Exp $
#
# Wish list:
#
# Internal use, don't modify
# Available debug bits:
- LL_ERROR => 1,
+ LL_SOFT_ERROR => 1,
LL_VERBOSE_FAILURE => 2,
LL_PAGE_FETCHING => 4,
LL_FILE_LOADING => 8,
LL_VERBOSE_SUCCESS => 16,
LL_STATUS => 32,
- LL_SOFT_ERROR => 64,
CLIENT_HEADER_TEST => 1,
SERVER_HEADER_TEST => 2,
$log_level |= LL_VERBOSE_SUCCESS if DEBUG_LEVEL_VERBOSE_SUCCESS;
$log_level |= LL_STATUS if DEBUG_LEVEL_STATUS;
- # These are intended to be always on.
+ # This one is supposed to be always on.
$log_level |= LL_SOFT_ERROR;
- $log_level |= LL_ERROR;
return $log_level;
}
sub check_for_forbidden_characters ($) {
my $string = shift;
- my $allowed = '[-=\dA-Za-z~{}:./();\s,+@"_%?&*^]';
+ my $allowed = '[-=\dA-Za-z~{}:./();\t ,+@"_%?&*^]';
unless ($string =~ m/^$allowed*$/o) {
my $forbidden = $string;
$forbidden =~ s@^$allowed*(.).*@$1@;
- l(LL_ERROR, "'" . $string . "' contains character '" . $forbidden. "' which is unacceptable.");
+ log_and_die("'" . $string . "' contains character '" . $forbidden. "' which is unacceptable.");
}
}
l(LL_STATUS, "Asking Privoxy for the number of action files available ...");
+ # Dear Privoxy, please reload the config file if necessary ...
+ get_cgi_page_or_else($curl_url);
+
+ # ... so we get the latest one here.
foreach (@{get_cgi_page_or_else($curl_url)}) {
chomp;
# Will be used by each following Sticky URL.
$sticky_actions = $value;
if ($sticky_actions =~ /{[^}]*\s/) {
- l(LL_ERROR,
- "'Sticky Actions' with whitespace inside the " .
- "action parameters are currently unsupported.");
+ log_and_die("'Sticky Actions' with whitespace inside the " .
+ "action parameters are currently unsupported.");
}
}
l(LL_FILE_LOADING, "Sticky actions: " . $sticky_actions);
$regression_tests[$si][$ri]{'sticky-actions'} = $sticky_actions;
} else {
- l(LL_ERROR, "Sticky URL without Sticky Actions: $value");
+ log_and_die("Sticky URL without Sticky Actions: $value");
}
} else {
die "Regression test id mismatch" if ($r != $regression_tests[$s][$r]{'regression-test-id'});
my $number = $regression_tests[$s][$r]{'number'};
- my $skip_reason = undef;
-
- if ($regression_tests[$s][$r]{'ignore'}) {
-
- $skip_reason = "Ignore flag is set";
-
- } elsif (cli_option_is_set('test-number')
- and get_cli_option('test-number') != $number) {
-
- $skip_reason = "Only executing test " . get_cli_option('test-number');
-
- } else {
-
- $skip_reason = level_is_unacceptable($regression_tests[$s][$r]{'level'});
- }
+ my $skip_reason = get_skip_reason($regression_tests[$s][$r]);
if (defined $skip_reason) {
}
}
+sub get_skip_reason ($) {
+ my $test = shift;
+ my $skip_reason = undef;
+
+ if ($test->{'ignore'}) {
+
+ $skip_reason = "Ignore flag is set";
+
+ } elsif (cli_option_is_set('test-number') and
+ get_cli_option('test-number') != $test->{'number'}) {
+
+ $skip_reason = "Only executing test " . get_cli_option('test-number');
+
+ } else {
+
+ $skip_reason = level_is_unacceptable($test->{'level'});
+ }
+
+ return $skip_reason;
+}
+
sub level_is_unacceptable ($) {
my $level = shift;
my $min_level = get_cli_option('min-level');
} elsif ($dependency =~ /feature status\s+(.*)/) {
$dependencies{$level}{'feature status'} = $1;
+
+ } else {
+
+ log_and_die("Didn't recognize dependency: $dependency.");
}
}
my $header_to_get;
# XXX: Should be caught before starting to test.
- l(LL_ERROR, "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'
return '123' if cli_option_is_set('fuzzer-feeding');
chomp;
- l(LL_ERROR, 'Unexpected buffer line: "' . $_ . '"');
+ log_and_die('Unexpected buffer line: "' . $_ . '"');
}
}
}
sub check_for_curl () {
my $curl = CURL;
- l(LL_ERROR, "No curl found.") unless (`which $curl`);
+ log_and_die("No curl found.") unless (`which $curl`);
}
sub get_cgi_page_or_else ($) {
} else {
- l(LL_ERROR, $log_message);
+ log_and_die($log_message);
}
}
} while ($? && --$retries_left);
unless ($retries_left) {
- l(LL_ERROR,
- "Running curl failed " . get_cli_option('retries') .
- " times in a row. Last error: '" . $failure_reason . "'.");
+ log_and_die("Running curl failed " . get_cli_option('retries') .
+ " times in a row. Last error: '" . $failure_reason . "'.");
}
return \@buffer;
my $this_level = shift;
my $message = shift;
- return unless ($log_level & $this_level);
-
- if (LL_ERROR & $this_level) {
- $message = 'Oh noes. ' . $message . ' Fatal error. Exiting.';
- }
+ log_message($message) if ($log_level & $this_level);
+}
- log_message($message);
+sub log_and_die ($) {
+ my $message = shift;
- if (LL_ERROR & $this_level) {
- exit;
- }
+ log_message('Oh noes. ' . $message . ' Fatal error. Exiting.');
+ exit;
}
sub log_message ($) {
sub start_forks($) {
my $forks = shift;
- l(LL_ERROR, "Invalid --fork value: " . $forks . ".") if ($forks < 0);
+ log_and_die("Invalid --fork value: " . $forks . ".") if ($forks < 0);
foreach my $fork (1 .. $forks) {
log_message("Starting fork $fork");