The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T

use strict;
use warnings;

use Test::More tests => 9;

use CPANPLUS::Dist::Gentoo::Guard;

my $called = 0;
my $hook = sub { $called++ };

is $called, 0, 'not called yet';
{
 my $guard = CPANPLUS::Dist::Gentoo::Guard->new($hook);
 is $called, 0, 'creating the guard doesn\'t call the hook';
}
is $called, 1, 'called at end of scope';

$called = 0;
is $called, 0, '$called reset';
{
 my $guard = CPANPLUS::Dist::Gentoo::Guard->new($hook);
 $guard->unarm;
 is $called, 0, 'unarming the guard doesn\'t call the hook';
}
is $called, 0, 'not called at end of scope';

$called = 0;
is $called, 0, '$called reset again';
{
 my $guard = CPANPLUS::Dist::Gentoo::Guard->new($hook);
 $guard->DESTROY;
 is $called, 1, 'called DESTROY explicitely';
}
is $called, 1, 'the hook was called only once';