Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/bindings/swig/perl/native/t/6ra.t view on Meta::CPAN
# TEST
is($props->{'dir-prop'}, 'frob', 'get_dir: property dir-prop');
}
# get_file
{
my ($revnum, $props) = $ra->get_file('trunk/filea',
$SVN::Core::INVALID_REVNUM, undef);
# TEST
is($revnum, $ra->get_latest_revnum, 'get_file: revnum');
# TEST
isa_ok($props, 'HASH', 'get_file: props');
# TEST
ok(!exists $props->{'test-prop'}, 'get_file: property test-prop deleted');
# TEST
is($props->{'binary-prop'}, $BINARY_DATA, 'get_file: property binary-prop');
}
# Revision properties
# TEST
isa_ok($ra->rev_proplist(1), 'HASH', 'rev_proplist: object');
# TEST
is($ra->rev_prop(1, 'nonexistent'), undef, 'rev_prop: nonexistent');
# TEST
like($ra->rev_prop(1, 'svn:date'), qr/^\d+-\d+-\d+T\d+:\d+:\d+\.\d+Z$/,
'rev_prop: svn:date');
# To create a revision property is a bit more difficult, because we have
# to set up a 'pre-revprop-change' hook script. These tests are skipped
# on systems on which I don't know how to do that.
SKIP: {
skip "don't know how to create 'pre-revprop-change' hook script on $^O", 3
if $^O eq 'MSWin32';
my $script_filename = "$repospath/hooks/pre-revprop-change";
open my $script, '>', $script_filename
or die "error creating hook script '$script_filename': $!";
print $script "#!/bin/sh\nexit 0\n";
close $script;
chmod 0755, $script_filename
or die "error making hook script '$script_filename' executable: $!";
$ra->change_rev_prop(1, 'test-prop', 'foo');
# TEST
is($ra->rev_prop(1, 'test-prop'), 'foo', 'change_rev_prop');
$ra->change_rev_prop(1, 'test-prop', undef);
# TEST
is($ra->rev_prop(1, 'test-prop'), undef, 'change_rev_prop: deleted');
$ra->change_rev_prop(1, 'binary-prop', $BINARY_DATA);
# TEST
is($ra->rev_prop(1, 'binary-prop'), $BINARY_DATA,
'change_rev_prop with binary data');
}
# Information about nodes in the filesystem.
# TEST
is($ra->check_path('trunk', 1), $SVN::Node::dir, 'check_path');
{
my $dirent = $ra->stat('trunk', 1);
# TEST
isa_ok($dirent, '_p_svn_dirent_t', 'stat dir: dirent object');
# TEST
is($dirent->kind, $SVN::Node::dir, 'stat dir: kind');
# TEST
is($dirent->size, -1, 'stat dir: size');
# TEST
is($dirent->created_rev, 1, 'stat dir: created_rev');
# TEST
ok($dirent->has_props, 'stat dir: has_props');
$dirent = $ra->stat('trunk/fileb', 1);
# TEST
is($dirent->kind, $SVN::Node::file, 'stat file: kind');
# TEST
ok(!$dirent->has_props, 'stat file: has_props');
}
# do_update
my $ed = MockEditor->new;
my $reporter = $ra->do_update(2, '', 1, $ed);
# TEST
isa_ok($reporter, 'SVN::Ra::Reporter');
$reporter->set_path('', 0, 1, undef);
$reporter->finish_report;
# TEST
is($ed->{_base_revnum}, 0, 'do_update: base_revision');
# TEST
is($ed->{_target_revnum}, 2, 'do_update: target_revnum');
# TEST
is($ed->{trunk}{props}{'dir-prop'}, 'frob', 'do_update: dir-prop');
# TEST
ok(!exists $ed->{'trunk/filea'}{props}{'test-prop'},
'do_update: deleted property');
# TEST
is($ed->{'trunk/filea'}{props}{'binary-prop'}, $BINARY_DATA,
'do_update: binary-prop');
# replay
$ed = MockEditor->new;
$ra->replay(1, 0, 1, $ed);
# TEST
is($ed->{trunk}{type}, 'dir', "replay: got trunk");
# TEST
is($ed->{trunk}{props}{'dir-prop'}, 'frob', 'replay: dir-prop');
# TEST
is($ed->{'trunk/filea'}{props}{'binary-prop'}, $BINARY_DATA,
'replay: binary-prop');
END {
diag "cleanup";
rmtree($repospath);
}
package MockEditor;
sub new { bless {}, shift }
sub set_target_revision {
my ($self, $revnum) = @_;
$self->{_target_revnum} = $revnum;
}
sub delete_entry {
my ($self, $path) = @_;
die "delete_entry called";
}
sub add_directory {
my ($self, $path, $baton) = @_;
( run in 0.785 second using v1.01-cache-2.11-cpan-39bf76dae61 )