The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;
use SVK::Test;
plan tests => 53;

our $output;
our $answer;
my ($xd, $svk) = build_test();
my ($copath, $corpath) = get_copath ('commit-inter-navi');
my ($repospath, undef, $repos) = $xd->find_repos ('//', 1);

$svk->checkout ('//', $copath);
chdir ($copath);
mkdir ('A');
mkdir ('A/deep');
mkdir ('A/deep/la');
overwrite_file_raw ("A/foo", "foobar\ngrab\n");
overwrite_file_raw ("A/deep/baz", "makar");
overwrite_file_raw ("A/deep/la/no", "foobar");
overwrite_file_raw ("A/deep/mas", "po\nkra\nczny");

$svk->add ('A');

$answer = [[q{
[1/7] Directory 'A' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory > }, 'p'],[q{
[1/7] Directory 'A' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory > }, 'a'],[q{
[2/7] Directory 'A/deep' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,
move to [p]revious change > }, 'a'],[q{
[3/7] File 'A/deep/baz' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change > }, 'a'],[q{
[4/7] Directory 'A/deep/la' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,
move to [p]revious change > }, 'p'],[q{
[3/7] File 'A/deep/baz' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change [a]> }, ''],[q{
[4/7] Directory 'A/deep/la' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,
move to [p]revious change > }, 'p'],[q{
[3/7] File 'A/deep/baz' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change [a]> }, 's'],[q{
[4/7] Directory 'A/deep/la' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,
move to [p]revious change > }, 'p'],[q{
[3/7] File 'A/deep/baz' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change [s]> }, 'p'],[q{
[2/7] Directory 'A/deep' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,
move to [p]revious change [a]> }, 'A'],[q{
[3/3] File 'A/foo' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change > }, 'p'],[q{
[2/3] Directory 'A/deep' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,
move to [p]revious change [A]> }, 'A'],[q{
[3/3] File 'A/foo' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change > }, 'p'],[q{
[2/3] Directory 'A/deep' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,
move to [p]revious change [A]> }, 's'],[q{
[3/3] File 'A/foo' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change > }, 'a'],'stop'];
#our $DEBUG = 1;
$svk->commit('--interactive', '-m', 'foo');

is_deeply($answer, ['stop'], 'all answers used');

is_output ($svk, 'status', [],
   [__('A   A/deep'),
    __('A   A/deep/baz'),
    __('A   A/deep/la'),
    __('A   A/deep/la/no'),
    __('A   A/deep/mas')], 'skip subdirectory');

#our $show_prompt_output = 1;
$svk->propset('roch', 'miata', 'A/deep');
$answer = [[q{
[1/6] Directory 'A/deep' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory > }, 'a'],[q{
[2/6] File 'A/deep/baz' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change > }, 'a'],[q{
[3/6] Directory 'A/deep/la' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,
move to [p]revious change > }, 'A'],[q{
[4/5] File 'A/deep/mas' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change > }, 's'],[q{Property change on A/deep
___________________________________________________________________
Name: roch
 +miata

[5/5] 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 > }, 's'],'stop'];
$svk->commit('--interactive', '-m', 'foo');

is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [],
   [__('A   A/deep/mas'),
    __(' M  A/deep')], 'accept subdirectory, skip file');

$answer = [[q{
[1/3] File 'A/deep/mas' is marked for addition:
[a]ccept, [s]kip this change > }, 's'],[q{Property change on A/deep
___________________________________________________________________
Name: roch
 +miata

[2/2] 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 > }, 'a'],'stop'];
$svk->propset('tada', 'bob', 'A/deep/mas');
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
# XXX: this should show info about property
is_output ($svk, 'status', [],
   [__('A   A/deep/mas')], 'skip file with property');
is_output ($svk, 'diff', [],
   ['=== A/deep/mas',
    '==================================================================',
    "--- A/deep/mas\t(revision 3)",
    "+++ A/deep/mas\t(local)",
    '@@ -0,0 +1,3 @@',
    '+po',
    '+kra',
    '+czny',
    '\ No newline at end of file',
    '',
    'Property changes on: A/deep/mas',
    '___________________________________________________________________',
    'Name: tada',
    ' +bob',
    ''], 'skip file with property - test prop');

