|  | #!/usr/bin/perl | 
|  |  | 
|  | use strict; | 
|  | use warnings; | 
|  |  | 
|  | use Test::More 'no_plan'; | 
|  |  | 
|  | BEGIN { | 
|  | # Override exit at BEGIN time before Git::SVN::Utils is loaded | 
|  | # so it will see our local exit later. | 
|  | *CORE::GLOBAL::exit = sub(;$) { | 
|  | return @_ ? CORE::exit($_[0]) : CORE::exit(); | 
|  | }; | 
|  | } | 
|  |  | 
|  | use Git::SVN::Utils qw(fatal); | 
|  |  | 
|  | # fatal() | 
|  | { | 
|  | # Capture the exit code and prevent exit. | 
|  | my $exit_status; | 
|  | no warnings 'redefine'; | 
|  | local *CORE::GLOBAL::exit = sub { $exit_status = $_[0] || 0 }; | 
|  |  | 
|  | # Trap fatal's message to STDERR | 
|  | my $stderr; | 
|  | close STDERR; | 
|  | ok open STDERR, ">", \$stderr; | 
|  |  | 
|  | fatal "Some", "Stuff", "Happened"; | 
|  |  | 
|  | is $stderr, "Some Stuff Happened\n"; | 
|  | is $exit_status, 1; | 
|  | } |