package Minilla::CLI::Test;
use strict;
use warnings;
use utf8;
use File::pushd;

use Minilla::WorkDir;
use Minilla::Project;
use Minilla::Util qw(check_git parse_options);

sub run {
    my ($self, @args) = @_;

    my $release   = 0;
    my $author    = 1;
    my $automated = 0;
    my $all       = 0;

    check_git;

    parse_options(
        \@args,
        'release!'   => \$release,
        'author!'    => \$author,
        'automated!' => \$automated,
        'all!'       => \$all,
    );

    if ($all) {
        $release = $author = $automated = 1;
    }

    my $project = Minilla::Project->new();
    $project->verify_prereqs( );

    $ENV{RELEASE_TESTING}   =1 if $release;
    $ENV{AUTHOR_TESTING}    =1 if $author;
    $ENV{AUTOMATED_TESTING} =1 if $automated;

    my $work_dir = $project->work_dir;
    my $code = $work_dir->dist_test();
    exit $code;
}

1;
__END__

=head1 NAME

Minilla::CLI::Test - Run test cases

=head1 SYNOPSIS

    % minil test

        --release      enables the RELEASE_TESTING env variable
        --automated    enables the AUTOMATED_TESTING env variable
        --author       enables the AUTHOR_TESTING env variable (default
                       behavior)
        --all          enables the RELEASE_TESTING, AUTOMATED_TESTING and
                       AUTHOR_TESTING env variables

=head1 DESCRIPTION

This sub-command run test cases.

