# Settings for SpamAssassin test suite.   These are the default settings.
# Please copy this file to 'config' and edit to your taste.

# ---------------------------------------------------------------------------
# Run time-consuming tests during 'make test'.  (These tests take longer
# than 10 seconds each on a reasonably fast box circa year 2000.)

# Defaulting to run long tests per bug 6776
run_long_tests=y

# ---------------------------------------------------------------------------
# Run network rule tests during 'make test'.
# test scripts may fail due to network problems)

run_net_tests=n

# If you have resolver capable of returning IPv6/AAAA addresses
run_ipv6_dns_tests=n

# Run DCC Tests
run_dcc_tests=n

# ---------------------------------------------------------------------------
# Run SQL-based user pref tests during 'make test' REQUIRES DBD::SQLite
run_sql_pref_tests=n

# ---------------------------------------------------------------------------
# Run SQL-based Auto-whitelist tests during 'make test' (additional
# information required, below:)
run_awl_sql_tests=n

# SQL AWL DSN
user_awl_dsn=dbi:mysql:spamassassin:localhost
# SQL AWL DB username
user_awl_sql_username=
# SQL AWL DB password
user_awl_sql_password=
# SQL AWL tablename
user_awl_sql_table=awl

# ---------------------------------------------------------------------------
# Run Bayes SQL storage tests during 'make test' (additional
# information required, below:)
run_bayes_sql_tests=n

# Bayes Store Module (bayes_store_module)
bayes_store_module=Mail::SpamAssassin::BayesStore::SQL
# Bayes SQL DSN (bayes_sql_dsn)
bayes_sql_dsn=dbi:mysql:spamassassin:localhost
# Bayes SQL DB username (bayes_sql_username)
bayes_sql_username=
# Bayes SQL DB password (bayes_sql_password)
bayes_sql_password=

# ---------------------------------------------------------------------------

# This test will kill any processes on the system containing the string 'spamd
# child' in their process title, so is not run by default.  Enable by setting
# this to "y".
run_spamd_prefork_stress_test=n

# ---------------------------------------------------------------------------

# rule_names.t fails continually due to changes in the rulesrc repository;
# TODO: we need a better way to test this.
run_rule_name_tests=n

# ---------------------------------------------------------------------------

# This test requires the Devel::SawAmpersand CPAN module, and may also fail
# depending on changes in the third-party modules we import.
run_saw_ampersand_test=n

# ---------------------------------------------------------------------------

# The "root_*.t" tests require root privileges, and may create files in
# the filesystem as part of the test.  Disabled by default.
run_root_tests=n

# the lang_pl_tests.t checks for problems in Polish language locales. 
# disabled per bug 6992
run_pl_tests=n
