-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Extract some utilities from git-svn to allow extracting Git::SVN.
Put them in a new module called Git::SVN::Utils. Yeah, not terribly original and it will be a dumping ground. But its better than having them in the main git-svn program. At least they can be documented and tested. * fatal() is used by many classes. * Change the $can_compress lexical into a function. This should be enough to extract Git::SVN. Signed-off-by: Michael G. Schwern <schwern@pobox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Eric Wong <normalperson@yhbt.net>
- Loading branch information
Michael G. Schwern
authored and
Eric Wong
committed
Jul 27, 2012
1 parent
ee9be06
commit c2768fa
Showing
6 changed files
with
132 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
package Git::SVN::Utils; | ||
|
||
use strict; | ||
use warnings; | ||
|
||
use base qw(Exporter); | ||
|
||
our @EXPORT_OK = qw(fatal can_compress); | ||
|
||
|
||
=head1 NAME | ||
Git::SVN::Utils - utility functions used across Git::SVN | ||
=head1 SYNOPSIS | ||
use Git::SVN::Utils qw(functions to import); | ||
=head1 DESCRIPTION | ||
This module contains functions which are useful across many different | ||
parts of Git::SVN. Mostly it's a place to put utility functions | ||
rather than duplicate the code or have classes grabbing at other | ||
classes. | ||
=head1 FUNCTIONS | ||
All functions can be imported only on request. | ||
=head3 fatal | ||
fatal(@message); | ||
Display a message and exit with a fatal error code. | ||
=cut | ||
|
||
# Note: not certain why this is in use instead of die. Probably because | ||
# the exit code of die is 255? Doesn't appear to be used consistently. | ||
sub fatal (@) { print STDERR "@_\n"; exit 1 } | ||
|
||
|
||
=head3 can_compress | ||
my $can_compress = can_compress; | ||
Returns true if Compress::Zlib is available, false otherwise. | ||
=cut | ||
|
||
my $can_compress; | ||
sub can_compress { | ||
return $can_compress if defined $can_compress; | ||
|
||
return $can_compress = eval { require Compress::Zlib; }; | ||
} | ||
|
||
|
||
1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#!/usr/bin/env perl | ||
|
||
use strict; | ||
use warnings; | ||
|
||
use Test::More tests => 1; | ||
|
||
require_ok 'Git::SVN::Utils'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#!/usr/bin/perl | ||
|
||
use strict; | ||
use warnings; | ||
|
||
use Test::More 'no_plan'; | ||
|
||
use Git::SVN::Utils qw(can_compress); | ||
|
||
# !! is the "convert this to boolean" operator. | ||
is !!can_compress(), !!eval { require Compress::Zlib }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |