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 => 16;
our $output;

my ($xd, $svk) = build_test('test');

$svk->mkdir(-m => 'trunk', '/test/trunk');
$svk->mkdir(-m => 'trunk', '/test/branches');
$svk->mkdir(-m => 'trunk', '/test/tags');
my $tree = create_basic_tree($xd, '/test/trunk');

my $depot = $xd->find_depot('test');
my $uri = uri($depot->repospath);

$svk->mirror('//mirror/MyProject', $uri);
$svk->sync('//mirror/MyProject');

my ($copath, $corpath) = get_copath('bm-remove');

$svk->checkout('//mirror/MyProject/trunk', $copath);

chdir($copath);

is_output_like ($svk, 'branch', ['--create', 'feature/foo', '--switch-to'], qr'Project branch created: feature/foo');

is_output_like ($svk, 'branch', ['--create', 'bugfix/bar', '--switch-to'], qr'Project branch created: bugfix/bar');

$svk->branch('--create', 'bugfix/foobar');
$svk->branch('--create', 'feature/barfoo');

is_output($svk, 'br', ['-l', '//mirror/MyProject'],
          ['bugfix/bar', 'bugfix/foobar', 'feature/barfoo', 'feature/foo']);

$svk->branch('--remove', 'feature/foo', 'feature/barfoo');

is_output($svk, 'br', ['-l', '//mirror/MyProject'],
          ['bugfix/bar', 'bugfix/foobar']);

$svk->branch('--remove', 'bugfix/*');

is_output($svk, 'br', ['-l', '//mirror/MyProject'], []);

$svk->branch('--create', 'foobar');
$svk->branch('--create', 'foobar2');
$svk->branch('--create', 'feature/foobar3');
$svk->branch('--create', 'bugfix/foobar4');

is_output($svk, 'br', ['-l', '//mirror/MyProject'],
          ['bugfix/foobar4', 'feature/foobar3', 'foobar', 'foobar2']);

$svk->branch('--remove', '*');

is_output($svk, 'br', ['-l', '//mirror/MyProject'], []);

$svk->branch('--create', 'foobar5');
$svk->branch('--create', 'foobar6');
$svk->branch('--create', 'feature/foobar7');
$svk->branch('--create', 'bugfix/foobar8');
$svk->branch('--create', 'localfoo', '--local');

is_output($svk, 'br', ['-l', '//mirror/MyProject'],
          ['bugfix/foobar8', 'feature/foobar7', 'foobar5', 'foobar6']);

$svk->branch('--remove', 'fake', 'foobar*');

is_output($svk, 'br', ['-l', '//mirror/MyProject'],
          ['bugfix/foobar8', 'feature/foobar7']);

$svk->branch('--remove', '*');

is_output($svk, 'br', ['-l', '//mirror/MyProject'], []);

is_output($svk, 'br', ['--remove', 'fake2'],
    ["No such branch exists: fake2 "]);

is_output($svk, 'br', ['-l', '--all', '//mirror/MyProject'],
    ['localfoo (in local)']);

is_output($svk, 'br', ['--remove', 'localfoo'],
    ["No such branch exists: localfoo "]);

$svk->branch('--remove', 'localfoo', '--local');

is_output($svk, 'br', ['-l', '--all', '//mirror/MyProject'], []);

$svk->branch('--create', 'feature/foobar9');
chdir('..');

is_output($svk, 'br', ['-l', '//mirror/MyProject'],
          ['feature/foobar9']);

$svk->branch('--remove', 'feature/foobar9', '//mirror/MyProject');

is_output($svk, 'br', ['-l', '//mirror/MyProject'],
          []);

1;