# A regression test "framework" for Privoxy. For documentation see:
# perldoc privoxy-regression-test.pl
#
-# $Id: privoxy-regression-test.pl,v 1.171 2009/05/19 14:34:49 fk Exp $
+# $Id: privoxy-regression-test.pl,v 1.44 2009/06/01 10:49:07 fabiankeil 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 {
foreach (@privoxy_config) {
- $dependency_problem = undef if (/$dependency/);
- last; # XXX: this looks ... interesting.
+ if (/$dependency/) {
+ $dependency_problem = undef;
+ last;
+ }
}
} elsif (defined ($dependencies{$level}{'feature status'})) {
} elsif ($dependency =~ /feature status\s+(.*)/) {
$dependencies{$level}{'feature status'} = $1;
+
+ } else {
+
+ log_and_die("Didn't recognize dependency: $dependency.");
}
}
my $final_results = get_final_results($url);
foreach my $sticky_action (@sticky_actions) {
+
if (defined $final_results->{$sticky_action}) {
# Exact match
$verified_actions++;
- }elsif ($sticky_action =~ /-.*\{/ and
- not defined $final_results->{$sticky_action}) {
+
+ } elsif ($sticky_action =~ /-.*\{/) {
+
# Disabled multi actions aren't explicitly listed as
# disabled and thus have to be checked by verifying
# that they aren't enabled.
$verified_actions++;
+
} else {
l(LL_VERBOSE_FAILURE,
"Ooops. '$sticky_action' is not among the final results.");
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");