[svk-commit] r2916 - trunk/t

nobody at bestpractical.com nobody at bestpractical.com
Thu Jun 12 03:00:24 EDT 2008


Author: clsung
Date: Thu Jun 12 03:00:23 2008
New Revision: 2916

Added:
   trunk/t/uri-escape-dav-move.t

Log:
- failing test for moving files/dirs containing " " (space)
  - http://rt.cpan.org/Ticket/Display.html?id=28087

Added: trunk/t/uri-escape-dav-move.t
==============================================================================
--- (empty file)
+++ trunk/t/uri-escape-dav-move.t	Thu Jun 12 03:00:23 2008
@@ -0,0 +1,140 @@
+#!/usr/bin/perl -w
+use strict;
+# XXX: apache::test seems to alter inc to use blib
+require SVK::Command::Merge;
+use POSIX qw(setlocale LC_CTYPE);
+
+
+# XXX: apache::TestConfig assumes lib.pm is compiled.
+require lib;
+
+use SVK::Util qw(can_run uri_escape $EOL);
+
+BEGIN {
+use SVK::Test;
+    plan (skip_all => "Test does not run under root") if $> == 0;
+    eval { require Apache2 };
+    eval { require Apache::Test;
+	   $Apache::Test::VERSION >= 1.18 }
+	or plan (skip_all => "Apache::Test 1.18 required for testing dav");
+}
+setlocale (LC_CTYPE, $ENV{LC_CTYPE} = 'en_US.UTF-8')
+    or plan skip_all => 'cannot set locale to en_US.UTF-8';
+
+use Apache::TestConfig;
+use File::Spec::Functions qw(rel2abs catdir catfile);
+
+our $output;
+
+my ($xd, $svk) = build_test('test');
+
+my $depotpath = '/test/';
+my $pool = SVN::Pool->new_default;
+my ($depot, $path) = $xd->find_depotpath($depotpath);
+{
+    local $/ = $EOL;
+    my $edit = get_editor ($depot->repospath, $path, $depot->repos);
+    $edit->open_root ();
+
+    $edit->add_directory ('/B and K');
+    $edit->add_directory ('/B and K/A');
+    $edit->add_directory ('/B and K/A/N P1');
+    $edit->add_directory ('/B and K/A/N P1/trunk');
+    $edit->add_directory ('/B and K/A/N P1/trunk/doc');
+    $edit->modify_file (
+	$edit->add_file ('/B and K/A/N P1/trunk/doc/ReadMe.txt'),
+			"first line in pe$/2nd line in pe$/");
+    $edit->add_directory ('/B and K/A/N P1/trunk/src');
+    $edit->add_directory ('/B and K/A/N P1/trunk/data');
+    $edit->modify_file (
+	$edit->add_file ('/B and K/A/N P1/trunk/data/N M/HOWTO.txt'),
+			"first line in pe$/2nd line in pe$/");
+    $edit->add_directory ('/B and K/A/N P1/branches');
+    $edit->add_directory ('/B and K/A/N P1/tags');
+    $edit->close_edit ();
+}
+my ($srepospath, $spath, $srepos) = $xd->find_repos ('/test/B and K', 1);
+my (undef, undef, $repos) = $xd->find_repos ('//', 1);
+
+my $apache_root = rel2abs (catdir ('t', 'apache_svn'));
+my $apxs = $ENV{APXS} || can_run('apxs2') || can_run ('apxs');
+plan skip_all => "Can't find apxs utility. Use APXS env to specify path" unless $apxs;
+
+my $cfg = Apache::TestConfig->new
+    ( top_dir => $apache_root,
+      t_dir => $apache_root,
+      apxs => $apxs,
+ )->httpd_config;
+
+plan skip_all => "apache 2.2 changed auth directives."
+    if $cfg->server->{version} =~ m|Apache/2\.2|;
+
+unless ($cfg->can('find_and_load_module') and
+	$cfg->find_and_load_module ('mod_dav.so') and
+	$cfg->find_and_load_module ('mod_dav_svn.so') and
+        $cfg->find_and_load_module ('mod_authz_svn.so')) {
+    plan skip_all => "Can't find mod_dav_svn and mod_authz_svn";
+}
+
+plan tests => 5;
+
+$cfg->postamble (Location => "/svn",
+		 qq{DAV svn\n    SVNPath $depot->{repospath}\n});
+$cfg->generate_httpd_conf;
+my $server = $cfg->server;
+
+$server->start;
+ok ($server->ping, 'server is alive');
+
+my $uri = 'http://'.$server->{name}.'/svn';
+my $uri_trunk = $uri.'/B and K/A/N P1/trunk';
+my $uri_trunk_escape = uri_escape($uri_trunk);
+
+$svk->mirror('//mirror/BK', $uri_trunk);
+
+is_output ($svk, 'mirror', ['--list'], [
+    "Path          Source",
+    "============================================================",
+    "//mirror/BK   $uri/B and K/A/N P1/trunk"]);
+
+is_output ($svk, 'sync', ['//mirror/BK'], [
+    "Syncing $uri/B and K/A/N P1/trunk",
+    "Retrieving log information from 1 to 1",
+    "Committed revision 2 from revision 1."]);
+
+$svk->copy ('-p', '-m', 'branch', '//mirror/BK', '//local/BK');
+
+my ($copath, $corpath) = get_copath ('uri-smerge');
+my ($scopath, $scorpath) = get_copath ('uri-smerge-source');
+
+$svk->checkout ('//local/BK', $copath);
+
+chdir($copath);
+#ref => #28087 on rt.cpan.org
+$svk->move("data/N M/HOWTO.txt", "data/N M/good.txt");
+$svk->commit ('-m', 'commit on local branch');
+
+$svk->sync ('//mirror/BK');
+
+is_output ($svk, 'push', ['-C'],
+    ['Auto-merging (0, 4) /local/BK to /mirror/BK (base /mirror/BK:2).',
+     '===> Auto-merging (0, 3) /local/BK to /mirror/BK (base /mirror/BK:2).',
+     'Empty merge.',
+     '===> Auto-merging (3, 4) /local/BK to /mirror/BK (base /mirror/BK:2).',
+     'A + data/N M/good.txt',
+     'D   data/N M/HOWTO.txt',
+     qr'New merge ticket: .*:/local/BK:4']);
+is_output ($svk, 'push', [''],
+    ['Auto-merging (0, 4) /local/BK to /mirror/BK (base /mirror/BK:2).',
+     '===> Auto-merging (0, 3) /local/BK to /mirror/BK (base /mirror/BK:2).',
+     qr'Merging back to mirror source http://[^/]+/svn/B and K/A/N P1/trunk.',
+     'Empty merge.',
+     '===> Auto-merging (3, 4) /local/BK to /mirror/BK (base /mirror/BK:2).',
+     qr'Merging back to mirror source http://[^/]+/svn/B and K/A/N P1/trunk.',
+     'A + data/N M/good.txt',
+     'D   data/N M/HOWTO.txt',
+     qr'New merge ticket: .*:/local/BK:4',
+     'Merge back committed as revision 3.',
+     qr'Syncing http://[^/]+/svn/B and K/A/N P1/trunk',
+     'Retrieving log information from 3 to 3',
+     'Committed revision 6 from revision 3.']);


More information about the svk-commit mailing list