BEGIN {
if (-e 't/test_dir') { chdir 't';
}
if (-e 'test_dir') { unshift(@INC, '../blib/lib');
}
}
my $prefix = '.';
if (-e 'test_dir') { $prefix = '..';
}
use strict;
use SATest; sa_t_init("regexp_valid");
use Test;
plan tests => 24;
use Mail::SpamAssassin;
my $sa = create_saobj({'dont_copy_prefs' => 1});
$sa->init(0);
open(OLDERR, ">&STDERR") || die "Cannot copy STDERR file handle";
my $fh = IO::File->new_tmpfile();
open(LOGERR, ">&".fileno($fh)) || die "Cannot create LOGERR temp file";
1 if *OLDERR;
1 if *LOGERR;
sub tryone {
my $re = shift;
return $sa->{conf}->{parser}->is_regexp_valid('test', $re);
}
sub goodone {
my $re = shift;
open(STDERR, ">&=OLDERR") || die "Cannot reopen STDERR";
return tryone $re;
}
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 goodone 'm<foo bar>is';
ok goodone 'foo bar';
ok goodone 'foo/bar';
ok badone 'foo(bar';
ok badone 'foo(?{1})bar';
ok badone '/foo(?{1})bar/';
ok badone 'm!foo(?{1})bar!';
ok goodone '.*';
ok goodone 'm*<a[^<]{0,60} onMouseMove=(?:3D)?"window.status=(?:3D)?\'https?://*';