$answer = [[q{
[1/2] File 'A/deep/mas' is marked for addition:
[a]ccept, [s]kip this change > }, 'a'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: tada
 +bob

[2/2] Property change on 'A/deep/mas' 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 > }, 's'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');

is_output ($svk, 'diff', [],
   ['',
    'Property changes on: A/deep/mas',
    '___________________________________________________________________',
    'Name: tada',
    ' +bob',
    ''], 'commit file, skip property');

$answer = [[q{Property change on A/deep/mas
___________________________________________________________________
Name: bata
 +rob

[1/2] Property change on 'A/deep/mas' file requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name > }, 'k'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: tada
 +bob

[2/2] Property change on 'A/deep/mas' 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 > }, 'p'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: bata
 +rob

[1/2] Property change on 'A/deep/mas' file requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name [k]> }, 's'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: tada
 +bob

[2/2] Property change on 'A/deep/mas' 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'],'stop'];
$svk->propset('bata', 'rob', 'A/deep/mas');
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['',
    'Property changes on: A/deep/mas',
    '___________________________________________________________________',
    'Name: bata',
    ' +rob',
    ''], 'skip only one property');

$answer = [[q{Property change on A/deep/mas
___________________________________________________________________
Name: bata
 +rob

[1/3] Property change on 'A/deep/mas' file requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name > }, 'a'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: zoot
 +wex

[2/3] Property change on 'A/deep/mas' 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 > }, 'p'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: bata
 +rob

[1/3] Property change on 'A/deep/mas' file requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name [a]> }, 'c'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: zoot
 +wex

[2/2] Property change on 'A/deep/mas' 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 > }, 's'],'stop'];
$svk->propset('bata', 'koro', 'A/deep');
$svk->propset('zoot', 'wex', 'A/deep/mas');
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['',
    'Property changes on: A/deep/mas',
    '___________________________________________________________________',
    'Name: zoot',
    ' +wex',
    ''], 'skip all \'bata\' properties');

overwrite_file_raw ("A/deep/mas", "wy\nkra\nkal\n");
$svk->propset('parra', 'kok', 'A/deep/mas');
$answer = [[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/4] Modification to 'A/deep/mas' 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 > }, 'S'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/3] Property change on 'A/deep/mas' 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 > }, 'p'],[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/3] Modification to 'A/deep/mas' 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 [S]> }, 'A'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/3] Property change on 'A/deep/mas' 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'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: zoot
 +wex

[3/3] Property change on 'A/deep/mas' 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 > }, 'p'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/3] Property change on 'A/deep/mas' 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]> }, ''],[q{Property change on A/deep/mas
___________________________________________________________________
Name: zoot
 +wex

[3/3] Property change on 'A/deep/mas' 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 > }, 'p'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/3] Property change on 'A/deep/mas' 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]> }, 'p'],[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/3] Modification to 'A/deep/mas' 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 [A]> }, 'p'],[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/3] Modification to 'A/deep/mas' 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 [A]> }, 'k'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['=== A/deep/mas',
    '==================================================================',
    "--- A/deep/mas\t(revision 6)",
    "+++ A/deep/mas\t(local)",
    '@@ -1,3 +1,3 @@',
    '-po',
    '+wy',
    ' kra',
    '-czny',
    '\ No newline at end of file',
    '+kal',
    '',
    'Property changes on: A/deep/mas',
    '___________________________________________________________________',
    'Name: parra',
    ' +kok',
    'Name: zoot',
    ' +wex',
    ''], 'skip all changes to content and properties');

