package Devel::Cover::TT; use strict; use warnings; use base 'Devel::Cover'; use Template; use Template::Coverable::Context; use Template::Coverable::Provider; our $TMPDIR = '/tmp/__ttc'; our $MODDIR = 'ttc_mod'; # USAGE: # use Devel::Cover::TT qw{ -silent 1 -ignore . -ttc_dir /tmp/__ttc }; sub import { my $self = shift; my @o; while( @_ ){ local $_ = shift @_; /^-ttc_dir/ && do { $TMPDIR = shift @_; next }; push @o, $_; } push @o, '+select' => $TMPDIR; unshift @INC, $TMPDIR; $Template::Config::CONTEXT = 'Template::Coverable::Context'; $Template::Config::PROVIDER = 'Template::Coverable::Provider'; return $self->SUPER::import(@o); } sub file2pm { local $_ = shift; s/\.(?!pm$)/___/g; return $_; } sub file2pkg { local $_ = shift; s#^$TMPDIR##; s#^/##; s#/+#::#g; s/\.\w+$//; s/\./___/g; return $_; } 1;