1 package DBICTest::Util;
9 our @EXPORT_OK = qw/local_umask stacktrace/;
12 return unless defined $Config{d_umask};
14 die 'Calling local_umask() in void context makes no sense'
15 if ! defined wantarray;
17 my $old_umask = umask(shift());
18 die "Setting umask failed: $!" unless defined $old_umask;
20 return bless \$old_umask, 'DBICTest::Util::UmaskGuard';
23 package DBICTest::Util::UmaskGuard;
26 eval { defined (umask ${$_[0]}) or die };
27 warn ( "Unable to reset old umask ${$_[0]}: " . ($!||'Unknown error') )
37 while (@frame = caller($frame++)) {
38 push @stack, [@frame[3,1,2]];
41 return undef unless @stack;
44 return join "\tinvoked as ", map { sprintf ("%s at %s line %d\n", @$_ ) } @stack;