tests/10-routing.t
changeset 9 db2a8a5b8202
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/10-routing.t	Sat Jan 24 23:13:49 2015 +0100
@@ -0,0 +1,82 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+use File::Basename;
+use FindBin qw($Bin);
+use Getopt::Long;
+use Pod::Usage;
+use if @ARGV > 0   => 'Data::Dumper';
+use if $ENV{DEBUG} => 'Smart::Comments';
+
+if (@ARGV) {
+    GetOptions(
+        'h|help' => sub { pod2usage -exit => 0, -verbose => 1 },
+        'm|man'  => sub {
+            pod2usage
+              -exit      => 0,
+              -verbose   => 2,
+              -noperldoc => system('perldoc -V 2>/dev/null 1>/dev/null');
+        },
+      )
+      and @ARGV
+      or pod2usage;
+}
+
+use_ok 'Test::MTA::Exim4' or BAIL_OUT 'Unexpected!!!';
+isa_ok my $exim = Test::MTA::Exim4->new => 'Test::MTA::Exim4';
+
+if (@ARGV) {
+    foreach my $address (@ARGV) {
+        -d ($_ = "$Bin/samples/$address")
+          or mkdir $_
+          or -d "$Bin/samples"
+          ? die "Can't create $_: $!\n"
+          : "$Bin/samples directory missing\n";
+
+        my $outfile = "$_/-bt";
+
+        $_ = $exim->_run_exim_bt($address);
+        open(my $f, '>', $outfile) or die "$0: Can't open $outfile: $!\n";
+        ok print({$f} (Data::Dumper->Dump([$_], ['bt']))),
+          "data for $address written";
+    }
+
+    done_testing;
+    exit;
+}
+
+foreach (grep { -f "$_/-bt" } glob "$Bin/samples/*") {
+    my $address = basename $_;
+    my $bt      = do "$_/-bt";
+    my @target;
+    foreach (map { values %$_ } grep { ref } values %$bt) {
+        delete $_->{data};
+        delete $_->{original};
+        push @target, $_;
+    }
+    $exim->routes_as_ok($address, \@target, $address);
+}
+
+done_testing;
+
+=head1 NAME
+
+ 10-routing.t - automated tests with Test::MTA::Exim4
+
+=head1 SYNOPSIS
+
+ # learn mode
+ DIRECTORY/10-routing.t ADDRESS...
+
+ # test mode
+ DIRECTORY/10-routing.t
+ prove [DIRECTORY]
+
+=head1 AUTHOR
+
+Heiko Schlittermann L<hs@schlittermann.de>
+
+=cut
+