The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings;

use File::Spec ();
use File::Temp ();

use Test::More 'no_plan';

BEGIN { use_ok('Mail::Audit'); }

sub readfile {
  my ($name) = @_;
  local *MESSAGE_FILE;
  open MESSAGE_FILE, "<$name" or die "coudn't read $name: $!";
  my @lines = <MESSAGE_FILE>;
  close MESSAGE_FILE;
  return \@lines;
}

my $message = readfile('t/messages/simple.msg');

my $maildir   = File::Temp::tempdir(CLEANUP => 1);

my $exit = undef;

my $audit = Mail::Audit->new(
  data      => $message,
  emergency => undef,
  log       => undef,
  loglevel  => 0,

  _exit     => sub { $exit = $_[1] },
);

isa_ok($audit, 'Mail::Audit');

# XXX: use catdir to make this OS-agnostic -- rjbs, 2006-06-01
ok(
  (! -d File::Spec->catdir($maildir, 'new')),
  "the eventual destination isn't a maildir (yet)"
);

{
  $audit->noexit(1);
  $audit->accept($maildir);
  $audit->noexit(0);

  my @files = <$maildir/new/*>;
  is(@files, 1, "we accepted the message to a maildir: 1 message in new/");
  is($exit, undef, "we didn't exit, because noexit was true");
}

{
  $audit->accept($maildir);

  my @files = <$maildir/new/*>;
  is(@files, 2, "we accepted the message to a maildir: 2 messages in new/");
  ok(defined($exit), "we've exited!");
  is($exit, 0, "and the exit code is 0, for delivery");
}

pass("we're still still here! per-method noexit was respected");