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