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/11 07:09:25 UTC
svn commit: r1899731 - in /spamassassin/trunk/t: config.dist sql_based_whitelist.t
Author: hege
Date: Mon Apr 11 07:09:25 2022
New Revision: 1899731
URL: http://svn.apache.org/viewvc?rev=1899731&view=rev
Log:
Use DBD::SQLite for AWL tests when available
Modified:
spamassassin/trunk/t/config.dist
spamassassin/trunk/t/sql_based_whitelist.t
Modified: spamassassin/trunk/t/config.dist
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/config.dist?rev=1899731&r1=1899730&r2=1899731&view=diff
==============================================================================
--- spamassassin/trunk/t/config.dist (original)
+++ spamassassin/trunk/t/config.dist Mon Apr 11 07:09:25 2022
@@ -25,8 +25,10 @@ run_dcc_tests=n
run_sql_pref_tests=n
# ---------------------------------------------------------------------------
-# Run SQL-based Auto-whitelist tests during 'make test' (additional
-# information required, below:)
+# Run SQL-based Auto-whitelist tests during 'make test'
+# NOTE: AWL test is always run with DBD::SQLite when available, only enable
+# this when you want to additionally test for example MySQL or PostgresSQL
+# (for which database needs to be created manually and configured below).
run_awl_sql_tests=n
# SQL AWL DSN
Modified: spamassassin/trunk/t/sql_based_whitelist.t
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/sql_based_whitelist.t?rev=1899731&r1=1899730&r2=1899731&view=diff
==============================================================================
--- spamassassin/trunk/t/sql_based_whitelist.t (original)
+++ spamassassin/trunk/t/sql_based_whitelist.t Mon Apr 11 07:09:25 2022
@@ -2,35 +2,75 @@
use lib '.'; use lib 't';
use SATest;
-
use Test::More;
-plan skip_all => 'AWL SQL Tests not enabled.' unless conf_bool('run_awl_sql_tests');
-plan tests => 23;
+
+use constant HAS_DBI => eval { require DBI; };
+use constant HAS_DBD_SQLITE => eval { require DBD::SQLite; };
+
+use constant SQLITE => (HAS_DBI && HAS_DBD_SQLITE);
+use constant SQL => conf_bool('run_awl_sql_tests');
+
+plan skip_all => "run_awl_sql_tests not enabled or DBI/SQLite not found" unless (SQLITE || SQL);
+
+my $tests = 0;
+$tests += 23 if (SQLITE);
+$tests += 23 if (SQL);
+plan tests => $tests;
+
diag "Note: Failure may be due to an incorrect config";
sa_t_init("sql_based_whitelist");
-my $dbconfig = '';
-foreach my $setting (qw(
- user_awl_dsn
- user_awl_sql_username
- user_awl_sql_password
- user_awl_sql_table
-)) {
- my $val = conf($setting);
- $dbconfig .= "$setting $val\n" if $val;
+if (SQLITE) {
+ my $dbh = DBI->connect("dbi:SQLite:dbname=$workdir/awl.db","","");
+ $dbh->do("
+ CREATE TABLE awl (
+ username varchar(100) NOT NULL default '',
+ email varchar(255) NOT NULL default '',
+ ip varchar(40) NOT NULL default '',
+ msgcount bigint NOT NULL default '0',
+ totscore float NOT NULL default '0',
+ signedby varchar(255) NOT NULL default '',
+ last_hit timestamp NOT NULL default CURRENT_TIMESTAMP,
+ PRIMARY KEY (username,email,signedby,ip)
+ );
+ ") or die "Failed to create $workdir/awl.db";
+
+ tstprefs ("
+ use_auto_whitelist 1
+ auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
+ user_awl_dsn dbi:SQLite:dbname=$workdir/awl.db
+ ");
+
+ run_awl();
}
-my $testuser = 'tstusr.'.$$.'.'.time();
+if (SQL) {
+ my $dbconfig = '';
+ foreach my $setting (qw(
+ user_awl_dsn
+ user_awl_sql_username
+ user_awl_sql_password
+ user_awl_sql_table
+ )) {
+ my $val = conf($setting);
+ $dbconfig .= "$setting $val\n" if $val;
+ }
+
+ my $testuser = 'tstusr.'.$$.'.'.time();
+
+ tstprefs ("
+ use_auto_whitelist 1
+ auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
+ $dbconfig
+ user_awl_sql_override_username $testuser
+ ");
-tstprefs ("
- use_auto_whitelist 1
- auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
- $dbconfig
- user_awl_sql_override_username $testuser
-");
+ run_awl();
+}
# ---------------------------------------------------------------------------
+sub run_awl {
%is_nonspam_patterns = (
q{ Subject: Re: [SAtalk] auto-whitelisting}, 'subj',
@@ -76,3 +116,5 @@ ok_all_patterns();
ok(sarun ("--remove-addr-from-whitelist whitelist_test\@whitelist.spamassassin.taint.org", \&patterns_run_cb));
+}
+# ---------------------------------------------------------------------------