Sat Apr 15 13:40:53 2017: Request 121128 was acted upon. Transaction: Correspondence added by kbr...@cornell.edu Queue: Module-ScanDeps Subject: Re: [rt.cpan.org #121128] Test failures on Cygwin Broken in: (no value) Severity: (no value) Owner: Nobody Requestors: kbr...@cornell.edu Status: open Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=121128 >
On 4/15/2017 1:14 PM, Roderich Schupp via RT wrote: > <URL: https://rt.cpan.org/Ticket/Display.html?id=121128 > > > On 2017-04-15 07:44:44, kbr...@cornell.edu wrote: >> Attached. > > Yep, that is exactly the output you would get when forcing > t/10-case-insensitive-keys.t to run (not skip) on a case-sensitive filesystem. > >> By the way, my file system is set up to be case sensitive, which I guess >> is the same as case_intolerant. > > :) "case intolerant" sounds like some form of allergy to me :) >> I wonder if the problem is that the File::Spec >> module didn't detect this; shouldn't the test have been skipped? > > I looked at File::Spec::Cygwin (from Perl 5.24.1) and it has indeed a Cygwin > specific > File::Spec::case_tolerant. Sorry, I have no machine to test this, but on > first glance this test looks suspicious since there's no "use Cygwin": > > sub case_tolerant { > return 1 unless $^O eq 'cygwin' > and defined &Cygwin::mount_flags; > ... > > Do the following two oneliners produce different output? > > perl -E 'say "DEFINED" if defined &Cygwin::mount_flags' > perl -MCygwin -E 'say "DEFINED" if defined &Cygwin::mount_flags' Yes. $ perl -E 'say "DEFINED" if defined &Cygwin::mount_flags' DEFINED $ perl -MCygwin -E 'say "DEFINED" if defined &Cygwin::mount_flags' Can't locate Cygwin.pm in @INC (you may need to install the Cygwin module) (@INC contains: /usr/lib/perl5/site_perl/5.24/x86_64-cygwin-threads /usr/lib/perl5/site_perl/5.24 /usr/lib/perl5/vendor_perl/5.24/x86_64-cygwin-threads /usr/lib/perl5/vendor_perl/5.24 /usr/lib/perl5/5.24/x86_64-cygwin-threads /usr/lib/perl5/5.24 .). BEGIN failed--compilation aborted. Apparently there isn't actually a Cygwin module in the usual sense, but Cygwin::mount_flags is defined in the perl C source code, in cygwin/cygwin.c: newXSproto("Cygwin::mount_table", XS_Cygwin_mount_table, file, ""); But I think the real issue here is that File::Spec doesn't know how to test whether file systems are case sensitive on Cygwin. There's more to it than what can be found in the mount table. In any case, Module::ScanDeps seems to be fine. I'll file a bug report about File::Spec. Thanks, as always, for your help. Ken