$answer = [[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/4] Modification to 'A/deep/mas' 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 > }, 's'],[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
 po
 kra
-czny
\ No newline at end of file
+kal

[2/4] Modification to 'A/deep/mas' 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 > }, 'p'],[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/4] Modification to 'A/deep/mas' 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 [s]> }, ''],[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
 po
 kra
-czny
\ No newline at end of file
+kal

[2/4] Modification to 'A/deep/mas' 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 > }, 'p'],[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/4] Modification to 'A/deep/mas' 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 [s]> }, 'S'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/3] Property change on 'A/deep/mas' 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 > }, 'p'],[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/3] Modification to 'A/deep/mas' 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 [S]> }, 'A'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/3] Property change on 'A/deep/mas' 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 > }, 'c'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: zoot
 +wex

[3/3] Property change on 'A/deep/mas' 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 > }, 'p'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/3] Property change on 'A/deep/mas' 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 [c]> }, 's'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: zoot
 +wex

[3/3] Property change on 'A/deep/mas' 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 > }, 's'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['',
    'Property changes on: A/deep/mas',
    '___________________________________________________________________',
    'Name: parra',
    ' +kok',
    'Name: zoot',
    ' +wex',
    ''], 'commit only content changes');

overwrite_file_raw ("A/deep/mas", "wy\npstry\nkal\n");
overwrite_file_raw ("A/foo", "temp");
$answer = [[qq{--- A/deep/mas\t(revision 7)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
 wy
-kra
+pstry
 kal

[1/4] Modification to 'A/deep/mas' 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 > }, 'S'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/4] Property change on 'A/deep/mas' 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 > }, 'p'],[qq{--- A/deep/mas\t(revision 7)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
 wy
-kra
+pstry
 kal

[1/4] Modification to 'A/deep/mas' 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 [S]> }, 'c'],[qq{--- A/foo\t(revision 7)
+++ A/foo\t(local)}.q{
@@ -0,1 +0,1 @@
-foobar
-grab
+temp
\ No newline at end of file

[2/2] Modification to 'A/foo' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,
move to [p]revious change > }, 'p'],[qq{--- A/deep/mas\t(revision 7)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
 wy
-kra
+pstry
 kal

[1/2] Modification to 'A/deep/mas' 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 [c]> }, 'a'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: parra
 +kok

[2/2] Property change on 'A/deep/mas' 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 > }, 'p'],[qq{--- A/deep/mas\t(revision 7)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
 wy
-kra
+pstry
 kal

[1/2] Modification to 'A/deep/mas' 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 [a]> }, 'c'],[qq{--- A/foo\t(revision 7)
+++ A/foo\t(local)}.q{
@@ -0,1 +0,1 @@
-foobar
-grab
+temp
\ No newline at end of file

[2/2] Modification to 'A/foo' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,
move to [p]revious change > }, 's'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [],
    [__('M   A/foo')], 'commit all changes to content and properties');

