Mailing List Archive

svn commit: r170553 - /spamassassin/trunk/t/regexp_valid.t
Author: dos
Date: Tue May 17 02:07:51 2005
New Revision: 170553

URL: http://svn.apache.org/viewcvs?rev=170553&view=rev
Log:
quiet warnings for known invalid regexps in t/regexp_valid.t

Modified:
spamassassin/trunk/t/regexp_valid.t

Modified: spamassassin/trunk/t/regexp_valid.t
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/t/regexp_valid.t?rev=170553&r1=170552&r2=170553&view=diff
==============================================================================
--- spamassassin/trunk/t/regexp_valid.t (original)
+++ spamassassin/trunk/t/regexp_valid.t Tue May 17 02:07:51 2005
@@ -28,36 +28,66 @@
$sa->init(0); # parse rules


+# make a _copy_ of the STDERR file descriptor
+# (so we can restore it after redirecting it)
+open(OLDERR, ">&STDERR");
+
+# create a file descriptior for logging STDERR
+# (we do not want warnings for regexps we know are invalid)
+open(LOGERR, ">".IO::File->new_tmpfile());
+
+# quiet "used only once" warnings
+1 if *OLDERR;
+1 if *LOGERR;
+
+
sub tryone {
my $re = shift;
return $sa->{conf}->{parser}->is_regexp_valid('test', $re);
}

-ok tryone qr/foo bar/;
-ok tryone qr/foo bar/i;
-ok tryone qr/foo bar/is;
-ok tryone qr/foo bar/im;
-ok tryone qr!foo bar!im;
-ok tryone 'qr/foo bar/';
-ok tryone 'qr/foo bar/im';
-ok tryone 'qr!foo bar!';
-ok tryone 'qr!foo bar!im';
-ok tryone '/^foo bar$/';
-ok tryone '/foo bar/';
-ok tryone '/foo bar/im';
-ok tryone 'm!foo bar!is';
-ok tryone 'm{foo bar}is';
-ok tryone 'm(foo bar)is';
-ok tryone 'm<foo bar>is';
-ok tryone 'foo bar';
-ok tryone 'foo/bar';
-ok !tryone 'foo(bar';
-ok !tryone 'foo(?{1})bar';
-ok !tryone '/foo(?{1})bar/';
-ok !tryone 'm!foo(?{1})bar!';
+# test valid regexps with this sub
+sub goodone {
+ my $re = shift;
+ open(STDERR, ">&=OLDERR") || die "Cannot reopen STDERR";
+ return tryone $re;
+}
+
+# test invalid regexps with this sub
+sub badone {
+ my $re = shift;
+ open(STDERR, ">&=LOGERR") || die "Cannot reopen STDERR (for logging)";
+ return !tryone $re;
+}
+
+
+ok goodone qr/foo bar/;
+ok goodone qr/foo bar/i;
+ok goodone qr/foo bar/is;
+ok goodone qr/foo bar/im;
+ok goodone qr!foo bar!im;
+
+ok goodone 'qr/foo bar/';
+ok goodone 'qr/foo bar/im';
+ok goodone 'qr!foo bar!';
+ok goodone 'qr!foo bar!im';
+ok goodone '/^foo bar$/';
+
+ok goodone '/foo bar/';
+ok goodone '/foo bar/im';
+ok goodone 'm!foo bar!is';
+ok goodone 'm{foo bar}is';
+ok goodone 'm(foo bar)is';

-ok !tryone '/test//';
-ok tryone '.*';
+ok goodone 'm<foo bar>is';
+ok goodone 'foo bar';
+ok goodone 'foo/bar';
+ok badone 'foo(bar';
+ok badone 'foo(?{1})bar';

-ok tryone 'm*<a[^<]{0,60} onMouseMove=(?:3D)?"window.status=(?:3D)?\'https?://*';
+ok badone '/foo(?{1})bar/';
+ok badone 'm!foo(?{1})bar!';
+ok badone '/test//';
+ok goodone '.*';
+ok goodone 'm*<a[^<]{0,60} onMouseMove=(?:3D)?"window.status=(?:3D)?\'https?://*';