Alien-Selenium
view release on metacpan or search on metacpan
inc/My/Module/Build.pm view on Meta::CPAN
if (m/^require My::Tests::Below unless caller/) {
$self->eof_reached(1);
return "1;\n";
} else {
return $_;
}
}
=item I<eof_reached()>
Shall return true iff the end-of-file is reached and calling
L</process_pm_line> further would just be a waste of time. Called
exactly once by L</process_pm_file_if_modified> after each call to
I<process_pm_line>.
In the base class, I<eof_reached()> is just a passive accessor whose
value is set by L</filter>.
=cut
sub eof_reached {
my $self = shift;
if (@_) {
$self->{eof} = shift;
} else {
return $self->{eof};
}
}
=back
=end internals
=head1 BUGS
The zero-wing easter egg only works through the Makefile.PL
compatibility mode. On the other hand, "./Build your time" would not
sound quite right, would it?
Perhaps the L</Dependent Option Graph> features should be repackaged
as a standalone Module::Build plug-in.
=head1 SEE ALSO
L<My::Tests::Below>
t/maintainer/*.t
=cut
require My::Tests::Below unless caller;
1;
__END__
use Test::More "no_plan";
########### Dependent graph stuff ################
# We keep the tests in a separate package so that if we later decide
# to refactor the dependent graph stuff into a standalone
# Module::Build plug-in, a simple cut-n-paste operation will do the
# job.
do {
# We re-route the process of creating a Module::Build object to
# a fake package, so as not to make Module::Build itself part
# of the tests over the dependent graph stuff:
local @My::Module::Build::ISA=qw(Fake::Module::Build);
package Fake::Module::Build;
sub new { bless {}, shift }
# Various stuff that is being called by My::Module::Build as part
# of this test, and that we therefore need to stub out:
no warnings "redefine";
local *My::Module::Build::maintainer_mode_enabled = sub { 0 };
local *My::Module::Build::subclass = sub {
my ($self, %opts) = @_;
eval <<'HEADER' . $opts{code}; die $@ if $@;
package Fake::Subclass;
BEGIN { our @ISA=qw(My::Module::Build); }
HEADER
return "Fake::Subclass";
};
sub notes {
my ($self, $k, @v) = @_;
if (@v) { $self->{notes}->{$k} = $v[0]; }
return $self->{notes}->{$k};
}
# "batch" version of ->prompt()
our %answers = ("Install module foo?" => 1);
sub prompt {
my ($self, $question) = @_;
die "Unexpected question $question" if
(! exists $answers{$question});
return delete $answers{$question}; # Will not answer twice
# the same question
}
package main_screen; # Do not to pollute the namespace of "main" with
# the "use" directives below - Still keeping refactoring in mind.
BEGIN { *write_file = \&My::Module::Build::write_file;
*read_file = \&My::Module::Build::read_file; }
use Test::More;
use Fatal qw(mkdir chdir);
local @ARGV = qw(--noinstall-everything);
my $define_options =
My::Tests::Below->pod_code_snippet("option-graph");
$define_options =~ s/\.\.\.//g;
my $builder = eval $define_options; die $@ if $@;
( run in 0.726 second using v1.01-cache-2.11-cpan-787462296c9 )