# A regression test "framework" for Privoxy. For documentation see:
# perldoc privoxy-regression-test.pl
#
-# $Id: privoxy-regression-test.pl,v 1.85 2013/01/06 18:14:58 fabiankeil Exp $
+# $Id: privoxy-regression-test.pl,v 1.91 2013/03/07 14:10:04 fabiankeil Exp $
#
# Wish list:
#
# - Document magic Expect Header values
# - Internal fuzz support?
#
-# Copyright (c) 2007-2011 Fabian Keil <fk@fabiankeil.de>
+# Copyright (c) 2007-2013 Fabian Keil <fk@fabiankeil.de>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
use Getopt::Long;
use constant {
- PRT_VERSION => 'Privoxy-Regression-Test 0.5',
+ PRT_VERSION => 'Privoxy-Regression-Test 0.6',
CURL => 'curl',
DEBUG_LEVEL_VERBOSE_SUCCESS => 0,
DEBUG_LEVEL_STATUS => 1,
- VERBOSE_TEST_DESCRIPTION => 1,
-
# Internal use, don't modify
# Available debug bits:
LL_SOFT_ERROR => 1,
our $leading_log_time = LEADING_LOG_TIME;
our $leading_log_date = LEADING_LOG_DATE;
our $privoxy_cgi_url = PRIVOXY_CGI_URL;
- our $verbose_test_description = VERBOSE_TEST_DESCRIPTION;
our $log_level = get_default_log_level();
}
# XXX: Should eventually be downgraded to LL_FILE_LOADING.
log_message($message);
- # XXX: Should eventuall get it's own key so get_skip_reason()
+ # XXX: Should eventually get its own key so get_skip_reason()
# can tell about the overwrite condition.
$regression_tests[$s][$r]{'ignore'} = 1;
}
# from different sections isn't possible.
# Is this worth changing the layout?
fisher_yates_shuffle(\@regression_tests);
- for (my $s = 0; $s < @regression_tests; $s++) {
+ for (my $s = 0; $s < @regression_tests; $s++) {
fisher_yates_shuffle($regression_tests[$s]);
}
}
- for (my $s = 0; $s < @regression_tests; $s++) {
+ for (my $s = 0; $s < @regression_tests; $s++) {
my $r = 0;
sub log_result ($$) {
- our $verbose_test_description;
our $filtered_request;
my $test = shift;
my $result = shift;
my $number = shift;
- my $message = '';
+ my $message = sprintf("%s for test %d",
+ interpret_result($result),
+ $test->{'number'});
- $message .= interpret_result($result);
- $message .= " for test ";
- $message .= $number;
- $message .= '/';
- $message .= $test->{'number'};
- $message .= '/';
- $message .= $test->{'section-id'};
- $message .= '/';
- $message .= $test->{'regression-test-id'};
- $message .= '.';
+ if (cli_option_is_set('verbose')) {
+ $message .= sprintf(" (%d/%d/%d)", $number,
+ $test->{'section-id'},
+ $test->{'regression-test-id'});
+ }
- if ($verbose_test_description) {
+ $message .= '. ';
- if ($test->{'type'} == CLIENT_HEADER_TEST) {
+ if ($test->{'type'} == CLIENT_HEADER_TEST) {
- $message .= ' Header ';
- $message .= quote($test->{'data'});
- $message .= ' and tag ';
- $message .= quote($test->{'tag'});
+ $message .= 'Header ';
+ $message .= quote($test->{'data'});
+ $message .= ' and 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 .= ' and tag ';
- $message .= quote($test->{'tag'});
+ $message .= 'Request Header ';
+ $message .= quote($test->{'data'});
+ $message .= ' and tag ';
+ $message .= quote($test->{'tag'});
- } elsif ($test->{'type'} == DUMB_FETCH_TEST) {
+ } elsif ($test->{'type'} == DUMB_FETCH_TEST) {
- $message .= ' URL ';
- $message .= quote($test->{'data'});
- $message .= ' and expected status code ';
- $message .= quote($test->{'expected-status-code'});
+ $message .= 'URL ';
+ $message .= quote($test->{'data'});
+ $message .= ' and 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 .= ' and expected status code ';
- $message .= quote($test->{'expected-status-code'});
+ $message .= 'CGI URL ';
+ $message .= quote($test->{'data'});
+ $message .= ' and 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 .= ' and expected status code ';
- $message .= quote($test->{'expected-status-code'});
+ $message .= 'HTTP method ';
+ $message .= quote($test->{'data'});
+ $message .= ' and 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 .= 'Supposedly-blocked URL: ';
+ $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 .= ' and URL: ';
- $message .= quote($test->{'data'});
+ $message .= 'Sticky Actions: ';
+ $message .= quote($test->{'sticky-actions'});
+ $message .= ' and URL: ';
+ $message .= quote($test->{'data'});
- } elsif ($test->{'type'} == REDIRECT_TEST) {
+ } elsif ($test->{'type'} == REDIRECT_TEST) {
- $message .= ' Redirected URL: ';
- $message .= quote($test->{'data'});
- $message .= ' and redirect destination: ';
- $message .= quote($test->{'redirect destination'});
+ $message .= 'Redirected URL: ';
+ $message .= quote($test->{'data'});
+ $message .= ' and redirect destination: ';
+ $message .= quote($test->{'redirect destination'});
- } else {
+ } else {
- die "Incomplete support for test type " . $test->{'type'} . " detected.";
- }
+ die "Incomplete support for test type " . $test->{'type'} . " detected.";
}
log_message($message) if (!$result or cli_option_is_set('verbose'));