package ContentOfRandomFileTestOptions;
use base qw/RandomFileMethodAllTests/;
use strict;
use warnings;
use File::Random;
sub _no_cvs_subdir_check($);
sub _guess_filename(@);
# Replace random_file with calling content_of_random_file
# Analyze the content and return the file name because of the analysis
sub random_file {
my ($self, %args) = @_;
my @content = $self->content_of_random_file(
%args,
(exists($args{-check}) and (ref($args{-check}) !~ /CODE|Regexp/))
? () # -check option without a sensful value, should surely fail
: (-check => _no_cvs_subdir_check $args{-check})
);
return _guess_filename @content;
}
sub _no_cvs_subdir_check($) {
my $check = shift() || sub {"no checking done - always true"};
return sub {
return 0 if /CVS/; # filename seems to be in a CVS subdir
ref($check) eq 'Regexp' ? return /$check/ : return $check->(@_)
};
}
# In the fileX files there's only one line "Content: fileX"
# In the [xyz].dat files there are some lines, the 4th line contains the fname
sub _guess_filename(@) {
$_[0] and $_[0] =~ /^Content: (.*)$/ and return $1;
$_[3] and chomp($_[3]),$_[3] =~ /^(\w\.dat)$/ and return $1;
return undef;
}
1;
syntax highlighted by Code2HTML, v. 0.9.1