Scope-Cleanup

 view release on metacpan or  search on metacpan

t/context.t  view on Meta::CPAN

use warnings;
use strict;

use Test::More tests => 7;

BEGIN { use_ok "Scope::Cleanup", qw(establish_cleanup); }

my @events;

sub aa(@) {
	push @events, [ "aa0", @_ ];
	establish_cleanup sub { push @events, [ "bb0", wantarray ] };
	push @events, [ "aa1" ];
	"aa2";
}

@events = ();
push @events, [ "cc0" ];
push @events, [ "cc2", aa("cc1a", "cc1b") ];
is_deeply \@events, [

t/scope.t  view on Meta::CPAN

use warnings;
use strict;

use Test::More tests => 3;

BEGIN { use_ok "Scope::Cleanup", qw(establish_cleanup); }

my @events;

sub aa(@) {
	push @events, [ "aa0", @_ ];
	establish_cleanup sub { push @events, [ "bb0", @_ ] }
		if 1;
	establish_cleanup sub { push @events, [ "bb1", @_ ] }
		if 0;
	establish_cleanup sub { push @events, [ "bb2", @_ ] }
		if 1;
	push @events, [ "aa1" ];
	"aa2";
}

t/scope.t  view on Meta::CPAN

push @events, [ "cc2", aa("cc1a", "cc1b") ];
is_deeply \@events, [
	[ "cc0" ],
	[ "aa0", "cc1a", "cc1b" ],
	[ "aa1" ],
	[ "bb2" ],
	[ "bb0" ],
	[ "cc2", "aa2" ],
];

sub dd(@) {
	push @events, [ "dd0", @_ ];
	do { establish_cleanup sub { push @events, [ "ee0", @_ ] } }
		if 1;
	do { establish_cleanup sub { push @events, [ "ee1", @_ ] } }
		if 0;
	do { establish_cleanup sub { push @events, [ "ee2", @_ ] } }
		if 1;
	push @events, [ "dd1" ];
	"dd2";
}

t/via_death.t  view on Meta::CPAN

use warnings;
use strict;

use Test::More tests => 3;

BEGIN { use_ok "Scope::Cleanup", qw(establish_cleanup); }

my @events;

sub aa(@) {
	my $value = eval {
		push @events, [ "aa0", @_ ];
		establish_cleanup sub { push @events, [ "bb0", @_ ] };
		push @events, [ "aa1" ];
		my $zero = 0;
		push @events, [ "aa2", $zero/$zero ];
		push @events, [ "aa3" ];
		"aa4";
	};
	my $err = $@;

t/via_death.t  view on Meta::CPAN

push @events, [ "cc0" ];
push @events, [ "cc2", aa("cc1a", "cc1b") ];
is_deeply \@events, [
	[ "cc0" ],
	[ "aa0", "cc1a", "cc1b" ],
	[ "aa1" ],
	[ "bb0" ],
	[ "cc2", [ "aa5", undef, "Illegal division by zero\n" ] ],
];

sub dd(@) {
	my $value = eval {
		push @events, [ "dd0", @_ ];
		establish_cleanup sub { push @events, [ "ee0", @_ ] };
		push @events, [ "dd1" ];
		my $v = do {
			push @events, [ "dd2" ];
			establish_cleanup sub { push @events, [ "ee1", @_ ] };
			push @events, [ "dd3" ];
			my $zero = 0;
			push @events, [ "dd4", $zero/$zero ];

t/via_die.t  view on Meta::CPAN

use warnings;
use strict;

use Test::More tests => 3;

BEGIN { use_ok "Scope::Cleanup", qw(establish_cleanup); }

my @events;

sub aa(@) {
	my $value = eval {
		push @events, [ "aa0", @_ ];
		establish_cleanup sub { push @events, [ "bb0", @_ ] };
		push @events, [ "aa1" ];
		die "aa2\n";
		push @events, [ "aa3" ];
		"aa4";
	};
	[ "aa5", $value, $@ ];
}

t/via_die.t  view on Meta::CPAN

push @events, [ "cc0" ];
push @events, [ "cc2", aa("cc1a", "cc1b") ];
is_deeply \@events, [
	[ "cc0" ],
	[ "aa0", "cc1a", "cc1b" ],
	[ "aa1" ],
	[ "bb0" ],
	[ "cc2", [ "aa5", undef, "aa2\n" ] ],
];

sub dd(@) {
	my $value = eval {
		push @events, [ "dd0", @_ ];
		establish_cleanup sub { push @events, [ "ee0", @_ ] };
		push @events, [ "dd1" ];
		my $v = do {
			push @events, [ "dd2" ];
			establish_cleanup sub { push @events, [ "ee1", @_ ] };
			push @events, [ "dd3" ];
			die "dd4\n";
			push @events, [ "dd5" ];

t/via_escape.t  view on Meta::CPAN

	}
	Scope::Escape->import(qw(current_escape_function));
}

use Test::More tests => 3;

BEGIN { use_ok "Scope::Cleanup", qw(establish_cleanup); }

my @events;

sub aa(@) {
	my $escape = current_escape_function;
	push @events, [ "aa0", @_ ];
	establish_cleanup sub { push @events, [ "bb0", @_ ] };
	push @events, [ "aa1" ];
	$escape->("aa2");
	push @events, [ "aa3" ];
	"aa4";
}

@events = ();
push @events, [ "cc0" ];
push @events, [ "cc2", aa("cc1a", "cc1b") ];
is_deeply \@events, [
	[ "cc0" ],
	[ "aa0", "cc1a", "cc1b" ],
	[ "aa1" ],
	[ "bb0" ],
	[ "cc2", "aa2" ],
];

sub dd(@) {
	my $escape = current_escape_function;
	push @events, [ "dd0", @_ ];
	establish_cleanup sub { push @events, [ "ee0", @_ ] };
	push @events, [ "dd1" ];
	my $v = do {
		push @events, [ "dd2" ];
		establish_cleanup sub { push @events, [ "ee1", @_ ] };
		push @events, [ "dd3" ];
		$escape->("dd4");
		push @events, [ "dd5" ];

t/via_exit.t  view on Meta::CPAN

use warnings;
use strict;

BEGIN { print "1..3\n"; }

use Scope::Cleanup qw(establish_cleanup);

establish_cleanup sub { print "ok 3\n" };
sub aa() {
	establish_cleanup sub { print "ok 2\n" };
	do {
		establish_cleanup sub { print "ok 1\n" };
		exit 0;
		print "not ok 1\n";
	};
	print "not ok 2\n";
}
aa();
print "not ok 3\n";

t/via_return.t  view on Meta::CPAN

use warnings;
use strict;

use Test::More tests => 3;

BEGIN { use_ok "Scope::Cleanup", qw(establish_cleanup); }

my @events;

sub aa(@) {
	push @events, [ "aa0", @_ ];
	establish_cleanup sub { push @events, [ "bb0", @_ ] };
	push @events, [ "aa1" ];
	return "aa2";
	push @events, [ "aa3" ];
	"aa4";
}

@events = ();
push @events, [ "cc0" ];
push @events, [ "cc2", aa("cc1a", "cc1b") ];
is_deeply \@events, [
	[ "cc0" ],
	[ "aa0", "cc1a", "cc1b" ],
	[ "aa1" ],
	[ "bb0" ],
	[ "cc2", "aa2" ],
];

sub dd(@) {
	push @events, [ "dd0", @_ ];
	establish_cleanup sub { push @events, [ "ee0", @_ ] };
	push @events, [ "dd1" ];
	my $v = do {
		push @events, [ "dd2" ];
		establish_cleanup sub { push @events, [ "ee1", @_ ] };
		push @events, [ "dd3" ];
		return "dd4";
		push @events, [ "dd5" ];
		"dd6";

t/via_sublocalret.t  view on Meta::CPAN

use warnings;
use strict;

use Test::More tests => 3;

BEGIN { use_ok "Scope::Cleanup", qw(establish_cleanup); }

my @events;

sub aa(@) {
	push @events, [ "aa0", @_ ];
	establish_cleanup sub { push @events, [ "bb0", @_ ] };
	push @events, [ "aa1" ];
	"aa2";
}

@events = ();
push @events, [ "cc0" ];
push @events, [ "cc2", aa("cc1a", "cc1b") ];
is_deeply \@events, [
	[ "cc0" ],
	[ "aa0", "cc1a", "cc1b" ],
	[ "aa1" ],
	[ "bb0" ],
	[ "cc2", "aa2" ],
];

sub dd(@) {
	push @events, [ "dd0", @_ ];
	establish_cleanup sub { push @events, [ "ee0", @_ ] };
	push @events, [ "dd1" ];
	my $v = do {
		push @events, [ "dd2" ];
		establish_cleanup sub { push @events, [ "ee1", @_ ] };
		push @events, [ "dd3" ];
		"dd4";
	};
	push @events, [ "dd5", $v ];



( run in 2.064 seconds using v1.01-cache-2.11-cpan-524268b4103 )