Subject: | bug in Test::Harness |
Date: | Mon, 25 Aug 2014 16:09:56 +0100 |
To: | <bug-test-harness [...] rt.cpan.org> |
From: | <richard.matyas [...] barclays.com> |
Under Windows, regression.t crashes with '""C:\Program' is not recognized as an internal or external command, operable program or batch file.
This is because Perl in Windows sits in a path containing a whitespace.
TAP::Parser::Iterator::Process::_initialize(blib/lib/TAP/Parser/Iterator/Process.pm:174):
$ = TAP::Parser::Iterator::Process::_initialize(ref(TAP::Parser::Iterator::Process), ref(HASH)) called from file `blib/lib/TAP/Object.pm' line 55
$ = TAP::Object::new('TAP::Parser::Iterator::Process', ref(HASH)) called from file `blib/lib/TAP/Parser/SourceHandler/Perl.pm' line 251
$ = TAP::Parser::SourceHandler::Perl::_create_iterator('TAP::Parser::SourceHandler::Perl', ref(TAP::Parser::Source), ref(ARRAY), ref(CODE), ref(CODE)) called from file `blib/lib/TAP/Parser/SourceHandler/Perl.pm' line 245
$ = TAP::Parser::SourceHandler::Perl::_run('TAP::Parser::SourceHandler::Perl', ref(TAP::Parser::Source), ref(ARRAY), ref(ARRAY)) called from file `blib/lib/TAP/Parser/SourceHandler/Perl.pm' line 151
$ = TAP::Parser::SourceHandler::Perl::make_iterator('TAP::Parser::SourceHandler::Perl', ref(TAP::Parser::Source)) called from file `blib/lib/TAP/Parser/IteratorFactory.pm' line 217
$ = TAP::Parser::IteratorFactory::make_iterator(ref(TAP::Parser::IteratorFactory), ref(TAP::Parser::Source)) called from file `blib/lib/TAP/Parser.pm' line 470
$ = TAP::Parser::_initialize(ref(TAP::Parser), ref(HASH)) called from file `blib/lib/TAP/Object.pm' line 55
$ = TAP::Object::new('TAP::Parser', ref(HASH)) called from file `t\regression.t' line 3292
$ = main::analyze_test('bailout', ref(ARRAY), ref(HASH)) called from file `t\regression.t' line 3234
$ = eval {...} called from file `t\regression.t' line 3234
The issue is that the $command is double quoted twice, from TAP::Parser::SourceHandler::Perl sub get_perl, second time TAP::Parser::Iterator::Process sub _initialize line 173.
Diff fixing this:
Left file: C:\Users\matyasri\AppData\Local\Temp\p4v\PRGDWM355436_qaperforce_1666\depot\QA\Toolbox\main.br\CPAN\Test-Harness\3.33\src\lib\TAP\Parser\Iterator\Process#1.pm
Right file: C:\Users\matyasri\AppData\Local\Temp\p4v\PRGDWM355436_qaperforce_1666\depot\QA\Toolbox\main.br\CPAN\Test-Harness\3.33\src\lib\TAP\Parser\Iterator\Process#2.pm
171a172,173
Show quoted text
>
> # double quote items containing whitespace and no double quotes
173c175
< = join( ' ', map { $_ =~ /\s/ ? qq{"$_"} : $_ } @command );
---
Show quoted text> = join( ' ', map { $_ =~ /^[^"]*\s[^"]*$/ ? qq{"$_"} : $_ } @command );
Show quoted text_______________________________________________
This message is for information purposes only, it is not a recommendation, advice, offer or solicitation to buy or sell a product or service nor an official confirmation of any transaction. It is directed at persons who are professionals and is not intended for retail customer use. Intended for recipient only. This message is subject to the terms at: www.barclays.com/emaildisclaimer.
For important disclosures, please see: www.barclays.com/salesandtradingdisclaimer regarding market commentary from Barclays Sales and/or Trading, who are active market participants; and in respect of Barclays Research, including disclosures relating to specific issuers, please see http://publicresearch.barclays.com.
_______________________________________________