#!/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; | |
} |