# A regression test "framework" for Privoxy. For documentation see:
 # perldoc privoxy-regression-test.pl
 #
-# $Id: privoxy-regression-test.pl,v 1.115 2008/03/18 22:07:34 fk Exp $
+# $Id: privoxy-regression-test.pl,v 1.118 2008/03/19 16:15:45 fk Exp $
 #
 # Wish list:
 #
 sub check_for_forbidden_characters ($) {
 
     my $tag = shift; # XXX: also used to check values though.
-    my $allowed = '[-=\dA-Za-z{}:.\/();\s,+@"_%\?&]';
+    my $allowed = '[-=\dA-Za-z~{}:.\/();\s,+@"_%\?&]';
 
     unless ($tag =~ m/^$allowed*$/) {
         my $forbidden = $tag;
 
     my $token = shift;
     my @new_test_directives =
-        ('set header', 'fetch test', 'trusted cgi request', 'request header', 'method test', 'block test');
+        ('set header', 'fetch test', 'trusted cgi request', 'request header', 'method test', 'blocked url');
 
     foreach my $new_test_directive (@new_test_directives) {
         return 1 if $new_test_directive eq $token;
     # Reverse HTML-encoding
     # XXX: Seriously imcomplete. 
     s@"@"@g;
+    s@&@&@g;
 
     # Tokenize
     if (/^\#\s*([^=:]*?)\s*[=]\s*(.*?)\s*$/) {
         $$regression_tests[$si][$ri]{'expected-status-code'} = 200;
         $$regression_tests[$si][$ri]{'level'} = METHOD_TEST;
 
-    } elsif ($token eq 'block test') {
+    } elsif ($token eq 'blocked url') {
 
         l(LL_FILE_LOADING, "URL to block-test: " . $value);
         $$regression_tests[$si][$ri]{'type'} = BLOCK_TEST;
         if (m@<br>([-+])<a.*>([^>]*)</a>( \{.*\})@) {
             my $action = $1.$2;
             my $value = $3;
-            $final_results{$action}{$value};
+            $final_results{$action} = $value;
         }
     }