t/00.00-class-misc.t .......... 1..2 ok 1 - use Mail::SPF::Base; ok 2 - use Mail::SPF::Exception; ok t/00.01-class-util.t .......... 1..15 ok 1 - use Mail::SPF::Util; ok 2 - 'Mail::SPF::Util->ipv4_address_to_ipv6() returns NetAddr::IP object' isa 'NetAddr::IP' ok 3 - Mail::SPF::Util->ipv4_address_to_ipv6() yields correct IPv4-mapped IPv6 address ok 4 - 'Mail::SPF::Util->ipv4_address_to_ipv6($string) exception' isa 'Mail::SPF::EInvalidOptionValue' ok 5 - 'Mail::SPF::Util->ipv4_address_to_ipv6($ipv6_address) exception' isa 'Mail::SPF::EInvalidOptionValue' ok 6 - 'Mail::SPF::Util->ipv6_address_to_ipv4() returns NetAddr::IP object' isa 'NetAddr::IP' ok 7 - Mail::SPF::Util->ipv6_address_to_ipv4() yields correct IPv4 address ok 8 - 'Mail::SPF::Util->ipv6_address_to_ipv4($string) exception' isa 'Mail::SPF::EInvalidOptionValue' ok 9 - 'Mail::SPF::Util->ipv6_address_to_ipv4($ipv4_address) exception' isa 'Mail::SPF::EInvalidOptionValue' ok 10 - Mail::SPF::Util->ipv6_address_is_ipv4_mapped($ipv6_address_v4mapped) ok 11 - Mail::SPF::Util->ipv6_address_is_ipv4_mapped($ipv6_address) ok 12 - Mail::SPF::Util->ipv6_address_is_ipv4_mapped($ipv4_address) ok 13 - Mail::SPF::Util->ip_address_reverse($ipv4_address) ok 14 - Mail::SPF::Util->ip_address_reverse($ipv6_address_v4mapped) ok 15 - Mail::SPF::Util->ip_address_reverse($ipv6_address) ok t/00.02-class-request.t ....... 1..43 ok 1 - use Mail::SPF::Request; ok 2 - 'Basic request object' isa 'Mail::SPF::Request' ok 3 - Basic request versions() ok 4 - Basic request scope() ok 5 - Basic request authority_domain() ok 6 - Basic request identity() ok 7 - Basic request domain() ok 8 - Basic request localpart() ok 9 - 'Basic request ip_address()' isa 'NetAddr::IP' ok 10 - Basic request ip_address() ok 11 - Basic request ip_address() IP version ok 12 - 'Basic request ip_address_v6()' isa 'NetAddr::IP' ok 13 - Basic request ip_address_v6() ok 14 - Basic request ip_address_v6() IP version ok 15 - Basic request helo_identity() ok 16 - 'Clone request object' isa 'Mail::SPF::Request' ok 17 - Clone request inherited identity() ok 18 - Clone request override ip_address() ok 19 - 'Minimal MAIL FROM request object' isa 'Mail::SPF::Request' ok 20 - Minimal MAIL FROM request versions() ok 21 - Minimal MAIL FROM request scope() ok 22 - Minimal MAIL FROM request authority_domain() ok 23 - Minimal MAIL FROM request helo_identity() ok 24 - 'Minimal HELO request object' isa 'Mail::SPF::Request' ok 25 - Minimal HELO request versions() ok 26 - Minimal HELO request authority_domain() ok 27 - Minimal HELO request default localpart() ok 28 - Minimal HELO request helo_identity() ok 29 - versions => $string supported ok 30 - 'versions => $non_string_or_array illegal' isa 'Mail::SPF::EInvalidOptionValue' ok 31 - 'Detect illegal versions' isa 'Mail::SPF::EInvalidOptionValue' ok 32 - Drop versions irrelevant for scope ok 33 - 'Detect invalid scope' isa 'Mail::SPF::EInvalidScope' ok 34 - 'Detect invalid scope for versions' isa 'Mail::SPF::EInvalidScope' ok 35 - 'Detect missing identity option' isa 'Mail::SPF::EOptionRequired' ok 36 - Extract domain from identity correctly ok 37 - Default "postmaster" localpart ok 38 - 'Detect missing ip_address option' isa 'Mail::SPF::EOptionRequired' ok 39 - Accept NetAddr::IP object for ip_address ok 40 - Treat IPv4-mapped IPv6 address as IPv6 address ok 41 - Read uninitialized state field ok 42 - Write and read state field ok 43 - Original state unaffected when modifying clone state ok t/00.03-class-result.t ........ 1..20 ok 1 - use Mail::SPF::Result; ok 2 - 'Basic result object' isa 'Mail::SPF::Result' ok 3 - Basic result server() ok 4 - Basic result request() ok 5 - Basic result text() ok 6 - 'Param-rethrown result object' isa 'Mail::SPF::Result' ok 7 - Param-rethrown result server() ok 8 - Param-rethrown result request() ok 9 - Param-rethrown result text() ok 10 - Result class() ok 11 - Result class($valid_name) ok 12 - Result class($invalid_name) ok 13 - Result isa_by_name($valid_name) ok 14 - Result isa_by_name($invalid_name) ok 15 - Result is_code($valid_code) ok 16 - Result is_code($invalid_code) ok 17 - 'NeutralByDefault result object' isa 'Mail::SPF::Result::Neutral' ok 18 - NeutralByDefault result code() ok 19 - NeutralByDefault isa_by_name("neutral-by-default") ok 20 - NeutralByDefault isa_by_name("neutral") ok t/00.04-class-server.t ........ 1..23 ok 1 - use Mail::SPF::Server; ok 2 - 'Basic server object' isa 'Mail::SPF::Server' ok 3 - 'Basic server dns_resolver()' isa 'Net::DNS::Resolver::Programmable' ok 4 - Basic server max_dns_interactive_terms() ok 5 - Basic server max_name_lookups_per_term() ok 6 - Basic server max_name_lookups_per_mx_mech() ok 7 - Basic server fallback max_name_lookups_per_ptr_mech() ok 8 - 'Minimal server object' isa 'Mail::SPF::Server' ok 9 - 'Minimal server default dns_resolver()' isa 'Net::DNS::Resolver' ok 10 - Minimal server default max_dns_interactive_terms() ok 11 - Minimal server default max_name_lookups_per_term() ok 12 - Minimal server default max_name_lookups_per_mx_mech() ok 13 - Minimal server default max_name_lookups_per_ptr_mech() ok 14 - 'Server no-records dns_lookup() packet object' isa 'Net::DNS::Packet' ok 15 - Server no-records dns_lookup() rcode ok 16 - Server no-records dns_lookup() answer RR count ok 17 - 'Server "A" dns_lookup() packet object' isa 'Net::DNS::Packet' ok 18 - Server "A" dns_lookup() answer domain name ok 19 - Server "A" dns_lookup() answer RR type ok 20 - 'Server NXDOMAIN dns_lookup() packet object' isa 'Net::DNS::Packet' ok 21 - Server NXDOMAIN dns_lookup() rcode ok 22 - Server NXDOMAIN dns_lookup() answer RR count ok 23 - 'Server SERVFAIL dns_lookup()' isa 'Mail::SPF::EDNSError' ok t/00.05-class-macrostring.t ... 1..12 ok 1 - use Mail::SPF::MacroString; ok 2 - 'Early-context macro-string object' isa 'Mail::SPF::MacroString' ok 3 - Early-context macro-string text() ok 4 - Early-context macro-string expand() ok 5 - Early-context macro-string stringify() (+overloading) ok 6 - 'Late-context macro-string object' isa 'Mail::SPF::MacroString' ok 7 - Late-context macro-string context-less stringify() (+overloading) ok 8 - 'Late-context macro-string context-less expand() illegal' isa 'Mail::SPF::EMacroExpansionCtxRequired' ok 9 - Late-context macro-string expand(context) ok 10 - Late-context macro-string context-less stringify() (+overloading) after expand(context) ok 11 - Late-context macro-string context-ful expand() ok 12 - Late-context macro-string context-ful stringify() (+overloading) ok t/00.99-class-misc.t .......... 1..17 ok 1 - use Mail::SPF::Term; ok 2 - use Mail::SPF::Mech; ok 3 - use Mail::SPF::Mech::All; ok 4 - use Mail::SPF::Mech::IP4; ok 5 - use Mail::SPF::Mech::IP6; ok 6 - use Mail::SPF::Mech::A; ok 7 - use Mail::SPF::Mech::MX; ok 8 - use Mail::SPF::Mech::PTR; ok 9 - use Mail::SPF::Mech::Exists; ok 10 - use Mail::SPF::Mech::Include; ok 11 - use Mail::SPF::Mod; ok 12 - use Mail::SPF::Mod::Exp; ok 13 - use Mail::SPF::Mod::Redirect; ok 14 - use Mail::SPF::Record; ok 15 - use Mail::SPF::v1::Record; ok 16 - use Mail::SPF::v2::Record; ok 17 - use Mail::SPF; ok t/10.00-rfc4408.t ............. skipped: Mail::SPF::Test required for testing Mail::SPF's RFC compliance t/10.01-rfc4406.t ............. skipped: Mail::SPF::Test required for testing Mail::SPF's RFC compliance t/10.02-rfc7208.t ............. skipped: Mail::SPF::Test required for testing Mail::SPF's RFC compliance t/90-author-pod-validation.t .. 1..27 ok 1 - POD test for blib/script/spfd ok 2 - POD test for blib/script/spfquery ok 3 - POD test for blib/lib/Mail/SPF.pm ok 4 - POD test for blib/lib/Mail/SPF/Term.pm ok 5 - POD test for blib/lib/Mail/SPF/Exception.pm ok 6 - POD test for blib/lib/Mail/SPF/Util.pm ok 7 - POD test for blib/lib/Mail/SPF/Record.pm ok 8 - POD test for blib/lib/Mail/SPF/Request.pm ok 9 - POD test for blib/lib/Mail/SPF/Mod.pm ok 10 - POD test for blib/lib/Mail/SPF/MacroString.pm ok 11 - POD test for blib/lib/Mail/SPF/SenderIPAddrMech.pm ok 12 - POD test for blib/lib/Mail/SPF/Server.pm ok 13 - POD test for blib/lib/Mail/SPF/Mech.pm ok 14 - POD test for blib/lib/Mail/SPF/Result.pm ok 15 - POD test for blib/lib/Mail/SPF/Base.pm ok 16 - POD test for blib/lib/Mail/SPF/Mod/Redirect.pm ok 17 - POD test for blib/lib/Mail/SPF/Mod/Exp.pm ok 18 - POD test for blib/lib/Mail/SPF/v2/Record.pm ok 19 - POD test for blib/lib/Mail/SPF/Mech/PTR.pm ok 20 - POD test for blib/lib/Mail/SPF/Mech/Exists.pm ok 21 - POD test for blib/lib/Mail/SPF/Mech/A.pm ok 22 - POD test for blib/lib/Mail/SPF/Mech/All.pm ok 23 - POD test for blib/lib/Mail/SPF/Mech/MX.pm ok 24 - POD test for blib/lib/Mail/SPF/Mech/IP6.pm ok 25 - POD test for blib/lib/Mail/SPF/Mech/IP4.pm ok 26 - POD test for blib/lib/Mail/SPF/Mech/Include.pm ok 27 - POD test for blib/lib/Mail/SPF/v1/Record.pm ok All tests successful. Files=11, Tests=159, 1 wallclock secs ( 0.03 usr 0.02 sys + 0.45 cusr 0.16 csys = 0.66 CPU) Result: PASS