You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@perl.apache.org by "Philippe M. Chiasson" <go...@ectoplasm.org> on 2004/11/14 00:59:15 UTC
[cpan #8418] Apache::Test Makefile enters infinite loop when running
without a connected terminal
Max Maischein via RT wrote:
>This message about Apache-Test was sent to you by corion@corion.net <co...@corion.net> via rt.cpan.org
>
>Full context and any attached attachments can be found at:
><URL: https://rt.cpan.org/Ticket/Display.html?id=8418 >
>
>Hello,
>
>the Apache::Test Makefile.PL enters an infinite loop when it is running
>without a connected terminal and can't find the path to httpd. This is
>very bad for CPAN testers who maybe don't have a httpd binary somewhere
>to be found, and where the testing runs unattended. Please use the
>prompt() function in ExtUtils::MakeMaker and don't enter a loop if the
>default is accepted, or detect that Makefile.PL is run in unattended
>mode and don't enter the loop at all.
>
>
We are already using ExtUtils::MakeMaker::prompt(), but the problem is
that we don't quite
handle non-console TTYs proprely and do indeed loop infinitely. Easy to
reproduce on a
system without httpd/apxs
Following patch fixes the problem for me.
Re: [cpan #8418] Apache::Test Makefile enters infinite loop when
running without a connected terminal
Posted by Stas Bekman <st...@stason.org>.
Stas Bekman wrote:
>>> Max Maischein via RT wrote:
>>>> the Apache::Test Makefile.PL enters an infinite loop when it is
>>>> running without a connected terminal and can't find the path to
>>>> httpd. This is very bad for CPAN testers who maybe don't have a
>>>> httpd binary somewhere to be found, and where the testing runs
>>>> unattended. Please use the prompt() function in ExtUtils::MakeMaker
>>>> and don't enter a loop if the default is accepted, or detect that
>>>> Makefile.PL is run in unattended mode and don't enter the loop at all.
[...]
> Index: lib/Apache/TestRun.pm
> ===================================================================
> --- lib/Apache/TestRun.pm (revision 106304)
> +++ lib/Apache/TestRun.pm (working copy)
> @@ -1284,6 +1284,9 @@
> sub skip_test_suite {
> my $no_doubt = shift;
>
> + # we can't prompt when there is no STDIN;
> + $no_doubt = 1 unless -t STDIN;
> +
> print qq[
>
> Running the test suite is important to make sure that the module that
> Index: lib/Apache/TestConfig.pm
> ===================================================================
> --- lib/Apache/TestConfig.pm (revision 106304)
> +++ lib/Apache/TestConfig.pm (working copy)
> @@ -2090,6 +2090,11 @@
> my $self = shift;
> my $conf_opts = shift;
>
> + unless (-t STDIN) {
> + error "STDIN is closed, can't run interactive config";
> + Apache::TestRun::skip_test_suite();
> + }
> +
> my $vars = $self->{vars};
>
> print qq[
In any case, it's in. Let me know if you still have problems with it.
--
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org
Re: [cpan #8418] Apache::Test Makefile enters infinite loop when
running without a connected terminal
Posted by Stas Bekman <st...@stason.org>.
Stas Bekman wrote:
> Philippe M. Chiasson wrote:
>
>> Max Maischein via RT wrote:
>>
>>> This message about Apache-Test was sent to you by corion@corion.net
>>> <co...@corion.net> via rt.cpan.org
>>>
>>> Full context and any attached attachments can be found at:
>>> <URL: https://rt.cpan.org/Ticket/Display.html?id=8418 >
>>>
>>> Hello,
>>>
>>> the Apache::Test Makefile.PL enters an infinite loop when it is
>>> running without a connected terminal and can't find the path to
>>> httpd. This is very bad for CPAN testers who maybe don't have a httpd
>>> binary somewhere to be found, and where the testing runs unattended.
>>> Please use the prompt() function in ExtUtils::MakeMaker and don't
>>> enter a loop if the default is accepted, or detect that Makefile.PL
>>> is run in unattended mode and don't enter the loop at all.
>
>
> for the future, this belongs to the httpd-test list, not here :)
>
>> We are already using ExtUtils::MakeMaker::prompt(), but the problem is
>> that we don't quite
>> handle non-console TTYs proprely and do indeed loop infinitely. Easy
>> to reproduce on a
>> system without httpd/apxs
>>
>> Following patch fixes the problem for me.
>
>
> -t STDOUT should work just as well, no need for \*. we already use that
> in TestTrace.pm.
>
>> + if ((lc($ans) eq 'skip' || !-t \*STDIN) && !$optional) {
>> Apache::TestRun::skip_test_suite();
>> next; # in case they change their mind
>
>
>> my $ans = ExtUtils::MakeMaker::prompt($prompt, $default);
>> - return if lc($ans) =~ /no/;
>> + return if lc($ans) =~ /no/ && -t \*STDIN;
>> }
>
>
> but why entering these functions at all, in the !-t mode? makes the
> logic complicated.
Max, how about this patch?
Index: lib/Apache/TestRun.pm
===================================================================
--- lib/Apache/TestRun.pm (revision 106304)
+++ lib/Apache/TestRun.pm (working copy)
@@ -1284,6 +1284,9 @@
sub skip_test_suite {
my $no_doubt = shift;
+ # we can't prompt when there is no STDIN;
+ $no_doubt = 1 unless -t STDIN;
+
print qq[
Running the test suite is important to make sure that the module that
Index: lib/Apache/TestConfig.pm
===================================================================
--- lib/Apache/TestConfig.pm (revision 106304)
+++ lib/Apache/TestConfig.pm (working copy)
@@ -2090,6 +2090,11 @@
my $self = shift;
my $conf_opts = shift;
+ unless (-t STDIN) {
+ error "STDIN is closed, can't run interactive config";
+ Apache::TestRun::skip_test_suite();
+ }
+
my $vars = $self->{vars};
print qq[
--
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org
Re: [cpan #8418] Apache::Test Makefile enters infinite loop when
running without a connected terminal
Posted by Stas Bekman <st...@stason.org>.
Philippe M. Chiasson wrote:
> Max Maischein via RT wrote:
>
>> This message about Apache-Test was sent to you by corion@corion.net
>> <co...@corion.net> via rt.cpan.org
>>
>> Full context and any attached attachments can be found at:
>> <URL: https://rt.cpan.org/Ticket/Display.html?id=8418 >
>>
>> Hello,
>>
>> the Apache::Test Makefile.PL enters an infinite loop when it is
>> running without a connected terminal and can't find the path to httpd.
>> This is very bad for CPAN testers who maybe don't have a httpd binary
>> somewhere to be found, and where the testing runs unattended. Please
>> use the prompt() function in ExtUtils::MakeMaker and don't enter a
>> loop if the default is accepted, or detect that Makefile.PL is run in
>> unattended mode and don't enter the loop at all.
for the future, this belongs to the httpd-test list, not here :)
> We are already using ExtUtils::MakeMaker::prompt(), but the problem is
> that we don't quite
> handle non-console TTYs proprely and do indeed loop infinitely. Easy to
> reproduce on a
> system without httpd/apxs
>
> Following patch fixes the problem for me.
-t STDOUT should work just as well, no need for \*. we already use that in
TestTrace.pm.
> + if ((lc($ans) eq 'skip' || !-t \*STDIN) && !$optional) {
> Apache::TestRun::skip_test_suite();
> next; # in case they change their mind
> my $ans = ExtUtils::MakeMaker::prompt($prompt, $default);
> - return if lc($ans) =~ /no/;
> + return if lc($ans) =~ /no/ && -t \*STDIN;
> }
but why entering these functions at all, in the !-t mode? makes the logic
complicated.
--
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org