#-------------------------------------------------------------------------------
# $URL$
# $Date$
# $Author$
# $Revision$
#-------------------------------------------------------------------------------
use strict;
use FindBin qw($Bin);
use File::Basename qw(basename);
#------------------------------------------------------------------------------
our $VERSION = 0.03;
#------------------------------------------------------------------------------
# So we do NOT need to export them....
# Since we expect that we will work with Test::Class Cases...
# but may work outside of the Test::Class cases....
#
use base qw(Exporter);
our %EXPORT_TAGS = ( 'all' => [ qw(
is_testsuite_module
path_to_data_dir
path_to_data_dir_from
readable_file_path
) ] );
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
#------------------------------------------------------------------------------
sub readable_file_path {
my ( $file_path ) = @_;
return unless $file_path;
return ( -r $file_path );
}
sub is_testsuite_module {
my ( $file_path ) = @_;
return unless readable_file_path($file_path);
my $file_name = basename( $file_path );
return $file_name =~ m{^TestSuite\.pm$};
}
# hum.... what if we have a TestSuite for Foo in blib?
# do we need a get_resource_from_INC() method?
sub path_to_data_dir_from {
my ($path ) = @_;
$path =~ s{/t/.*}{/t/};
$path = File::Spec->join( $path, 'test_data' );
return $path;
}
sub path_to_data_dir {
return path_to_data_dir_from($Bin);
}
#------------------------------------------------------------------------------
1;
__END__
=pod
=head1 NAME
Wetware::Test::Uilities - Utility Functions for testing
=head1 SYNOPSIS
use base Wetware::Test::Uilities;
=head1 DESCRIPTION
Simple functions for helping build test code.
None of them are exported by default.
=head2 is_testsuite_module( $file )
Returns true if the file name matches TestSuite.pm
=head2 path_to_data_dir_from($dir)
returns the path to t/test_data.
=head2 path_to_data_dir()
Uses Findbin's $Bin, to C<call path_to_data_dir_from()>.
=head2 readable_file_path($file_path)
tests that there is a string there, and that it is readable.
=head1 SEE ALSO
FindBin
=head1 AUTHOR
"drieux", C<< <"drieux [AT] at wetware.com"> >>
=head1 COPYRIGHT & LICENSE
Copyright 2009 "drieux", all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
# the end