App-Git-Workflow
view release on metacpan or search on metacpan
lib/Test/Git/Workflow/Command.pm view on Meta::CPAN
local %ENV = %ENV;
if ($data->{ENV}) {
$ENV{$_} = $data->{ENV}{$_} for keys %{ $data->{ENV} };
}
my $stdin;
$data->{STD}{IN} ||= '';
open $stdin, '<', \$data->{STD}{IN};
# run the code
my $error;
my ($stdout, $stderr) = capture { local *STDIN = $stdin; eval { $module->run() }; $error = $@; };
## Tests
if ($error) {
#die $error, $stderr if !$data->{error};
is $error, $data->{error}, "Error matches"
or ( ref $error && diag explain $error, $data->{error} );
}
# STDOUT
if ( !ref $data->{STD}{OUT} ) {
is $stdout, $data->{STD}{OUT}, "STDOUT $data->{name} run"
or diag explain $stdout, $data->{STD}{OUT};
}
elsif ( ref $data->{STD}{OUT} eq 'Regexp' ) {
lib/Test/Git/Workflow/Command.pm view on Meta::CPAN
}
elsif ( ref $data->{STD}{OUT} eq 'HASH' ) {
my $actual = $data->{STD}{OUT_PRE} ? eval { $data->{STD}{OUT_PRE}->($stdout) } : $stdout;
#diag explain [$stdout, $data, $@] if $@;
is_deeply $actual, $data->{STD}{OUT}, "STDOUT $data->{name} run"
or diag explain $actual, $data->{STD}{OUT};
}
# STDERR
if ( !ref $data->{STD}{ERR} ) {
is $stderr, $data->{STD}{ERR}, "STDERR $data->{name} run"
or diag explain $stderr, $data->{STD}{ERR};
}
elsif ( ref $data->{STD}{ERR} eq 'Regexp' ) {
like $stderr, $data->{STD}{ERR}, "STDERR $data->{name} run"
or diag explain $stderr, $data->{STD}{ERR};
}
elsif ( ref $data->{STD}{ERR} eq 'HASH' ) {
my $actual = $data->{STD}{ERR_PRE} ? $data->{STD}{ERR_PRE}->($stdout) : $stdout;
is_deeply $actual, $data->{STD}{ERR}, "STDERR $data->{name} run"
or diag explain $actual, $data->{STD}{ERR};
}
is_deeply \%{"${module}::option"}, $data->{option}, 'Options set correctly'
or diag explain \%{"${module}::option"}, $data->{option};
ok !@{ $git->{data} }, "All data setup is used"
# [],
# # STDOUT
# '',
#],
);
for my $data (@data) {
@ARGV = @{ $data->[0] };
$git->mock_add(@{ $data->[1] });
my $option = {};
my ($stdout, $stderr) = capture { get_options($option) };
like $stdout, $data->[2], 'Ran ' . join ' ', @{ $data->[0] }
or diag 'STDOUT matches', Dumper $stdout, $data->[2];
is_deeply $option, $data->[3], 'Options set correctly'
or diag 'Options not set correctly: ', Dumper $option, $data->[3];
}
}
__DATA__
=head1 NAME
( run in 0.246 second using v1.01-cache-2.11-cpan-26ccb49234f )