SVK
view release on metacpan or search on metacpan
#!/usr/bin/perl -w
use Test::More tests => 36;
use strict;
use SVK::Test;
our $output;
my ($xd, $svk) = build_test();
my ($copath, $corpath) = get_copath ('diff');
my ($repospath, undef, $repos) = $xd->find_repos ('//', 1);
$svk->checkout ('//', $copath);
is_output_like ($svk, 'diff', [], qr'not a checkout path');
chdir ($copath);
mkdir ('A');
overwrite_file ("A/foo", "foobar\nfnord\n");
overwrite_file ("A/bar", "foobar\n");
overwrite_file ("A/nor", "foobar\n");
$svk->add ('A');
$svk->commit ('-m', 'init');
overwrite_file ("A/binary", "foobar\nfnord\n");
$svk->add ('A/binary');
$svk->propset ('svn:mime-type', 'image/png', 'A/binary');
is_output ($svk, 'diff', ['//asdf-non'],
['Revision required.']);
is_output ($svk, 'diff', ['//asdf-non', 'A/binary'],
['path //asdf-non does not exist.']);
is_output ($svk, 'diff', ['A/binary', '//asdf-non'],
['Invalid arguments.']);
is_output ($svk, 'diff', ['//asdf-non', '//'],
['path //asdf-non does not exist.']);
is_output ($svk, 'diff', [],
['=== A/binary',
'==================================================================',
'Cannot display: file marked as a binary type.',
'',
'Property changes on: A/binary',
'___________________________________________________________________',
'Name: svn:mime-type',
' +image/png',
'']);
overwrite_file ("A/foo", "foobar\nnewline\nfnord\n");
overwrite_file ("A/bar", "foobar\nnewline\n");
overwrite_file ("A/baz", "foobar\n");
$svk->add ('A/baz');
$svk->rm ('A/nor');
$svk->commit ('-m', 'some modification');
overwrite_file ("A/foo", "foobar\nnewline\nfnord\nmorenewline\n");
is_output ($svk, 'diff', [],
['=== A/foo',
'==================================================================',
"--- A/foo\t(revision 2)",
"+++ A/foo\t(local)",
'@@ -1,3 +1,4 @@',
' foobar',
' newline',
' fnord',
'+morenewline',], 'diff - checkout dir');
is_output ($svk, 'diff', ['A/foo'],
[__('=== A/foo'),
'==================================================================',
__("--- A/foo\t(revision 2)"),
__("+++ A/foo\t(local)"),
'@@ -1,3 +1,4 @@',
' foobar',
' newline',
' fnord',
'+morenewline'], 'diff - checkout file');
my $r12output = ['=== A/foo',
'==================================================================',
"--- A/foo\t(revision 1)",
"+++ A/foo\t(revision 2)",
'@@ -1,2 +1,3 @@',
' foobar',
'+newline',
' fnord',
'=== A/bar',
'==================================================================',
"--- A/bar\t(revision 1)",
"+++ A/bar\t(revision 2)",
'@@ -1 +1,2 @@',
' foobar',
is_output ($svk, 'diff', ['A/foo', 'A/bar'],
[__('=== A/foo'),
'==================================================================',
__("--- A/foo\t(revision 1)"),
__("+++ A/foo\t(local)"),
'@@ -1,2 +1,3 @@',
' foobar',
' fnord',
'+mixed',
__('=== A/bar'),
'==================================================================',
__("--- A/bar\t(revision 2)"),
__("+++ A/bar\t(local)"),
'@@ -1,2 +1,3 @@',
' foobar',
' newline',
'+mixed']);
$svk->revert ('-R', 'A');
unlink ('A/coonly');
$svk->update ;
$svk->rm ('A');
is_sorted_output ($svk, 'diff', [],
["=== A\t(deleted directory)",
'==================================================================',
'=== A/foo',
'==================================================================',
"--- A/foo\t(revision 3)",
"+++ A/foo\t(local)",
'@@ -1,3 +0,0 @@',
'-foobar',
'-newline',
'-fnord',
'=== A/bar',
'==================================================================',
"--- A/bar\t(revision 3)",
"+++ A/bar\t(local)",
'@@ -1,2 +0,0 @@',
'-foobar',
'-newline',
'=== A/binary',
'==================================================================',
'Cannot display: file marked as a binary type.',
'',
'Property changes on: A/binary',
'___________________________________________________________________',
'Name: svn:mime-type',
' -image/png',
'',
'=== A/baz',
'==================================================================',
"--- A/baz\t(revision 3)",
"+++ A/baz\t(local)",
'@@ -1 +0,0 @@',
'-foobar'], 'recursive delete_entry');
$svk->revert ('-R', 'A');
$svk->update;
$svk->propset ('svn:mime-type', 'image/jpg', 'A/binary');
is_output ($svk, 'diff', [],
['',
'Property changes on: A/binary',
'___________________________________________________________________',
'Name: svn:mime-type',
' -image/png',
' +image/jpg',
'']);
$svk->commit('-m', 'Property changes for A/binary.');
is_output ($svk, 'diff', ['-r4:3'],
['',
'Property changes on: A/binary',
'___________________________________________________________________',
'Name: svn:mime-type',
' -image/jpg',
' +image/png',
'']);
is_output ($svk, 'diff', ['-c-4'],
['',
'Property changes on: A/binary',
'___________________________________________________________________',
'Name: svn:mime-type',
' -image/jpg',
' +image/png',
'']);
# test with expanding copies
$svk->cp ('-m', 'blah', '//B', '//A/B-cp');
$svk->cp ('//A', 'C');
append_file ("C/foo", "copied and modified on C\n");
TODO: {
local $TODO = 'path sep issues on win32' if IS_WIN32;
is_output($svk, 'diff', ['C'],
[__("=== C\t(new directory; copied from ").'/A@5)',
'==================================================================',
__("=== C/foo\t(copied from ").'/A/foo@5)',
'==================================================================',
__("--- C/foo\t(revision 4)"),
__("+++ C/foo\t(local)"),
'@@ -1,3 +1,4 @@',
' foobar',
' newline',
' fnord',
'+copied and modified on C',
]);
is_output ($svk, 'diff', [-X => 'C'],
["=== C\t(new directory)",
'==================================================================',
__("=== C/B-cp\t(new directory)"),
'==================================================================',
__('=== C/B-cp/bar'),
'==================================================================',
__("--- C/B-cp/bar\t(revision 4)"),
__("+++ C/B-cp/bar\t(local)"),
'@@ -0,0 +1 @@',
'+foobar',
__('=== C/B-cp/foo'),
'==================================================================',
__("--- C/B-cp/foo\t(revision 4)"),
__("+++ C/B-cp/foo\t(local)"),
( run in 0.888 second using v1.01-cache-2.11-cpan-71847e10f99 )