#!/usr/bin/perl use strict; use warnings; use Test::More tests => 9; use Test::MockObject; use Test::Exception; use ok 'Template'; use File::Temp qw/tempfile/; use File::Spec; use Verby::Config::Data; my $m; BEGIN { use_ok($m = "Verby::Action::Template") }; my $template = <new; %{ $c->data } = ( template => \$template, logger => Test::MockObject->new, foo => "blah", ); $c->logger->set_true($_) for qw/info/; $c->logger->mock(logdie => sub { shift; die "@_" }); isa_ok(my $a = $m->new, $m); { (my $outfh, $c->data->{output}) = tempfile(UNLINK => 1); can_ok($a, "do"); lives_ok { $a->do($c) } "template had no errors"; ok($a->verify($c), "verififcation successful"); my $output = do { local $/; <$outfh> }; like($output, qr/foo='blah'/s, "output looks good"); } { my ($outfh, $outfile) = tempfile(UNLINK => 1); $c->data->{output} = $outfile; chmod 0, $outfile or die "couldn't chmod '$outfile': $!"; $c->logger->clear; dies_ok { $a->do($c) } "action dies when output not writable"; $c->logger->called_ok("logdie"); }