]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/Git-SVN/Utils/fatal.t
Extract some utilities from git-svn to allow extracting Git::SVN.
[thirdparty/git.git] / t / Git-SVN / Utils / fatal.t
diff --git a/t/Git-SVN/Utils/fatal.t b/t/Git-SVN/Utils/fatal.t
new file mode 100644 (file)
index 0000000..49e1438
--- /dev/null
@@ -0,0 +1,34 @@
+#!/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;
+}