Squashed 'third_party/git/' content from commit cb71568594

git-subtree-dir: third_party/git
git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
This commit is contained in:
Vincent Ambo 2020-01-11 23:36:56 +00:00
commit 1b593e1ea4
3629 changed files with 1139935 additions and 0 deletions

View file

@ -0,0 +1,27 @@
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More 'no_plan';
use Git::SVN::Utils qw(
add_path_to_url
);
# A reference cannot be a hash key, so we use an array.
my @tests = (
["http://x.com", "bar"] => 'http://x.com/bar',
["http://x.com", ""] => 'http://x.com',
["http://x.com/foo/", undef] => 'http://x.com/foo/',
["http://x.com/foo/", "/bar/baz/"] => 'http://x.com/foo/bar/baz/',
["http://x.com", 'per%cent'] => 'http://x.com/per%25cent',
);
while(@tests) {
my($have, $want) = splice @tests, 0, 2;
my $args = join ", ", map { qq['$_'] } map { defined($_) ? $_ : 'undef' } @$have;
my $name = "add_path_to_url($args) eq $want";
is add_path_to_url(@$have), $want, $name;
}

11
t/Git-SVN/Utils/can_compress.t Executable file
View file

@ -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 };

View file

@ -0,0 +1,26 @@
#!/usr/bin/env perl
# Test our own home rolled URL canonicalizer. Test the private one
# directly because we can't predict what the SVN API is doing to do.
use strict;
use warnings;
use Test::More 'no_plan';
use Git::SVN::Utils;
my $canonicalize_url = \&Git::SVN::Utils::_canonicalize_url_ourselves;
my %tests = (
"http://x.com" => "http://x.com",
"http://x.com/" => "http://x.com",
"http://x.com/foo/bar" => "http://x.com/foo/bar",
"http://x.com//foo//bar//" => "http://x.com/foo/bar",
"http://x.com/ /%/" => "http://x.com/%20%20/%25",
);
for my $arg (keys %tests) {
my $want = $tests{$arg};
is $canonicalize_url->($arg), $want, "canonicalize_url('$arg') => $want";
}

View file

@ -0,0 +1,23 @@
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More 'no_plan';
use Git::SVN::Utils;
my $collapse_dotdot = \&Git::SVN::Utils::_collapse_dotdot;
my %tests = (
"foo/bar/baz" => "foo/bar/baz",
".." => "..",
"foo/.." => "",
"/foo/bar/../../baz" => "/baz",
"deeply/.././deeply/nested" => "./deeply/nested",
);
for my $arg (keys %tests) {
my $want = $tests{$arg};
is $collapse_dotdot->($arg), $want, "_collapse_dotdot('$arg') => $want";
}

34
t/Git-SVN/Utils/fatal.t Executable file
View file

@ -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;
}

32
t/Git-SVN/Utils/join_paths.t Executable file
View file

@ -0,0 +1,32 @@
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More 'no_plan';
use Git::SVN::Utils qw(
join_paths
);
# A reference cannot be a hash key, so we use an array.
my @tests = (
[] => '',
["/x.com", "bar"] => '/x.com/bar',
["x.com", ""] => 'x.com',
["/x.com/foo/", undef, "bar"] => '/x.com/foo/bar',
["x.com/foo/", "/bar/baz/"] => 'x.com/foo/bar/baz/',
["foo", "bar"] => 'foo/bar',
["/foo/bar", "baz", "/biff"] => '/foo/bar/baz/biff',
["", undef, "."] => '.',
[] => '',
);
while(@tests) {
my($have, $want) = splice @tests, 0, 2;
my $args = join ", ", map { qq['$_'] } map { defined($_) ? $_ : 'undef' } @$have;
my $name = "join_paths($args) eq '$want'";
is join_paths(@$have), $want, $name;
}