You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2022/04/18 15:16:24 UTC

svn commit: r1899984 - in /spamassassin/trunk: MANIFEST lib/Mail/SpamAssassin/Conf.pm t/enable_compat.t

Author: hege
Date: Mon Apr 18 15:16:23 2022
New Revision: 1899984

URL: http://svn.apache.org/viewvc?rev=1899984&view=rev
Log:
enable_compat feature (Bug 7972)

Added:
    spamassassin/trunk/t/enable_compat.t   (with props)
Modified:
    spamassassin/trunk/MANIFEST
    spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm

Modified: spamassassin/trunk/MANIFEST
URL: http://svn.apache.org/viewvc/spamassassin/trunk/MANIFEST?rev=1899984&r1=1899983&r2=1899984&view=diff
==============================================================================
--- spamassassin/trunk/MANIFEST (original)
+++ spamassassin/trunk/MANIFEST Mon Apr 18 15:16:23 2022
@@ -498,6 +498,7 @@ t/dkim.t
 t/dnsbl.t
 t/dnsbl_sc_meta.t
 t/dnsbl_subtests.t
+t/enable_compat.t
 t/esp.t
 t/extracttext.t
 t/freemail.t

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm?rev=1899984&r1=1899983&r2=1899984&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm Mon Apr 18 15:16:23 2022
@@ -4604,6 +4604,40 @@ version.  So 3.0.0 is C<3.000000>, and 3
     }
   });
 
+=item enable_compat xxxxxx
+
+Define a version compatibility flag.
+
+This creates a function named C<Mail::SpamAssassin::Conf::compat_xxxxxx>,
+which returns true.  It can be used for example in cf-files, similarly as existing
+C<feature_> checks:
+
+  if can(Mail::SpamAssassin::Conf::compat_xxxxxx)
+
+Name can only consist of [a-zA-Z0-9_] characters.
+
+Mainly used by SpamAssassin distribution to handle backwards compatibility
+issues.
+
+=cut
+
+  push (@cmds, {
+    setting => 'enable_compat',
+    is_admin => 1,
+    code => sub {
+      my ($self, $key, $value, $line) = @_;
+      if ($value eq '') {
+        return $MISSING_REQUIRED_VALUE;
+      } elsif ($value !~ /^[a-zA-Z0-9_]{1,128}$/) {
+        return $INVALID_VALUE;
+      }
+      # Inject compat method
+      { no strict 'refs';
+        *{"Mail::SpamAssassin::Conf::compat_$value"} = sub { 1 };
+      }
+    }
+  });
+
 =back
 
 =head1 TEMPLATE TAGS

Added: spamassassin/trunk/t/enable_compat.t
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/enable_compat.t?rev=1899984&view=auto
==============================================================================
--- spamassassin/trunk/t/enable_compat.t (added)
+++ spamassassin/trunk/t/enable_compat.t Mon Apr 18 15:16:23 2022
@@ -0,0 +1,44 @@
+#!/usr/bin/perl -T
+
+use lib '.'; use lib 't';
+use SATest; sa_t_init("enable_compat");
+use Test::More tests => 6;
+
+# ---------------------------------------------------------------------------
+
+%patterns = (
+  q{ 1.0 ANY_RULE }, '',
+  q{ 1.0 COMPAT_RULE }, '',
+);
+%anti_patterns = ();
+
+tstprefs("
+  enable_compat foo_testing
+  body ANY_RULE /./
+  if can(Mail::SpamAssassin::Conf::compat_foo_testing)
+    body COMPAT_RULE /EVOLUTION/
+  endif
+");
+
+ok (sarun ("-t -L < data/nice/001", \&patterns_run_cb));
+ok_all_patterns();
+
+# ---------------------------------------------------------------------------
+
+%patterns = (
+  q{ 1.0 ANY_RULE }, '',
+);
+%anti_patterns = (
+  q{ 1.0 COMPAT_RULE }, '',
+);
+
+tstprefs("
+  body ANY_RULE /./
+  if can(Mail::SpamAssassin::Conf::compat_foo_testing)
+    body COMPAT_RULE /EVOLUTION/
+  endif
+");
+
+ok (sarun ("-t -L < data/nice/001", \&patterns_run_cb));
+ok_all_patterns();
+

Propchange: spamassassin/trunk/t/enable_compat.t
------------------------------------------------------------------------------
    svn:executable = *