You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by ms...@apache.org on 2004/08/24 19:22:02 UTC
svn commit: rev 36816 - in spamassassin/trunk: . lib/Mail/SpamAssassin t t/data
Author: mss
Date: Tue Aug 24 10:22:00 2004
New Revision: 36816
Added:
spamassassin/trunk/t/data/testplugin.pm
spamassassin/trunk/t/plugin_file.t (contents, props changed)
Modified:
spamassassin/trunk/MANIFEST
spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm
spamassassin/trunk/t/ifversion.t (props changed)
spamassassin/trunk/t/spamd_ssl.t (props changed)
Log:
bug 3717: Loading PlugIns from outside @INC didn't work because do() looks in @INC, too, for relative paths. Fixed by always using absolute paths.
also:
* Added Justin's regression test for this feature.
* Marked some tests which missed the bit as executable.
* Sorted MANIFEST alphabetically (again).
Modified: spamassassin/trunk/MANIFEST
==============================================================================
--- spamassassin/trunk/MANIFEST (original)
+++ spamassassin/trunk/MANIFEST Tue Aug 24 10:22:00 2004
@@ -4,10 +4,10 @@
INSTALL
INSTALL.VMS
LICENSE
-NOTICE
MANIFEST
MANIFEST.SKIP
Makefile.PL
+NOTICE
PACKAGING
README
STATUS
@@ -80,6 +80,9 @@
masses/Makefile
masses/README
masses/README.perceptron
+masses/compare-models
+masses/config.set0
+masses/config.set1
masses/corpora/README
masses/corpora/fuzzy-hash-maildir
masses/corpora/mass-find-nonspam
@@ -88,10 +91,12 @@
masses/corpora/uniq-maildirs
masses/cpucount
masses/extract-message-from-mbox
+masses/extract-results
masses/find-extremes
masses/fp-fn-statistics
masses/fp-fn-to-tcr
masses/freqdiff
+masses/generate-corpus
masses/graphs/gen-score-freqs-gnuplot-table
masses/graphs/gnuplot-score-graph
masses/hit-frequencies
@@ -102,6 +107,7 @@
masses/mass-check.cf
masses/mboxget
masses/mk-baseline-results
+masses/model-statistics
masses/overlap
masses/parse-rules-for-masses
masses/perceptron.c
@@ -123,6 +129,7 @@
masses/tenpass/compute-current-tcr
masses/tenpass/split-log-into-buckets
masses/uniq-scores
+masses/validate-model
ninjabutton.png
ninjabutton.xcf
procmailrc.example
@@ -189,10 +196,10 @@
spamc/utils.h
spamc/version.h.in
spamc/version.h.pl
+spamd/PROTOCOL
spamd/README
spamd/README.SuSE
spamd/README.vpopmail
-spamd/PROTOCOL
spamd/netbsd-rc-script.sh
spamd/redhat-rc-script.sh
spamd/slackware-rc-script.sh
@@ -268,6 +275,7 @@
t/data/spam/bsmtp
t/data/spam/dnsbl.eml
t/data/spam/gtube.eml
+t/data/testplugin.pm
t/data/whitelists/action.eff.org
t/data/whitelists/amazon_co_uk_ship
t/data/whitelists/amazon_com_ship
@@ -297,11 +305,13 @@
t/gtube.t
t/hashcash.t
t/html_obfu.t
+t/ifversion.t
t/ip_addrs.t
t/lang_pl_tests.t
t/mimeparse.t
t/nonspam.t
t/plugin.t
+t/plugin_file.t
t/prefs_include.t
t/razor2.t
t/rcvd_parser.t
@@ -359,11 +369,3 @@
tools/split_corpora
tools/test_extract
tools/triplets.pl
-masses/validate-model
-masses/generate-corpus
-masses/extract-results
-masses/compare-models
-masses/config.set0
-masses/config.set1
-masses/model-statistics
-t/ifversion.t
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm Tue Aug 24 10:22:00 2004
@@ -23,6 +23,7 @@
package Mail::SpamAssassin::PluginHandler;
use Mail::SpamAssassin;
use Mail::SpamAssassin::Plugin;
+use Mail::SpamAssassin::Util;
use strict;
use bytes;
@@ -58,6 +59,12 @@
my $ret;
if ($path) {
+ # At least Perl 5.8.0 seems to confuse $cwd internally at some point -- we
+ # need to use an absolute path here else we get a "File not found" error.
+ # <http://bugzilla.spamassassin.org/show_bug.cgi?id=3717>
+ $path = Mail::SpamAssassin::Util::untaint_file_path(
+ File::Spec->rel2abs($path)
+ );
dbg ("plugin: loading $package from $path");
$ret = do $path;
}
Added: spamassassin/trunk/t/data/testplugin.pm
==============================================================================
--- (empty file)
+++ spamassassin/trunk/t/data/testplugin.pm Tue Aug 24 10:22:00 2004
@@ -0,0 +1,43 @@
+=head1
+
+To try this out, write these lines to /etc/mail/spamassassin/plugintest.cf:
+
+ loadplugin myTestPlugin
+ header MY_TEST_PLUGIN eval:check_test_plugin()
+
+=cut
+
+package myTestPlugin;
+
+use Mail::SpamAssassin::Plugin;
+use strict;
+use bytes;
+
+our @ISA = qw(Mail::SpamAssassin::Plugin);
+
+# constructor: register the eval rule
+sub new {
+ my $class = shift;
+ my $mailsaobject = shift;
+
+ # some boilerplate...
+ $class = ref($class) || $class;
+ my $self = $class->SUPER::new($mailsaobject);
+ bless ($self, $class);
+
+ # the important bit!
+ $self->register_eval_rule ("check_test_plugin");
+
+ print "registered myTestPlugin: $self\n";
+ return $self;
+}
+
+# and the eval rule itself
+sub check_test_plugin {
+ my ($self, $permsgstatus) = @_;
+ print "myTestPlugin eval test called: $self\n";
+ # ... hard work goes here...
+ return 1;
+}
+
+1;
Added: spamassassin/trunk/t/plugin_file.t
==============================================================================
--- (empty file)
+++ spamassassin/trunk/t/plugin_file.t Tue Aug 24 10:22:00 2004
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+
+use lib '.'; use lib 't';
+use SATest; sa_t_init("plugin_file");
+use Test; BEGIN { plan tests => 6 };
+
+# ---------------------------------------------------------------------------
+
+%patterns = (
+
+q{ GTUBE }, 'gtube',
+q{ MY_TEST_PLUGIN }, 'plugin_called',
+q{ registered myTestPlugin }, 'registered',
+q{ myTestPlugin eval test called }, 'test_called',
+
+);
+
+%anti_patterns = (
+
+q{ SHOULD_NOT_BE_CALLED }, 'should_not_be_called'
+
+);
+
+tstlocalrules ("
+ loadplugin myTestPlugin ../../data/testplugin.pm
+ ifplugin FooPlugin
+ header SHOULD_NOT_BE_CALLED eval:doesnt_exist()
+ endif
+ if plugin(myTestPlugin)
+ header MY_TEST_PLUGIN eval:check_test_plugin()
+ endif
+");
+
+ok (sarun ("-L -t < data/spam/gtube.eml", \&patterns_run_cb));
+ok_all_patterns();
+