#!/usr/bin/perl -w
use Test::More tests => 55;
use strict;
use File::Temp;
use SVK::Test;
my ($xd, $svk) = build_test();
our $output;
my ($copath, $corpath) = get_copath ('prop');
my ($repospath, undef, $repos) = $xd->find_repos ('//', 1);
$svk->checkout ('//', $copath);
mkdir "$copath/A";
overwrite_file ("$copath/A/foo", "foobar");
overwrite_file ("$copath/A/bar", "foobarbazz");
is_output_like ($svk, 'ps', [], qr'SYNOPSIS', 'ps - help');
is_output_like ($svk, 'pe', [], qr'SYNOPSIS', 'ps - help');
is_output_like ($svk, 'pe', ['foo','bar','baz'], qr'SYNOPSIS', 'ps - help');
is_output_like ($svk, 'propdel', [], qr'SYNOPSIS', 'propdel - help');
is_output_like ($svk, 'pg', [], qr'SYNOPSIS', 'pg - help');
is_output_like ($svk, 'pl', ["$copath/A"], qr'not found');
$svk->add ($copath);
is_output ($svk, 'pl', ["$copath/A"],
[]);
is_output ($svk, 'pl', ["$copath/A/foo"],
[]);
$svk->commit ('-m', 'commit', $copath);
is_output ($svk, 'pl', ["$copath/A"],
[]);
is_output ($svk, 'ps', ['myprop', 'myvalue', "$copath/A/unknown"],
[__("$copath/A/unknown is not under version control.")]);
overwrite_file ("$copath/A/unknown", 'foo');
is_output ($svk, 'ps', ['myprop', 'myvalue', "$copath/A/unknown"],
[__("$copath/A/unknown is not under version control.")]);
$svk->rm ("$copath/A/foo");
is_output ($svk, 'ps', ['myprop', 'myvalue', "$copath/A/foo"],
[__("$copath/A/foo is already scheduled for delete.")]);
$svk->revert (-R => $copath);
is_output ($svk, 'ps', ['-q', 'myprop', 'myvalue', "$copath/A"],
[]);
is_output ($svk, 'ps', ['myprop', 'myvalue', "$copath/A"],
[__(" M $copath/A")]);
is_output ($svk, 'pl', ["$copath/A"],
[__("Properties on $copath/A:"),
' myprop']);
is_output ($svk, 'pl', ['-v', "$copath/A"],
[__("Properties on $copath/A:"),
' myprop: myvalue']);
is_output ($svk, 'pg', ['myprop', "$copath/A"],
['myvalue']);
is_output ($svk, 'pg', [-R => 'myprop', "$copath"],
[__('t/checkout/prop/A - myvalue')]);
$svk->commit ('-m', 'commit', $copath);
is_output ($svk, 'ps', ['thisprop', 'thisvalue', "$copath/A", "$copath/A/foo"],
[__(" M $copath/A"),
__(" M $copath/A/foo")]);
$svk->revert (-R => $copath);
is_output ($svk, 'ps', ['myprop', 'myvalue2', "$copath/A"],
[__(" M $copath/A")]);
is_output ($svk, 'pl', ['-v', "$copath/A"],
[__("Properties on $copath/A:"),
' myprop: myvalue2']);
is_output ($svk, 'pg', ['myprop', "$copath/A"],
['myvalue2']);
is_output ($svk, 'pl', ['-v', "//A"],
["Properties on //A:",
' myprop: myvalue']);
is_output ($svk, 'pg', ['myprop', "//A"],
['myvalue']);
is_output ($svk, 'pg', ['myprop', "$copath/A", "//A"],
[__("$copath/A - myvalue2"),
'//A - myvalue']);
is_output ($svk, 'pg', ['--strict', 'myprop', "$copath/A", "//A"],
['myvalue2myvalue']);
$svk->revert ("$copath/A");
is_output ($svk, 'ps', ['myprop2', 'myvalue2', "$copath/A"],
[__(" M $copath/A")]);
is_output ($svk, 'pl', ['-v', "$copath/A"],
[__("Properties on $copath/A:"),
' myprop: myvalue',
' myprop2: myvalue2']);
is_output ($svk, 'propdel', ['--quiet', 'myprop', "$copath/A"],
[]);
is_output ($svk, 'propdel', ['myprop', "$copath/A"],
[__(" M $copath/A")]);
is_output ($svk, 'pl', ['-v', "$copath/A"],
[__("Properties on $copath/A:"),
' myprop2: myvalue2']);
is_output ($svk, 'pl', ['-v', "//A"],
["Properties on //A:",
' myprop: myvalue']);
$svk->commit ('-m', 'commit', $copath);
is_output ($svk, 'pl', ['-v', "//A"],
["Properties on //A:",
' myprop2: myvalue2']);
is_output ($svk, 'ps', ['-m', 'direct', 'direct', 'directly', '//A'],
['Committed revision 4.']);
is_output ($svk, 'ps', ['-m', 'direct', 'direct', 'directly', '//A/foo'],
['Committed revision 5.']);
# [' M A']);
is_output_like ($svk, 'ps', ['-m', 'direct', 'direct', 'directly', '//A/non'],
qr'Filesystem has no item');
is_output ($svk, 'pl', ['-v', "//A"],
["Properties on //A:",
' direct: directly',
' myprop2: myvalue2']);
is_output ($svk, 'propdel', ['-m', 'direct', 'direct','//A'],
['Committed revision 6.']);
# [' M A']);
$svk->update ($copath);
is_output ($svk, 'pl', ['-v', "//A"],
["Properties on //A:",
' myprop2: myvalue2']);
is_output ($svk, 'pl', ['-v', '-r1', '//A'],
[]);
is_output ($svk, 'pl', ['-v', '-r1', "$copath/A"],
[]);
is_output ($svk, 'pl', ['-v', '-r2', '//A'],
["Properties on //A:",
' myprop: myvalue']);
is_output ($svk, 'pl', ['-v', '-r2', "$copath/A"],
["Properties on //A:",
' myprop: myvalue']);
set_editor(<< 'TMP');
$_ = shift;
open _ or die $!;
@_ = ("prepended_prop\n", <_>);
close _;
unlink $_;
open _, '>', $_ or die $!;
print _ @_;
close _;
TMP
is_output ($svk, 'pe', ['-r2', 'newprop', "$copath/A"],
[qr'not allowed']);
is_output ($svk, 'pe', ['newprop', "$copath/A"],
['Waiting for editor...',
__(" M $copath/A")]);
is_output ($svk, 'pl', ['-v', "$copath/A"],
[__("Properties on $copath/A:"),
' myprop2: myvalue2',
' newprop: prepended_prop',
'']);
is_output ($svk, 'pe', ['myprop2', "$copath/A"],
['Waiting for editor...',
__(" M $copath/A")]);
is_output ($svk, 'pl', ['-v', "$copath/A"],
[__("Properties on $copath/A:"),
' myprop2: prepended_prop',
'myvalue2',
' newprop: prepended_prop',
'']);
$svk->commit ('-m', 'commit after propedit', $copath);
is_output ($svk, 'pe', ['-m', 'commit with pe', 'pedirect', "//A"],
['Waiting for editor...',
'Committed revision 8.']);
is_output ($svk, 'pl', ['-v', "$copath/A"],
[__("Properties on $copath/A:"),
' myprop2: prepended_prop',
'myvalue2',
' newprop: prepended_prop',
'']);
$svk->update ($copath);
is_output ($svk, 'pl', ['-v', "$copath/A"],
[__("Properties on $copath/A:"),
' myprop2: prepended_prop',
'myvalue2',
' newprop: prepended_prop', '',
' pedirect: prepended_prop', '']);
chdir ("$copath/A");
is_output ($svk, 'pl', ['-v'],
[__("Properties on .:"),
' myprop2: prepended_prop',
'myvalue2',
' newprop: prepended_prop', '',
' pedirect: prepended_prop',
'']);
is_output ($svk, 'pg', ['myprop2'], ['prepended_prop', 'myvalue2']);
is_output ($svk, 'pg', ['-r1', 'myprop2'], []);
is_output ($svk, 'pg', ['nosuchprop'], []);