1 package DBICTest::Util;
10 our @EXPORT_OK = qw/local_umask stacktrace/;
13 return unless defined $Config{d_umask};
15 die 'Calling local_umask() in void context makes no sense'
16 if ! defined wantarray;
18 my $old_umask = umask(shift());
19 die "Setting umask failed: $!" unless defined $old_umask;
21 return bless \$old_umask, 'DBICTest::Util::UmaskGuard';
24 package DBICTest::Util::UmaskGuard;
27 eval { defined (umask ${$_[0]}) or die };
28 warn ( "Unable to reset old umask ${$_[0]}: " . ($!||'Unknown error') )
39 while (@frame = caller($frame++)) {
40 push @stack, [@frame[3,1,2]];
43 return undef unless @stack;
46 return join "\tinvoked as ", map { sprintf ("%s at %s line %d\n", @$_ ) } @stack;