-
Notifications
You must be signed in to change notification settings - Fork 560
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
core tests fail when built on FAT drive with Win32 OS on NTFS drive #6348
Comments
From elmisery_fathy@hotmail.comcase $PERL_CONFIG_SH in # This script is designed to provide a handy summary of the configuration # Note that the text lines /^Summary of/ .. /^\s*$/ are copied into !NO!SUBS! |
From elmisery_fathy@hotmail.comdear perl support <br><br><br><html><DIV>elmisery</DIV></html>
_________________________________________________________________ |
From @jkeenanThis ticket has been languishing in our bug queue since 2003. List: Is there anyone of Win32 who could take a look at the Word fathy elmisery: Have you tried any Perl distributions on Windows such Thank you very much. |
From @cpansproutOn Sat Apr 21 15:14:29 2012, jkeenan wrote:
The word document only contains a graphic. Here it is, attached as a -- Father Chrysostomos |
From [Unknown Contact. See original ticket]On Sat Apr 21 15:14:29 2012, jkeenan wrote:
The word document only contains a graphic. Here it is, attached as a -- Father Chrysostomos |
From @bulk88
That is a problem. The OP doesn't say what tests failed. Since these are |
From @jkeenanOn Sat Apr 21 19:02:57 2012, bulk88 wrote:
Thanks for your response. I propose that we keep the ticket open for 30 Thank you very much. |
From @bulk88My mistake, I see the error numbers that failed. for fs.t 2-5 involve NTFS POSIX hard links, whether link works is determined by if (defined &Win32::IsWinNT && Win32::IsWinNT()) { 7-9 are chmod, thats also dependent on NTFS and links check above test 11, egh, not sure if this is the same as OP's 5.8 tests, i cant comment 5 and 7 in stat.t again are link tests I'm going to blindly guess the OP has multiple partitions or perl isn't below done with perl 5.10.1 tests on 5.10.0 (best I can do) C:\Perl\t>perl ./io/fs.t C:\Perl\t> C:\Perl\t>perl ./op/stat.t # -MAC=(-3.47222222222222e-005 -3.47222222222222e-005 C:\Perl\t> |
From @doyClosing, since it doesn't appear that we have been able to reproduce this. -doy |
From [Unknown Contact. See original ticket]Closing, since it doesn't appear that we have been able to reproduce this. -doy |
@doy - Status changed from 'open' to 'resolved' |
From @bulk88On Tue Jul 03 00:06:38 2012, doy wrote:
Someone with ticket privilege needs to change this ticket to open, see last paragraph of this post for details. I previously was not able to reproduce this when I last looked at this ticket, but by chance, I got a nearly identical test fail list on 5.19 blead to the OP from 2003. This is how to reproduce it. The Windows OS drive is NTFS, but you build Perl on FAT32 or FAT16. 1 Mechanical HD with Win OS on NTFS and 2nd FAT32 partition or usb stick with FAT16 made these failures for me. FAT32 build drive, OS on NTFS. OS is NOT on C: drive here. C:\perl519\src\t> ..\perl.exe -I..\lib op/stat.t # -MAC=(-6.94444444444444e-005 0.601134259259259 -5.78703703703704e-005) C:\perl519\src\t> ..\perl.exe -I..\lib io/fs.t building perl on usb stick (F: drive) usb stick ../lib/vmsish.t ................................................... ok Test Summary Report io/fs.t (Wstat: 0 Tests: F:\perl\win32> I didn't step it or write additional code, so this analysis may be shoddy. The problem with io/fs.t is this check if (defined &Win32::IsWinNT && Win32::IsWinNT()) { Win32::FsType's docs are Win32::FsType() [CORE] Returns the name of the filesystem of the currently active drive (like 'FAT' or 'NTFS'). In list context it returns three values: (FSTYPE, FLAGS, MAXCOMPLEN). FSTYPE is the filesystem type as before. FLAGS is a combination of values of the following table: "currently active drive" is the problem. There is probably something to do with that code not working right. F:\perl\win32>cd ..\t F:\perl\t>perl -I..\lib harness io/fs.t Test Summary Report io/fs.t (Wstat: 0 Tests: 55 Failed: 8) F:\perl\t> Test Summary Report op/stat.t (Wstat: 0 Tests: 113 Failed: 3) F:\perl\t> A simple test says Win32::FsType superficially works, but, again, cwd might be a mess in harness/test.pl/other framework parts, or a bug in perlhost layer. F:\perl\t>perl -I..\lib -E" say Win32::FsType()" F:\perl\t> Due to me being low on time, I want to get my thoughts out and into the record. This should get a "Known Issues" for 5.20 if nobody investigates and fixes the test fails or fixes core. I got no responses on p5p IRC whether to open new ticket or reply to this. So I reply to this ticket. Someone with ticket privilege needs to change this ticket to open. Also this ticket should be renamed to "core tests fail when built on FAT drive with Win32 OS on NTFS drive", since "some tests fail" is a horrible title for this ticket. -- |
@nwc10 - Status changed from 'resolved' to 'open' |
From @khwilliamsonRe-opening at the request of bulk88 |
From @nwc10On Mon, Mar 03, 2014 at 11:49:54AM -0800, bulk88 via RT wrote:
I've re-opened it (which is fast, as I'm logged in) Sorry, I don't have time to figure out anything useful to say about the Nicholas Clark |
From @HugmeirOn Mon, Mar 3, 2014 at 8:49 PM, bulk88 via RT <perlbug-followup@perl.org>wrote:
To add to this, those tests (and some others from POSIX.pm) also fail on |
From @bulk88Some testing point to commit 0c5d4ba being responsible for io/fs.t failing, all test file runs are done with blead, even if the test file is a decade old using the .t after this commit Author: Jarkko Hietaniemi <jhi@iki.fi> 2001-12-11 22:09:37 io/fs cleanup: testing on win32/cygwin/netware/djgpp/... F:\perl\t>perl -I..\lib io/fs_0c5d4ba.t not ok 18 - Skip - granularity of the atime/mtime F:\perl\t> using the commit right before " io/fs cleanup: testing on win32/cygwin/netware/djgpp/..." Author: Jarkko Hietaniemi <jhi@iki.fi> 2001-10-31 10:20:01 Skip message nit. F:\perl\t>perl -I..\lib io/fs_79316e7.t The refactoring in " io/fs cleanup: testing on win32/cygwin/netware/djgpp/..." is faulty since it added + if (Win32::FsType() eq 'NTFS') { is completely redundant, since there is no "else" that will set $has_link to false if the FS is not NTFS. pp_link on Win32 is implemented as http://msdn.microsoft.com/en-us/library/windows/desktop/aa363860%28v=vs.85%29.aspx CreateHardLinkW in win32.c in win32_link(), CreateHardLinkW returned Win32 error 1, ERROR_INVALID_FUNCTION when I ran blead fs.t on a FAT drive build dir. There is a comment in win32.c default: so it looks like C guts do the right thing. Adding the else block fixes fs.t for Win32 on FAT. fixed blead fs.t F:\perl\t>perl -I..\lib io/fs.t NOW FOR OP/STAT.T commit de5a37b stat.t portability, the LAST VMS exception! p4raw-id: //depot/perl@13470 F:\perl\t>perl -I..\lib op/stat_de5a37b.t Revision: cc25fa7 Message-ID: <20011204234010.B14333@blackrider> p4raw-id: //depot/perl@13469 F:\perl\t>perl -I..\lib op/stat_cc25fa7.t F:\perl\t> So commit "stat.t portability, the LAST VMS exception!" introduced test fails 5 and 7. In commit just previous to "stat.t portability, the LAST VMS exception!", which is "Re: [PATCH t/op/stat.t t/test.pl] stat.t cleanup, first pass" test 28 fails not ok 28 - unlink This is because earlier in "Re: [PATCH t/op/stat.t t/test.pl] stat.t cleanup, first pass" stat.t, SKIP: { skip "No hard links", 5 if $Is_Dosish || $Is_MPE; The skip was executed and in test 28, which is ok(unlink($tmpfile_link), 'unlink'); therefore, $tmpfile_link, rightfully doesn't exist because of the earlier skip(). So the tests failed because SKIP: { skip "No hard links", 5 if $Is_Dosish || $Is_MPE; became SKIP: { Now, link, is implemented on Win32, so trying it in the new commit is fine (stop using $Is_Dosish is correct behavior), but it only works on NTFS. stat.t doesn't have the Win32::FsType check that io/fs.t has. It probably needs the Win32::FsType check. The above explains test fails 5 and 7, but not test fail 86, "# Failed test 86 - negative -A works at op/stat.t line 504". Perlport says "-g , -k , -l , -u , -A are not particularly meaningful. (Win32, VMS, RISC OS)" in commit \|/ which added the file perlport. Author: Gurusamy Sarathy <gsar@cpan.org> 1998-07-10 20:25:17 add perlport.pod v1.23 from Chris Nandor <pudge@pobox.com> Here is a run of blead's stat.t which shows test 86 failing. F:\perl\t>perl -I..\lib op/stat.t # -MAC=(-8.10185185185185e-005 0.891284722222222 -5.78703703703704e-005) F:\perl\t> I am not sure what -A is supposed to exactly return or do, perlfunc just says # -M Script start time minus file modification time, in days. and the test above gives # -MAC=(-8.10185185185185e-005 0.891284722222222 -5.78703703703704e-005) a positive number for "-A". -A in stat.t was added, not refactored (brand new tests added as a bug fix, not refactoring of old ones), in Author: Ilya Zakharevich <ilya@math.berkeley.edu> 2003-09-18 07:02:02 -M -A -C broken I think from reading the code (no time to step) fs.t uses $accurate_timestamps which is NTFS sensistive to check atime or not. stat.t has no such code, isntead it does open(FOO, ">$tmpfile") || DIE("Can't open temp test file: $!"); my($nlink, $mtime, $ctime) = (stat(FOO))[$NLINK, $MTIME, $CTIME]; # The clock on a network filesystem might be different from the -- |
From @bulk88Here is a patch for io/fs.t failing. op/stat.t needs responses from the ML before I can decide if I can do something about it. Also a perldelta will be needed. I guess it will be part of op/stat.t since this ticket will stay open even after this patch was applied due to the unresolved op/stat.t failures. -- |
From @bulk880001-perl-21442-fix-fs.t-failures-on-Win32-FAT-drive.patchFrom 59e95818283c359852c6adf8c335695c2f159e40 Mon Sep 17 00:00:00 2001
From: bulk88 <bulk88@hotmail.com>
Date: Wed, 5 Mar 2014 07:42:21 -0500
Subject: [PATCH] [perl #21442] fix fs.t failures on Win32 FAT drive
See ticket for details. This commit does not fix all issues in #21442.
---
t/io/fs.t | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/t/io/fs.t b/t/io/fs.t
index 78d22e2..5e82b45 100644
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -44,6 +44,9 @@ if (defined &Win32::IsWinNT && Win32::IsWinNT()) {
$has_link = 1;
$accurate_timestamps = 1;
}
+ else {
+ $has_link = 0;
+ }
}
my $needs_fh_reopen =
--
1.7.9.msysgit.0
|
From @bulk88On Wed Mar 05 04:47:12 2014, bulk88 wrote:
Bump. -- |
From @tonycozOn Wed Mar 05 04:47:12 2014, bulk88 wrote:
Attached is a patch for the t/op/stat.t failure. This only avoids the failure on MSWin32, and doesn't try to avoid the failure if you test on FAT on say darwin or Linux. Tony |
From @tonycoz0001-perl-21442-skip-link-tests-where-the-filesystem-does.patchFrom 659e10a2a275d0b04b04f86c1c8f2aef1a54feee Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Wed, 26 Mar 2014 11:35:48 +1100
Subject: [PATCH] [perl #21442] skip link() tests where the filesystem doesn't support them
---
t/op/stat.t | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/t/op/stat.t b/t/op/stat.t
index 91ce396..b325c56 100644
--- a/t/op/stat.t
+++ b/t/op/stat.t
@@ -93,6 +93,7 @@ close(FOO);
sleep 2;
+my $ERROR_INVALID_FUNCTION = 1; # win32 error code
SKIP: {
unlink $tmpfile_link;
@@ -100,6 +101,12 @@ SKIP: {
skip "link() unimplemented", 6 if $@ =~ /unimplemented/;
is( $@, '', 'link() implemented' );
+
+ if ($tmpfile_link &&
+ ($^O eq "MSWin32" && $^E == $ERROR_INVALID_FUNCTION)) {
+ skip "link() not available on this filesystem", 5
+ }
+
ok( $lnk_result, 'linked tmp testfile' );
ok( chmod(0644, $tmpfile), 'chmoded tmp testfile' );
--
1.7.4.msysgit.0
|
From @bulk88On Tue Mar 25 17:46:18 2014, tonyc wrote:
So when will these things start getting commited? -- |
From @tonycozOn Thu, Apr 03, 2014 at 11:23:49PM -0700, bulk88 via RT wrote:
Next week, I'm testing other FAT on Win32 fixes, and until last night Tony |
From @steve-m-hayOn Thu Apr 03 23:47:37 2014, tonyc wrote:
Out of the box I currently get these failures on FAT32: Test Summary Report io/fs.t (Wstat: 0 Tests: 55 Failed: 8) With the two patches from above, io/fs.t is now ok, but op/stat.t still fails test 86, and win32/fs.t hasn't been addressed: K:\perl\t>..\perl harness -v op\stat.t K:\perl\t>..\perl harness -v win32\fs.t 1..4 |
From @bulk88On Thu Apr 03 23:47:37 2014, tonyc wrote:
No failures on smoke-me/tonyc/fatfix ../lib/vars.t ..................................................... ok Test Summary Report ../cpan/IPC-Cmd/t/01_IPC-Cmd.t (Wstat: 256 Test F:\perl\win32>cd ..\t F:\perl\t>perl harness ../cpan/IPC-Cmd/t/01_IPC-Cmd.t F:\perl\t>perl -I..\lib harness ../cpan/IPC-Cmd/t/01_IPC-Cmd.t F:\perl\t> -- |
From @steve-m-hayOn 8 April 2014 00:20, Steve Hay via RT <perlbug-followup@perl.org> wrote:
I hadn't noticed the smoke-me/tonyc/fatfix branch then, but having |
@tonycoz - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#21442 (status was 'resolved')
Searchable as RT21442$
The text was updated successfully, but these errors were encountered: