#!/usr/bin/perl -w use strict; use SVK::Test; plan tests => 13; # working copy initialization our $output; my ($xd, $svk) = build_test('test'); my ($copath, $corpath) = get_copath ('log-xml'); my ($repospath, undef, $repos) = $xd->find_repos ('//', 1); $svk->checkout ('//', $copath); chdir ($copath); # create some files, copy them and set a property mkdir ('A'); overwrite_file ("A/foo", "foobar\nfnord\n"); overwrite_file ("A/bar", "foobar\n"); $svk->add ('A'); $svk->commit ('-m', 'init'); $svk->cp ('//A/foo', 'foo-cp'); $svk->cp ('//A/bar', 'bar-cp'); overwrite_file ("foo-cp", "foobar\nfnord\nnewline"); $svk->ps ('mmm', 'xxx', 'A/foo'); $svk->commit ('-m', 'cp & ps xml'); # check the output so far is_output ( $svk, 'log', ['--xml'], [ '', '', '', qr{.*?}, qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, 'cp & ps <bad>xml</bad>', '', '', qr{.*?}, qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, 'init', '', '', ], ); { local $ENV{SVKLOGOUTPUT} = 'xml'; is_output( $svk, 'log', ['--quiet'], [ '', '', '', qr{.*?}, qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, '', '', qr{.*?}, qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, '', '', ], ); } is_output( $svk, 'log', ['--output', 'junk', '--xml', '-v'], [ 'Ignoring --output junk. Using --xml.', '', '', '', qr{.*?}, qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, '', '/A/foo', '/bar-cp', '/foo-cp', '', 'cp & ps <bad>xml</bad>', '', '', qr{.*?}, qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, '', '/A', '/A/bar', '/A/foo', '', 'init', '', '', ], ); # delete the author property $svk->pd ('--revprop', '-r' => 2 , 'svn:author'); $svk->mirror ('/test/A', uri("$repospath/A")); $svk->sync ('/test/A'); # check the "no author" behavior, etc is_output( $svk, 'log', ['--xml', '-v', '-l1', '/test/'], [ '', '', '', qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, '', '/A/foo', '', 'cp & ps <bad>xml</bad>', '', '', ], ); is_output( $svk, 'log', ['--xml', '-v', '-l1', '/test/A/'], [ '', '', '', qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, '', '/A/foo', '', 'cp & ps <bad>xml</bad>', '', '', ], ); is_output ( $svk, 'log', ['--xml', '-q', '--verbose', '--limit', '1' ,'/test/A/'], [ '', '', '', qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, '', '/A/foo', '', '', '', ] ); is_output( $svk, 'log', ['--xml', '-v', '-r2@', '/test/A/'], [ '', '', '', qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, '', '/A/foo', '', 'cp & ps <bad>xml</bad>', '', '', ] ); # try some bad revisions is_output ( $svk, 'log', ['--xml', '-v', '-r5@', '/test/A/'], ["Can't find local revision for 5 on /A."] ); is_output ( $svk, 'log', ['--xml', -r => 16384, -l1 => '/test/A'], [ 'Revision too large, show log from 3.', '', '', '', qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, 'cp & ps <bad>xml</bad>', '', '', ] ); is_output ( $svk, 'log', ['--xml', -r => 'asdf', '/test/A'], ['asdf is not a number.'] ); # remove A from the repo $svk->update ('A'); $svk->rm (-m => 'bye', '//A'); is_output( $svk, 'log', [ '--xml', -l1 => 'A' ], [ '', '', '', qr{\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z}, 'cp & ps <bad>xml</bad>', '', '', ], ); # mangle a revision $svk->pd(qw{ --revprop -r 3 svn:date }); $svk->pd(qw{ --revprop -r 3 svn:log }); $svk->update(); is_output ( $svk, 'log', [ '--xml', '-l1', '-v'], [ '', '', '', qr{.*?}, '', '/A', '', '', '', ], ); # make sure non-existent filters die correctly. is_output( $svk, 'log', ['--output', 'bzzz'], [ q{Can't load log filter 'bzzz'.}, ] );