use App::Codeowners;
use Capture::Tiny qw(capture);
use File::pushd;
-use Path::Tiny qw(path tempdir);
+use Path::Tiny 0.089 qw(path tempdir);
use Test::More;
my $can_git = _can_git();
-# Set progname so that pod2usage knows how to find the script after we chdir
-$0 = path($Bin)->parent->child('bin/git-codeowners')->absolute;
+# Set progname so that pod2usage knows how to find the script after we chdir.
+$0 = path($Bin)->parent->child('bin/git-codeowners')->absolute->stringify;
$ENV{NO_COLOR} = 1;
subtest 'format json' => sub {
plan skip_all => 'No JSON::MaybeXS' if !eval { require JSON::MaybeXS };
- ($stdout, $stderr, $exit) = run { App::Codeowners->main(qw{-f json show --no-project}) };
+ ($stdout, $stderr, $exit) = run { App::Codeowners->main(qw{-f json show --no-projects}) };
is($exit, 0, 'exited without error');
my $expect = '[{"File":"CODEOWNERS","Owner":null},{"File":"a/b/c/bar.txt","Owner":["@snickers"]},{"File":"foo.txt","Owner":["@twix"]}]';
is($stdout, $expect, 'correct output with json format');
};
};
+subtest 'create' => sub {
+ plan skip_all => 'Cannot run git' if !$can_git;
+
+ my $repodir = _setup_git_repo();
+ my $chdir = pushd($repodir);
+
+ my $codeowners_filepath = path('CODEOWNERS');
+ $codeowners_filepath->remove;
+
+ my ($stdout, $stderr, $exit) = run { App::Codeowners->main(qw{create}) };
+ is($exit, 0, 'exited without error');
+ is($stderr, "Wrote CODEOWNERS\n", 'reportedly wrote a CODEOWNERS file');
+
+ ok($codeowners_filepath->is_file, 'did write CODEOWNERS file');
+
+ my $contents = $codeowners_filepath->slurp_utf8;
+ like($contents, qr/^# This file shows mappings/, 'correct contents of file') or diag $contents;
+};
+
done_testing;
exit;
END
run_git('-C', $repodir, qw{init})->wait;
+ run_git('-C', $repodir, qw{config --local user.email app-codeowners@example.com})->wait;
+ run_git('-C', $repodir, qw{config --local user.name App-Codeowners})->wait;
run_git('-C', $repodir, qw{add .})->wait;
run_git('-C', $repodir, qw{commit -m}, 'initial commit')->wait;