$svk->revert("A/foo");
$svk->propset('parra', 'kok', '.');
$answer = [[q{Property change on 
___________________________________________________________________
Name: parra
 +kok

[1/1] Property change on '.' directory requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name > }, 's'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['',
    'Property changes on: ',
    '___________________________________________________________________',
    'Name: parra',
    ' +kok',
    ''], 'skip change to root directory');

$svk->propset('parra', 'kok', '.');
$answer = [[q{Property change on 
___________________________________________________________________
Name: parra
 +kok

[1/1] Property change on '.' directory requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name > }, 'a'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [], [], 'commit change to root directory');

overwrite_file_raw ("A/foo", "za\ngrab\nione\n");
$answer = [[qq{--- foo\t(revision 9)
+++ foo\t(local)}.q{
@@ -0,1 +0,1 @@
-foobar
+za
 grab

[1/2] Modification to 'foo' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file > }, 's'],[qq{--- foo\t(revision 9)
+++ foo\t(local)}.q{
@@ -0,1 +0,1 @@
 foobar
 grab
+ione

[2/2] Modification to 'foo' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,
move to [p]revious change > }, 's'],'stop'];
is_output($svk, 'commit', 
  ['--interactive', 'A/foo', '-m', 'foo'],
  ['No targets to commit.'], "Skip everything in interactive commit.");
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['=== A/foo',
    '==================================================================',
    "--- A/foo\t(revision 9)",
    "+++ A/foo\t(local)",
    '@@ -1,2 +1,3 @@',
    '-foobar',
    '+za',
    ' grab',
    '+ione'], 'skiped content change to directly passed file');

$svk->propset('papa', 'mot', 'A/foo');
overwrite_file_raw ("A/foo", "za\ngrab\nione\n");
$answer = [[qq{--- foo\t(revision 9)
+++ foo\t(local)}.q{
@@ -0,1 +0,1 @@
-foobar
+za
 grab

[1/3] Modification to 'foo' 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 > }, 'k'],'stop'];
$svk->commit('--interactive', 'A/foo', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['=== A/foo',
    '==================================================================',
    "--- A/foo\t(revision 9)",
    "+++ A/foo\t(local)",
    '@@ -1,2 +1,3 @@',
    '-foobar',
    '+za',
    ' grab',
    '+ione',
    '',
    'Property changes on: A/foo',
    '___________________________________________________________________',
    'Name: papa',
    ' +mot',
    ''], 'skiped content and prop change to directly passed file');

$answer = [[qq{--- foo\t(revision 9)
+++ foo\t(local)}.q{
@@ -0,1 +0,1 @@
-foobar
+za
 grab

[1/3] Modification to 'foo' 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 > }, 'A'],[q{Property change on foo
___________________________________________________________________
Name: papa
 +mot

[2/2] Property change on '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 > }, 's'],'stop'];
$svk->commit('--interactive', 'A/foo', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['',
    'Property changes on: A/foo',
    '___________________________________________________________________',
    'Name: papa',
    ' +mot',
    ''], 'commited content, skiped prop to directly passed file');

$answer = [[q{Property change on foo
___________________________________________________________________
Name: papa
 +mot

[1/1] Property change on 'foo' file requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name > }, 'a'],'stop'];
$svk->commit('--interactive', 'A/foo', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [], [], 'commit prop changes to directly passed file');

our $show_prompt=1;
is_output($svk,'merge', ['-c1', '//A/foo', 'A/deep/mas'],
[ __('C   A/deep/mas'), '1 conflict found.'], "Merge a conflict into the tree");

overwrite_file_raw ("A/foo", "za\npalny\n");
$answer = [[q{Conflict detected in:
  A/deep/mas
file. Do you want to skip it and commit other changes? (y/n) }, 'n'],'stop'];
is_output($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['Conflict detected in:',
     '  A/deep/mas',
     'file. Do you want to skip it and commit other changes? (y/n) ',
     '1 conflict detected. Use \'svk resolved\' after resolving them.'],
     'conflict - output');

is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [],
    [__('C   A/deep/mas'),
     __('M   A/foo')], 'conflict - abort');

$show_prompt=0;
$answer = [[q{Conflict detected in:
  A/deep/mas
file. Do you want to skip it and commit other changes? (y/n) }, 'y'],[qq{--- A/foo\t(revision 11)
+++ A/foo\t(local)}.q{
@@ -0,2 +0,2 @@
 za
-grab
-ione
+palny

[1/1] Modification to 'A/foo' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file > }, 'a'],'stop'];
#our $DEBUG=1;
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [],[
__('C   A/deep/mas'),
], 'conflict - skip the conflict, but commit changes to foo');

$show_prompt=1;
is_output($svk, 'merge', ['-c1', '//A/foo', 'A/deep/baz'],
[__('C   A/deep/baz'),
'1 conflict found.'
], "create another conflict");
overwrite_file_raw ("A/foo", "");
$answer = [[q{Conflict detected in:
  A/deep/baz
  A/deep/mas
files. Do you want to skip those and commit other changes? (y/n) }, 'n'],'stop'];
is_output($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['Conflict detected in:',
     '  A/deep/baz',
     '  A/deep/mas',
     'files. Do you want to skip those and commit other changes? (y/n) ',
     '2 conflicts detected. Use \'svk resolved\' after resolving them.'],
     'multiple conflicts -  output');

is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [],
    [__('C   A/deep/baz'),
     __('C   A/deep/mas'),
     __('M   A/foo')], 'multiple conflicts - abort');

$show_prompt=0;
$answer = [[q{Conflict detected in:
  A/deep/baz
  A/deep/mas
files. Do you want to skip those and commit other changes? (y/n) }, 'y'],[qq{--- A/foo\t(revision 12)
+++ A/foo\t(local)}.q{
@@ -0,1 +0 @@
-za
-palny

[1/1] Modification to 'A/foo' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file > }, 'a'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [],
    [__('C   A/deep/baz'),
     __('C   A/deep/mas')], 'multiple conflicts- skip');

$svk->revert('A/deep/baz', 'A/deep/mas');
$svk->propset('svn:mime-type', 'faked/type', 'A/deep/mas');
overwrite_file_raw ("A/deep/mas", "baran\nkoza\nowca\n");
$show_prompt=1;
$answer = [[q{
[1/2] Modifications to binary file 'A/deep/mas':
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip rest of changes to this file and its properties > }, 'c'],'stop'];
is_output($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['',                                     
     '[1/2] Modifications to binary file \'A/deep/mas\':',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip rest of changes to this file and its properties > ',
     'Committed revision 14.'],
     'replace file with binary one - output');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [], [], 'replace file with binary one');

$svk->propset('svn:mime-type', 'text/plain', 'A/deep/mas');
overwrite_file_raw ("A/deep/mas", "krowa\nkoza\n");
$show_prompt=0;
$answer = [[q{
[1/2] Modifications to binary file 'A/deep/mas':
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip rest of changes to this file and its properties > }, 'a'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: svn:mime-type
 -faked/type
 +text/plain

[2/2] Property change on 'A/deep/mas' 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'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [], [], 'replace binary file with text one');

overwrite_file_raw ("A/deep/mas", "byk\nkrowa\nbawol\nkoza\nkaczka\n");
$answer = [[qq{--- A/deep/mas\t(revision 15)
+++ A/deep/mas\t(local)}.q{
@@ -0,1 +0,1 @@
+byk
 krowa
 koza

[1/3] Modification to 'A/deep/mas' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file > }, 'a'],[qq{--- A/deep/mas\t(revision 15)
+++ A/deep/mas\t(local)}.q{
@@ -0,1 +1,1 @@
 krowa
+bawol
 koza

[2/3] Modification to 'A/deep/mas' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,
move to [p]revious change > }, 'a'],[qq{--- A/deep/mas\t(revision 15)
+++ A/deep/mas\t(local)}.q{
@@ -0,1 +2,1 @@
 krowa
 koza
+kaczka

[3/3] Modification to 'A/deep/mas' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,
move to [p]revious change > }, 'a'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [], [], 'replace text file with text one');

#our $show_prompt_output=1;
$svk->propset('kox', 'ob', 'A/deep');
overwrite_file_raw ("A/deep/mas", "mleczna\nkrowa\n");
$answer = [[qq{--- A/deep/mas\t(revision 16)
+++ A/deep/mas\t(local)}.q{
@@ -0,4 +0,4 @@
-byk
+mleczna
 krowa
 bawol
 koza
 kaczka

[1/3] Modification to 'A/deep/mas' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file > }, 'A'],[q{Property change on A/deep
___________________________________________________________________
Name: kox
 +ob

[2/2] 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 > }, 'p'],[qq{--- A/deep/mas\t(revision 16)
+++ A/deep/mas\t(local)}.q{
@@ -0,4 +0,4 @@
-byk
+mleczna
 krowa
 bawol
 koza
 kaczka

[1/2] Modification to 'A/deep/mas' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file [A]> }, 'a'],[qq{--- A/deep/mas\t(revision 16)
+++ A/deep/mas\t(local)}.q{
@@ -0,4 +0,3 @@
 byk
 krowa
-bawol
-koza
-kaczka

[2/3] Modification to 'A/deep/mas' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,
move to [p]revious change > }, 'a'],[q{Property change on A/deep
___________________________________________________________________
Name: kox
 +ob

[3/3] 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 > }, 's'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_output ($svk, 'status', [],
    [__(' M  A/deep')], 'skip directory property on used directory.');
is_deeply($answer, ['stop'], 'all answers used');