aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>2016-08-09 16:47:41 +0100
committerDagfinn Ilmari Mannsåker <ilmari@ilmari.org>2016-08-09 17:00:25 +0100
commit3a492beebdc22ea5f06384c99080515e11b1aa32 (patch)
treedcd2aebb1f92b45830458962344683a4a4d41a8d
parentAdd .proverc (diff)
downloadSietima-3a492beebdc22ea5f06384c99080515e11b1aa32.tar.gz
Sietima-3a492beebdc22ea5f06384c99080515e11b1aa32.tar.bz2
Sietima-3a492beebdc22ea5f06384c99080515e11b1aa32.zip
Use sub signatures!
also: * add Sietima::Policy to enable stuff everywhere * use Test::Sietima everywhere (which imposes Sietima::Policy)
-rw-r--r--lib/Sietima.pm2
-rw-r--r--lib/Sietima/MailStore.pm2
-rw-r--r--lib/Sietima/Message.pm6
-rw-r--r--lib/Sietima/Policy.pm18
-rw-r--r--lib/Sietima/Role/AvoidDups.pm6
-rw-r--r--lib/Sietima/Role/Debounce.pm6
-rw-r--r--lib/Sietima/Role/NoMail.pm6
-rw-r--r--lib/Sietima/Role/ReplyTo.pm6
-rw-r--r--lib/Sietima/Role/SubjectTag.pm6
-rw-r--r--lib/Sietima/Role/SubscriberOnly.pm6
-rw-r--r--lib/Sietima/Role/SubscriberOnly/Drop.pm2
-rw-r--r--lib/Sietima/Role/SubscriberOnly/Moderate.pm10
-rw-r--r--lib/Sietima/Role/WithAdmin.pm2
-rw-r--r--lib/Sietima/Role/WithMailStore.pm2
-rw-r--r--lib/Sietima/Subscriber.pm2
-rw-r--r--lib/Sietima/Types.pm4
-rw-r--r--t/lib/Test/Sietima.pm26
-rw-r--r--t/lib/Test/Sietima/MailStore.pm16
-rw-r--r--t/tests/sietima.t3
-rw-r--r--t/tests/sietima/message.t6
-rw-r--r--t/tests/sietima/role/avoid-dups.t3
-rw-r--r--t/tests/sietima/role/debounce.t3
-rw-r--r--t/tests/sietima/role/nomail.t3
-rw-r--r--t/tests/sietima/role/replyto.t3
-rw-r--r--t/tests/sietima/role/subject-tag.t3
-rw-r--r--t/tests/sietima/role/subscriberonly/drop.t3
-rw-r--r--t/tests/sietima/role/subscriberonly/moderate.t3
-rw-r--r--t/tests/sietima/subscriber.t7
28 files changed, 57 insertions, 108 deletions
diff --git a/lib/Sietima.pm b/lib/Sietima.pm
index 79042fa..2a3c80b 100644
--- a/lib/Sietima.pm
+++ b/lib/Sietima.pm
@@ -1,6 +1,6 @@
package Sietima;
-use 5.024;
use Moo;
+use Sietima::Policy;
use Types::Standard qw(ArrayRef Object FileHandle Maybe);
use Type::Params qw(compile);
use Sietima::Types qw(Address AddressFromStr
diff --git a/lib/Sietima/MailStore.pm b/lib/Sietima/MailStore.pm
index cef6864..6f0a2ab 100644
--- a/lib/Sietima/MailStore.pm
+++ b/lib/Sietima/MailStore.pm
@@ -1,6 +1,6 @@
package Sietima::MailStore;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
requires 'store','retrieve_by_tags','retrieve_by_id';
diff --git a/lib/Sietima/Message.pm b/lib/Sietima/Message.pm
index afe2ca9..9d8ef61 100644
--- a/lib/Sietima/Message.pm
+++ b/lib/Sietima/Message.pm
@@ -1,6 +1,6 @@
package Sietima::Message;
-use 5.024;
use Moo;
+use Sietima::Policy;
use Types::Standard qw(ArrayRef Object);
use Sietima::Types qw(Address AddressFromStr
Subscriber SubscriberFromAddress SubscriberFromStr
@@ -36,9 +36,7 @@ has to => (
required => 1,
);
-sub envelope {
- my ($self) = @_;
-
+sub envelope ($self) {
return {
from => $self->from,
to => [ map { $_->address } $self->to->@* ],
diff --git a/lib/Sietima/Policy.pm b/lib/Sietima/Policy.pm
new file mode 100644
index 0000000..bd0511f
--- /dev/null
+++ b/lib/Sietima/Policy.pm
@@ -0,0 +1,18 @@
+package Sietima::Policy;
+use 5.024;
+use strict;
+use warnings;
+use feature ':5.24';
+use experimental 'signatures';
+
+sub import {
+ # These affect the currently compiling scope,
+ # so no need for import::into
+ strict->import;
+ warnings->import;
+ experimental->import('signatures');
+ feature->import(':5.24');
+ return;
+}
+
+1;
diff --git a/lib/Sietima/Role/AvoidDups.pm b/lib/Sietima/Role/AvoidDups.pm
index e0d09c9..598d57b 100644
--- a/lib/Sietima/Role/AvoidDups.pm
+++ b/lib/Sietima/Role/AvoidDups.pm
@@ -1,12 +1,10 @@
package Sietima::Role::AvoidDups;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use Email::Address;
use namespace::clean;
-around subscribers_to_send_to => sub {
- my ($orig,$self,$mail) = @_;
-
+around subscribers_to_send_to => sub ($orig,$self,$mail) {
my @already_receiving = map {
Email::Address->parse($_)
} $mail->header_str('to'),$mail->header_str('cc');
diff --git a/lib/Sietima/Role/Debounce.pm b/lib/Sietima/Role/Debounce.pm
index 59bb1f2..8df53a5 100644
--- a/lib/Sietima/Role/Debounce.pm
+++ b/lib/Sietima/Role/Debounce.pm
@@ -1,13 +1,11 @@
package Sietima::Role::Debounce;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use namespace::clean;
my $been_there = 'X-Been-There';
-around munge_mail => sub {
- my ($orig,$self,$incoming_mail) = @_;
-
+around munge_mail => sub ($orig,$self,$incoming_mail) {
my $return_path = $self->return_path->address;
if (my $there = $incoming_mail->header_str($been_there)) {
return if $there =~ m{\b\Q$return_path\E\b};
diff --git a/lib/Sietima/Role/NoMail.pm b/lib/Sietima/Role/NoMail.pm
index c327e46..84d7d9b 100644
--- a/lib/Sietima/Role/NoMail.pm
+++ b/lib/Sietima/Role/NoMail.pm
@@ -1,11 +1,9 @@
package Sietima::Role::NoMail;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use namespace::clean;
-around subscribers_to_send_to => sub {
- my ($orig,$self,$mail) = @_;
-
+around subscribers_to_send_to => sub ($orig,$self,$mail) {
return [
grep { $_->prefs->{wants_mail} // 1 }
$self->$orig($mail)->@*,
diff --git a/lib/Sietima/Role/ReplyTo.pm b/lib/Sietima/Role/ReplyTo.pm
index d4eb5e5..56a8ed9 100644
--- a/lib/Sietima/Role/ReplyTo.pm
+++ b/lib/Sietima/Role/ReplyTo.pm
@@ -1,6 +1,6 @@
package Sietima::Role::ReplyTo;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use Types::Standard qw(Bool);
use List::AllUtils qw(part);
use namespace::clean;
@@ -11,9 +11,7 @@ has munge_reply_to => (
default => 0,
);
-around munge_mail => sub {
- my ($orig,$self,$mail) = @_;
-
+around munge_mail => sub ($orig,$self,$mail) {
my @messages = $self->$orig($mail);
my @ret;
for my $m (@messages) {
diff --git a/lib/Sietima/Role/SubjectTag.pm b/lib/Sietima/Role/SubjectTag.pm
index 1daa662..edaa598 100644
--- a/lib/Sietima/Role/SubjectTag.pm
+++ b/lib/Sietima/Role/SubjectTag.pm
@@ -1,6 +1,6 @@
package Sietima::Role::SubjectTag;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use Types::Standard qw(Str);
use namespace::clean;
@@ -10,9 +10,7 @@ has subject_tag => (
required => 1,
);
-around munge_mail => sub {
- my ($orig,$self,$mail) = @_;
-
+around munge_mail => sub ($orig,$self,$mail) {
my $tag = '['.$self->subject_tag.']';
my $subject = $mail->header_str('Subject');
unless ($subject =~ m{\Q$tag\E}) {
diff --git a/lib/Sietima/Role/SubscriberOnly.pm b/lib/Sietima/Role/SubscriberOnly.pm
index 07eac1e..f01dadf 100644
--- a/lib/Sietima/Role/SubscriberOnly.pm
+++ b/lib/Sietima/Role/SubscriberOnly.pm
@@ -1,6 +1,6 @@
package Sietima::Role::SubscriberOnly;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use Email::Address;
use List::AllUtils qw(any);
use namespace::clean;
@@ -9,9 +9,7 @@ requires 'munge_mail_from_non_subscriber';
our $let_it_pass=0;
-around munge_mail => sub {
- my ($orig,$self,$mail) = @_;
-
+around munge_mail => sub ($orig,$self,$mail) {
my ($from) = Email::Address->parse( $mail->header_str('from') );
if ( $let_it_pass or
any { $_->match($from) } $self->subscribers->@* ) {
diff --git a/lib/Sietima/Role/SubscriberOnly/Drop.pm b/lib/Sietima/Role/SubscriberOnly/Drop.pm
index c511c9b..2036c99 100644
--- a/lib/Sietima/Role/SubscriberOnly/Drop.pm
+++ b/lib/Sietima/Role/SubscriberOnly/Drop.pm
@@ -1,6 +1,6 @@
package Sietima::Role::SubscriberOnly::Drop;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use namespace::clean;
with 'Sietima::Role::SubscriberOnly';
diff --git a/lib/Sietima/Role/SubscriberOnly/Moderate.pm b/lib/Sietima/Role/SubscriberOnly/Moderate.pm
index 912fb49..89cac02 100644
--- a/lib/Sietima/Role/SubscriberOnly/Moderate.pm
+++ b/lib/Sietima/Role/SubscriberOnly/Moderate.pm
@@ -1,6 +1,6 @@
package Sietima::Role::SubscriberOnly::Moderate;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use Email::Stuffer;
use Email::MIME;
use namespace::clean;
@@ -9,9 +9,7 @@ with 'Sietima::Role::SubscriberOnly',
'Sietima::Role::WithMailStore',
'Sietima::Role::WithAdmin';
-sub munge_mail_from_non_subscriber {
- my ($self,$mail) = @_;
-
+sub munge_mail_from_non_subscriber ($self,$mail) {
my $id = $self->mail_store->store($mail,'moderation');
my $notice = Email::Stuffer
->from($self->return_path)
@@ -26,9 +24,7 @@ sub munge_mail_from_non_subscriber {
return;
}
-sub resume {
- my ($self,$mail_id) = @_;
-
+sub resume ($self,$mail_id) {
my $mail = $self->mail_store->retrieve_by_id($mail_id);
local $Sietima::Role::SubscriberOnly::let_it_pass=1;
$self->handle_mail($mail);
diff --git a/lib/Sietima/Role/WithAdmin.pm b/lib/Sietima/Role/WithAdmin.pm
index da0f05a..49b0f51 100644
--- a/lib/Sietima/Role/WithAdmin.pm
+++ b/lib/Sietima/Role/WithAdmin.pm
@@ -1,6 +1,6 @@
package Sietima::Role::WithAdmin;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use Sietima::Types qw(Address AddressFromStr);
use namespace::clean;
diff --git a/lib/Sietima/Role/WithMailStore.pm b/lib/Sietima/Role/WithMailStore.pm
index 806d273..9d3a8bd 100644
--- a/lib/Sietima/Role/WithMailStore.pm
+++ b/lib/Sietima/Role/WithMailStore.pm
@@ -1,6 +1,6 @@
package Sietima::Role::WithMailStore;
-use 5.024;
use Moo::Role;
+use Sietima::Policy;
use Sietima::Types qw(MailStore);
use namespace::clean;
diff --git a/lib/Sietima/Subscriber.pm b/lib/Sietima/Subscriber.pm
index 79a26fb..44b36ed 100644
--- a/lib/Sietima/Subscriber.pm
+++ b/lib/Sietima/Subscriber.pm
@@ -1,6 +1,6 @@
package Sietima::Subscriber;
-use 5.024;
use Moo;
+use Sietima::Policy;
use Types::Standard qw(ArrayRef HashRef Object);
use Type::Params qw(compile);
use Sietima::Types qw(Address AddressFromStr);
diff --git a/lib/Sietima/Types.pm b/lib/Sietima/Types.pm
index af650b9..27a3e17 100644
--- a/lib/Sietima/Types.pm
+++ b/lib/Sietima/Types.pm
@@ -1,7 +1,5 @@
package Sietima::Types;
-use 5.024;
-use strict;
-use warnings;
+use Sietima::Policy;
use Type::Utils -all;
use Types::Standard qw(Str HashRef);
use namespace::clean;
diff --git a/t/lib/Test/Sietima.pm b/t/lib/Test/Sietima.pm
index 31fb809..7b2a6ae 100644
--- a/t/lib/Test/Sietima.pm
+++ b/t/lib/Test/Sietima.pm
@@ -1,7 +1,4 @@
package Test::Sietima;
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Import::Into;
use Email::Stuffer;
@@ -10,6 +7,7 @@ use Data::Printer;
use Sietima;
use Test2::Bundle::Extended;
use Test2::API qw(context);
+use Sietima::Policy;
use namespace::clean;
sub import {
@@ -17,6 +15,7 @@ sub import {
Test2::Bundle::Extended->import::into($target);
Test2::Plugin::DieOnFail->import::into($target);
Data::Printer->import::into($target);
+ Sietima::Policy->import::into($target);
for my $function (qw(transport make_sietima make_mail
deliveries_are test_sending)) {
@@ -33,9 +32,7 @@ sub transport {
return $transport;
}
-sub make_sietima {
- my (%args) = @_;
-
+sub make_sietima (%args) {
my $class = 'Sietima';
if (my $traits = delete $args{with_traits}) {
$class = $class->with_traits($traits->@*);
@@ -48,14 +45,12 @@ sub make_sietima {
});
}
-my $maybe = sub {
- my ($obj,$method,$arg) = @_;
+my $maybe = sub ($obj,$method,$arg) {
return $obj unless $arg;
return $obj->$method($arg);
};
-my $mapit = sub {
- my ($obj,$method,$arg) = @_;
+my $mapit = sub ($obj,$method,$arg) {
return $obj unless $arg;
for my $k (keys $arg->%*) {
$obj = $obj->$method($k, $arg->{$k});
@@ -63,9 +58,7 @@ my $mapit = sub {
return $obj;
};
-sub make_mail {
- my (%args) = @_;
-
+sub make_mail (%args) {
Email::Stuffer
->from($args{from}||'someone@users.example.com')
->to($args{to}||$return_path)
@@ -76,9 +69,7 @@ sub make_mail {
->email;
}
-sub deliveries_are {
- my (%args) = @_;
-
+sub deliveries_are (%args) {
my $ctx = context();
my $checker;
@@ -136,8 +127,7 @@ sub deliveries_are {
$ctx->release;
}
-sub test_sending {
- my (%args) = @_;
+sub test_sending (%args) {
my $ctx = context();
my $sietima = delete $args{sietima};
diff --git a/t/lib/Test/Sietima/MailStore.pm b/t/lib/Test/Sietima/MailStore.pm
index ff4064c..60054c3 100644
--- a/t/lib/Test/Sietima/MailStore.pm
+++ b/t/lib/Test/Sietima/MailStore.pm
@@ -1,8 +1,6 @@
package Test::Sietima::MailStore;
-use strict;
-use warnings;
-use 5.024;
use Moo;
+use Sietima::Policy;
use List::AllUtils qw(all);
use namespace::clean;
@@ -15,9 +13,7 @@ has _mails => (
sub clear { shift->_mails([]) }
-sub store {
- my ($self,$mail,@tags) = @_;
-
+sub store ($self,$mail,@tags) {
my $id = time();
push $self->_mails->@*, {
id => $id,
@@ -27,9 +23,7 @@ sub store {
return $id;
}
-sub retrieve_by_tags {
- my ($self,@tags) = @_;
-
+sub retrieve_by_tags ($self,@tags){
my @ret;
for my $m ($self->_mails->@*) {
next unless all { $m->{tags}{$_} } @tags;
@@ -42,9 +36,7 @@ sub retrieve_by_tags {
return \@ret;
}
-sub retrieve_by_id {
- my ($self,$id) = @_;
-
+sub retrieve_by_id ($self,$id) {
for my $m ($self->_mails->@*) {
next unless $m->{id} eq $id;
return Email::MIME->new($m->{mail});
diff --git a/t/tests/sietima.t b/t/tests/sietima.t
index 143c026..987cbdd 100644
--- a/t/tests/sietima.t
+++ b/t/tests/sietima.t
@@ -1,7 +1,4 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Test::Sietima;
diff --git a/t/tests/sietima/message.t b/t/tests/sietima/message.t
index 5d9ceca..d1c548a 100644
--- a/t/tests/sietima/message.t
+++ b/t/tests/sietima/message.t
@@ -1,10 +1,6 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
-use Test2::Bundle::Extended;
-use Test2::Plugin::DieOnFail;
+use Test::Sietima;
use Email::Stuffer;
use Sietima::Message;
diff --git a/t/tests/sietima/role/avoid-dups.t b/t/tests/sietima/role/avoid-dups.t
index 58cd308..671d898 100644
--- a/t/tests/sietima/role/avoid-dups.t
+++ b/t/tests/sietima/role/avoid-dups.t
@@ -1,7 +1,4 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Test::Sietima;
diff --git a/t/tests/sietima/role/debounce.t b/t/tests/sietima/role/debounce.t
index 903427b..ba7566c 100644
--- a/t/tests/sietima/role/debounce.t
+++ b/t/tests/sietima/role/debounce.t
@@ -1,7 +1,4 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Test::Sietima;
diff --git a/t/tests/sietima/role/nomail.t b/t/tests/sietima/role/nomail.t
index a0be192..1622fb4 100644
--- a/t/tests/sietima/role/nomail.t
+++ b/t/tests/sietima/role/nomail.t
@@ -1,7 +1,4 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Test::Sietima;
diff --git a/t/tests/sietima/role/replyto.t b/t/tests/sietima/role/replyto.t
index 1bd2d02..c502391 100644
--- a/t/tests/sietima/role/replyto.t
+++ b/t/tests/sietima/role/replyto.t
@@ -1,7 +1,4 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Test::Sietima;
diff --git a/t/tests/sietima/role/subject-tag.t b/t/tests/sietima/role/subject-tag.t
index 490f1a3..e3a266b 100644
--- a/t/tests/sietima/role/subject-tag.t
+++ b/t/tests/sietima/role/subject-tag.t
@@ -1,7 +1,4 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Test::Sietima;
diff --git a/t/tests/sietima/role/subscriberonly/drop.t b/t/tests/sietima/role/subscriberonly/drop.t
index c4123af..6229bb3 100644
--- a/t/tests/sietima/role/subscriberonly/drop.t
+++ b/t/tests/sietima/role/subscriberonly/drop.t
@@ -1,7 +1,4 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Test::Sietima;
diff --git a/t/tests/sietima/role/subscriberonly/moderate.t b/t/tests/sietima/role/subscriberonly/moderate.t
index b76a01a..a641a55 100644
--- a/t/tests/sietima/role/subscriberonly/moderate.t
+++ b/t/tests/sietima/role/subscriberonly/moderate.t
@@ -1,7 +1,4 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
use lib 't/lib';
use Test::Sietima;
use Test::Sietima::MailStore;
diff --git a/t/tests/sietima/subscriber.t b/t/tests/sietima/subscriber.t
index 979997b..23651a9 100644
--- a/t/tests/sietima/subscriber.t
+++ b/t/tests/sietima/subscriber.t
@@ -1,9 +1,6 @@
#!perl
-use strict;
-use warnings;
-use 5.024;
-use Test2::Bundle::Extended;
-use Test2::Plugin::DieOnFail;
+use lib 't/lib';
+use Test::Sietima;
use Sietima::Subscriber;
subtest 'simple' => sub {