SVK
view release on metacpan or search on metacpan
t/23commit-inter-output.t view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
use SVK::Test;
plan tests => 26;
our $output;
our $answer;
our $show_prompt;
my ($xd, $svk) = build_test();
my ($copath, $corpath) = get_copath ('commit-inter-output');
my ($repospath, undef, $repos) = $xd->find_repos ('//', 1);
$svk->checkout ('//', $copath);
is_output_like ($svk, 'commit', [], qr'not a checkout path');
chdir ($copath);
mkdir ('A');
mkdir ('A/deep');
mkdir ('A/deep/la');
overwrite_file ("A/foo", "foobar\ngrab");
overwrite_file ("A/foox", "foo\nbar\n");
overwrite_file ("A/bar", "foobar\n");
overwrite_file ("A/deep/baz", "foobar");
overwrite_file ("A/deep/la/no", "foobar");
overwrite_file ("A/deep/mas", "po");
overwrite_file ("A/aj", "foobar");
overwrite_file ("A/ow", "foobar");
is_output ($svk, 'commit', ['--interactive'], ['No targets to commit.'], 'commit - no target');
$answer = [('a') x 11];
$svk->add ('A');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
['Committed revision 1.'], 'initial commit');
overwrite_file ("A/foo", "alfa\nbeta\nfoobar\ngamma\ndelta");
$svk->propset('one', "multi\nline", 'A/foo');
$svk->propset('two', "", 'A/foo');
overwrite_file ("A/foox", "pies\nfoo\nkot");
$svk->propset('three', "multi\nline\n", 'A/foox');
overwrite_file ("A/bar", "alfa\nfoobar\nbeta");
overwrite_file ("A/deep/baz", "");
$svk->propset('four', "max", 'A/deep/baz');
$svk->propset('five', "min", 'A/deep/baz');
overwrite_file ("A/deep/la/no", "\n");
$svk->propset('six', "re\n", 'A/deep/la/no');
overwrite_file ("A/deep/mas", "ten");
$svk->propset('seven', "wol", 'A/aj');
$svk->propset('eight', "wer", 'A/aj');
$svk->propset('nine', "owy", 'A/ow');
$answer = [('a') x 18];
#our $DEBUG = 1;
$show_prompt = 1; #Begin interactive mode.
is_output ($svk, 'commit', ['--interactive', '-m', 'foo2'],
['Property change on A/aj',
'___________________________________________________________________',
'Name: eight',
' +wer',
'',
'[1/18] Property change on \'A/aj\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name > ',
'Property change on A/aj',
'___________________________________________________________________',
'Name: seven',
' +wol',
'',
'[2/18] Property change on \'A/aj\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
"--- A/bar\t(revision 1)",
"+++ A/bar\t(local)",
'@@ -0 +0 @@',
'+alfa',
' foobar',
'',
'[3/18] Modification to \'A/bar\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file,',
'move to [p]revious change > ',
"--- A/bar\t(revision 1)",
"+++ A/bar\t(local)",
'@@ -0 +1 @@',
' foobar',
'+beta',
'\ No newline at end of file',
'',
'[4/18] Modification to \'A/bar\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file,',
'move to [p]revious change > ',
"--- A/deep/baz\t(revision 1)",
"+++ A/deep/baz\t(local)",
'@@ -0 +0 @@',
'-foobar',
'\ No newline at end of file',
'',
'[5/18] Modification to \'A/deep/baz\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file,',
'a[c]cept, s[k]ip rest of changes to this file and its properties,',
'move to [p]revious change > ',
'Property change on A/deep/baz',
'___________________________________________________________________',
'Name: five',
' +min',
t/23commit-inter-output.t view on Meta::CPAN
'[13/18] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
'Property change on A/foo',
'___________________________________________________________________',
'Name: two',
' ',
'[14/18] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
"--- A/foox\t(revision 1)",
"+++ A/foox\t(local)",
'@@ -0,1 +0,1 @@',
'+pies',
' foo',
' bar',
'',
'[15/18] Modification to \'A/foox\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file,',
'a[c]cept, s[k]ip rest of changes to this file and its properties,',
'move to [p]revious change > ',
"--- A/foox\t(revision 1)",
"+++ A/foox\t(local)",
'@@ -0,1 +1,1 @@',
' foo',
'-bar',
'+kot',
'\ No newline at end of file',
'',
'[16/18] Modification to \'A/foox\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file,',
'a[c]cept, s[k]ip rest of changes to this file and its properties,',
'move to [p]revious change > ',
'Property change on A/foox',
'___________________________________________________________________',
'Name: three',
' +multi',
' +line',
'',
'[17/18] Property change on \'A/foox\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
'Property change on A/ow',
'___________________________________________________________________',
'Name: nine',
' +owy',
'',
'[18/18] Property change on \'A/ow\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
'Committed revision 2.'],
'file modifications - output');
$svk->rm("A/deep/la");
$svk->propset('one', "multi\nline", 'A/deep');
$svk->rm("A/foox");
$svk->mkdir('A/deep/tra');
$svk->propset('one', "multi\nline", 'A/deep/tra');
$svk->propset('two', "", 'A/deep/tra');
$svk->mkdir('A/deep/tra/bant');
$svk->propset('one', "multi\nline", 'A/deep/tra/bant');
$svk->mkdir('A/deep/tra/per');
$answer = [('a') x 9];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo2'],
['',
'[1/9] File or directory \'A/deep/la\' is marked for deletion:',
'[a]ccept, [s]kip this change > ',
'',
'[2/9] Directory \'A/deep/tra\' is marked for addition:',
'[a]ccept, [s]kip this change,',
'[A]ccept changes to whole subdirectory,',
'move to [p]revious change > ',
'',
'[3/9] Directory \'A/deep/tra/bant\' is marked for addition:',
'[a]ccept, [s]kip this change,',
'move to [p]revious change > ',
'Property change on A/deep/tra/bant',
'___________________________________________________________________',
'Name: one',
' +multi',
' +line',
'',
'[4/9] Property change on \'A/deep/tra/bant\' directory requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
'',
'[5/9] Directory \'A/deep/tra/per\' is marked for addition:',
'[a]ccept, [s]kip this change,',
'move to [p]revious change > ',
'Property change on A/deep/tra',
'___________________________________________________________________',
'Name: one',
' +multi',
' +line',
'',
'[6/9] Property change on \'A/deep/tra\' directory requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
'Property change on A/deep/tra',
'___________________________________________________________________',
'Name: two',
' ',
'[7/9] Property change on \'A/deep/tra\' directory requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
'Property change on A/deep',
'___________________________________________________________________',
'Name: one',
' +multi',
' +line',
'',
'[8/9] Property change on \'A/deep\' directory requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name,',
'move to [p]revious change > ',
'',
'[9/9] File or directory \'A/foox\' is marked for deletion:',
t/23commit-inter-output.t view on Meta::CPAN
["--- A/foo\t(revision 7)",
"+++ A/foo\t(local)",
'@@ -0 +0 @@',
'-foobar',
'\ No newline at end of file',
'+foobar',
'',
'[1/1] Modification to \'A/foo\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file > ',
'Committed revision 8.'],
'File diff - no nl at end -> nl at end');
$answer = ['a'];
overwrite_file ("A/foo", "bar\n");
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
["--- A/foo\t(revision 8)",
"+++ A/foo\t(local)",
'@@ -0 +0 @@',
'-foobar',
'+bar',
'',
'[1/1] Modification to \'A/foo\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file > ',
'Committed revision 9.'],
'File diff - nl at end -> nl at end');
$answer = ['a'];
overwrite_file ("A/foo", "rabarbar");
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
["--- A/foo\t(revision 9)",
"+++ A/foo\t(local)",
'@@ -0 +0 @@',
'-bar',
'+rabarbar',
'\ No newline at end of file',
'',
'[1/1] Modification to \'A/foo\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file > ',
'Committed revision 10.'],
'File diff - nl at end -> no nl at end');
$answer = ['a'];
$svk->propdel('one', 'A/foo');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
['Property change on A/foo',
'___________________________________________________________________',
'Name: one',
' -multi',
' -line',
'',
'[1/1] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name > ',
'Committed revision 11.'],
'Prop del - no nl at end');
$answer = ['a'];
$svk->propset('one', 'zenum\n', 'A/foo');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
['Property change on A/foo',
'___________________________________________________________________',
'Name: one',
' +zenum\n',
'',
'[1/1] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name > ',
'Committed revision 12.'],
'Prop set - empty -> nl at end');
$answer = ['a'];
$svk->propdel('one', 'A/foo');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
['Property change on A/foo',
'___________________________________________________________________',
'Name: one',
' -zenum\n',
'',
'[1/1] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name > ',
'Committed revision 13.'],
'Prop del - nl at end');
$svk->propset('one', "por\n", 'A/foo');
$svk->commit('-m', 'baz');
$answer = ['a'];
$svk->propset('one', "rapaport", 'A/foo');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
['Property change on A/foo',
'___________________________________________________________________',
'Name: one',
' -por',
' +rapaport',
'',
'[1/1] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name > ',
'Committed revision 15.'],
'Prop set - nl at end -> no nl at end');
$answer = ['a'];
$svk->propset('one', "mar\n", 'A/foo');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
['Property change on A/foo',
'___________________________________________________________________',
'Name: one',
' -rapaport',
' +mar',
'',
'[1/1] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name > ',
'Committed revision 16.'],
'Prop set - no nl at end -> nl at end');
SKIP: {
overwrite_file ("A/foo", "0");
$svk->commit("-m", "foo");
$svk->cat("A/foo");
skip('broken SVN::Stream', 2) if $output ne '0';
overwrite_file ("A/foo", "content\n");
$answer = ['a'];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
["--- A/foo\t(revision 17)",
"+++ A/foo\t(local)",
'@@ -0 +0 @@',
'-0',
'\ No newline at end of file',
'+content',
'',
'[1/1] Modification to \'A/foo\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file > ',
'Committed revision 18.'],
'File diff - change from "0"');
overwrite_file ("A/foo", "0");
$answer = ['a'];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
["--- A/foo\t(revision 18)",
"+++ A/foo\t(local)",
'@@ -0 +0 @@',
'-content',
'+0',
'\ No newline at end of file',
'',
'[1/1] Modification to \'A/foo\' file:',
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file > ',
'Committed revision 19.'],
'File diff - change to "0"');
}
$svk->propset('one', "0", 'A/foo');
$answer = ['a'];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
['Property change on A/foo',
'___________________________________________________________________',
'Name: one',
' -mar',
' +0',
'',
'[1/1] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name > ',
'Committed revision 20.'],
'Prop diff - change to "0"');
$svk->propset('one', "data", 'A/foo');
$answer = ['a'];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
['Property change on A/foo',
'___________________________________________________________________',
'Name: one',
' -0',
' +data',
'',
'[1/1] Property change on \'A/foo\' file requested:',
'[a]ccept, [s]kip this change,',
'a[c]cept, s[k]ip changes to all properties with that name > ',
'Committed revision 21.'],
'Prop diff - change from "0"');
# test for bug where svn:keywords or svn:eol-style could make svk revert
# skipped changes
is_output($svk, propset => ['svn:keywords', 'Id', 'A/bar'],
[__(' M A/bar')]);
overwrite_file("A/bar", "\$Id\$\nalfa\nfoobar\nbeta\n");
is_output($svk, commit => ['-m', 'set keywords', 'A/bar'], ['Committed revision 22.']);
overwrite_file("A/bar", "\$Id\$\nalfa\nskip this insert\nfoobar\naccept this insert\nbeta\n");
is_output($svk, diff => ['A/bar'],
[__('=== A/bar'),
'==================================================================',
__("--- A/bar\t(revision 22)"),
__("+++ A/bar\t(local)"),
'@@ -1,4 +1,6 @@',
' $Id$',
' alfa',
'+skip this insert',
' foobar',
'+accept this insert',
' beta',
]);
$answer = ['s', 'a'];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
["--- A/bar\t(revision 22)",
"+++ A/bar\t(local)",
'@@ -0,3 +0,3 @@',
' $Id$',
' alfa',
'+skip this insert',
' foobar',
' beta',
'',
"[1/2] Modification to 'A/bar' file:",
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file > ',
"--- A/bar\t(revision 22)",
"+++ A/bar\t(local)",
'@@ -0,3 +1,3 @@',
' $Id$',
' alfa',
' foobar',
'+accept this insert',
' beta',
'',
"[2/2] Modification to 'A/bar' file:",
'[a]ccept, [s]kip this change,',
'[A]ccept, [S]kip the rest of changes to this file,',
'move to [p]revious change > ',
'Committed revision 23.',
]);
is_output($svk, diff => ['A/bar'],
[__('=== A/bar'),
'==================================================================',
__("--- A/bar\t(revision 23)"),
__("+++ A/bar\t(local)"),
'@@ -1,5 +1,6 @@',
' $Id$',
' alfa',
( run in 1.000 second using v1.01-cache-2.11-cpan-71847e10f99 )