Skip to content
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

Closed
p5pRT opened this issue Mar 3, 2003 · 31 comments
Closed

core tests fail when built on FAT drive with Win32 OS on NTFS drive #6348

p5pRT opened this issue Mar 3, 2003 · 31 comments

Comments

@p5pRT
Copy link

p5pRT commented Mar 3, 2003

Migrated from rt.perl.org#21442 (status was 'resolved')

Searchable as RT21442$

@p5pRT
Copy link
Author

p5pRT commented Mar 3, 2003

From elmisery_fathy@hotmail.com

case $PERL_CONFIG_SH in
'')
  if test -f config.sh; then TOP=.;
  elif test -f ../config.sh; then TOP=..;
  elif test -f ../../config.sh; then TOP=../..;
  elif test -f ../../../config.sh; then TOP=../../..;
  elif test -f ../../../../config.sh; then TOP=../../../..;
  else
  echo "Can't find the perl config.sh file produced by Configure";
  exit 1
  fi
  . $TOP/config.sh
  ;;
esac
: This forces SH files to create target in same directory as SH file.
: This is so that make depend always knows where to find SH derivatives.
case "$0" in
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
esac
echo "Extracting myconfig (with variable substitutions)"
$spitshell >myconfig <<!GROK!THIS!
$startsh

# This script is designed to provide a handy summary of the configuration
# information being used to build perl. This is especially useful if you
# are requesting help from comp.lang.perl.misc on usenet or via mail.

# Note that the text lines /^Summary of/ .. /^\s*$/ are copied into
Config.pm.
cat <<'!NO!SUBS!'
Summary of my $package (revision $baserev $version_patchlevel_string)
configuration​:
  Platform​:
  osname=$osname, osvers=$osvers, archname=$archname
  uname='$myuname'
  config_args='$config_args'
  hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction
  usethreads=$usethreads use5005threads=$use5005threads
useithreads=$useithreads usemultiplicity=$usemultiplicity
  useperlio=$useperlio d_sfio=$d_sfio uselargefiles=$uselargefiles
usesocks=$usesocks
  use64bitint=$use64bitint use64bitall=$use64bitall
uselongdouble=$uselongdouble
  usemymalloc=$usemymalloc, bincompat5005=undef
  Compiler​:
  cc='$cc', ccflags ='$ccflags',
  optimize='$optimize',
  cppflags='$cppflags'
  ccversion='$ccversion', gccversion='$gccversion',
gccosandvers='$gccosandvers'
  intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize,
doublesize=$doublesize, byteorder=$byteorder
  d_longlong=$d_longlong, longlongsize=$longlongsize,
d_longdbl=$d_longdbl, longdblsize=$longdblsize
  ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize,
Off_t='$lseektype', lseeksize=$lseeksize
  alignbytes=$alignbytes, prototype=$prototype
  Linker and Libraries​:
  ld='$ld', ldflags ='$ldflags'
  libpth=$libpth
  libs=$libs
  perllibs=$perllibs
  libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
  gnulibc_version='$gnulibc_version'
  Dynamic Linking​:
  dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
  cccdlflags='$cccdlflags', lddlflags='$lddlflags'

!NO!SUBS!
!GROK!THIS!
chmod 755 myconfig
$eunicefix myconfig

@p5pRT
Copy link
Author

p5pRT commented Mar 3, 2003

@p5pRT
Copy link
Author

p5pRT commented Mar 5, 2003

From elmisery_fathy@hotmail.com

dear perl support
that is the reply to your message about my problem with the some tests
fails. can you help me about this problem.
thanks for your help.

<br><br><br><html><DIV>elmisery</DIV></html>

case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
elif test -f ../config.sh; then TOP=..;
elif test -f ../../config.sh; then TOP=../..;
elif test -f ../../../config.sh; then TOP=../../..;
elif test -f ../../../../config.sh; then TOP=../../../..;
else
echo "Can't find the perl config.sh file produced by Configure";
exit 1
fi
. $TOP/config.sh
;;
esac
​: This forces SH files to create target in same directory as SH file.
​: This is so that make depend always knows where to find SH derivatives.
case "$0" in
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
esac
echo "Extracting myconfig (with variable substitutions)"
$spitshell >myconfig <<!GROK!THIS!
$startsh

# This script is designed to provide a handy summary of the configuration
# information being used to build perl. This is especially useful if you
# are requesting help from comp.lang.perl.misc on usenet or via mail.

# Note that the text lines /^Summary of/ .. /^\s*$/ are copied into
Config.pm.
cat <<'!NO!SUBS!'
Summary of my $package (revision $baserev $version_patchlevel_string)
configuration​:
Platform​:
osname=$osname, osvers=$osvers, archname=$archname
uname='$myuname'
config_args='$config_args'
hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction
usethreads=$usethreads use5005threads=$use5005threads
useithreads=$useithreads usemultiplicity=$usemultiplicity
useperlio=$useperlio d_sfio=$d_sfio uselargefiles=$uselargefiles
usesocks=$usesocks
use64bitint=$use64bitint use64bitall=$use64bitall
uselongdouble=$uselongdouble
usemymalloc=$usemymalloc, bincompat5005=undef
Compiler​:
cc='$cc', ccflags ='$ccflags',
optimize='$optimize',
cppflags='$cppflags'
ccversion='$ccversion', gccversion='$gccversion',
gccosandvers='$gccosandvers'
intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize,
doublesize=$doublesize, byteorder=$byteorder
d_longlong=$d_longlong, longlongsize=$longlongsize,
d_longdbl=$d_longdbl, longdblsize=$longdblsize
ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize,
Off_t='$lseektype', lseeksize=$lseeksize
alignbytes=$alignbytes, prototype=$prototype
Linker and Libraries​:
ld='$ld', ldflags ='$ldflags'
libpth=$libpth
libs=$libs
perllibs=$perllibs
libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
gnulibc_version='$gnulibc_version'
Dynamic Linking​:
dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun,
ccdlflags='$ccdlflags'
cccdlflags='$cccdlflags', lddlflags='$lddlflags'

!NO!SUBS!
!GROK!THIS!
chmod 755 myconfig
$eunicefix myconfig

_________________________________________________________________
STOP MORE SPAM with the new MSN 8 and get 2 months FREE*
http​://join.msn.com/?page=features/junkmail

@p5pRT
Copy link
Author

p5pRT commented Apr 21, 2012

From @jkeenan

This ticket has been languishing in our bug queue since 2003.

List​: Is there anyone of Win32 who could take a look at the Word
document the OP provided and offer some suggestions?

fathy elmisery​: Have you tried any Perl distributions on Windows such
as Win32 or Strawberry Perl?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Apr 21, 2012

From @cpansprout

On Sat Apr 21 15​:14​:29 2012, jkeenan wrote​:

This ticket has been languishing in our bug queue since 2003.

List​: Is there anyone of Win32 who could take a look at the Word
document the OP provided and offer some suggestions?

The word document only contains a graphic. Here it is, attached as a
PNG. It’s not very helpful.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Apr 21, 2012

@p5pRT
Copy link
Author

p5pRT commented Apr 21, 2012

From [Unknown Contact. See original ticket]

On Sat Apr 21 15​:14​:29 2012, jkeenan wrote​:

This ticket has been languishing in our bug queue since 2003.

List​: Is there anyone of Win32 who could take a look at the Word
document the OP provided and offer some suggestions?

The word document only contains a graphic. Here it is, attached as a
PNG. It’s not very helpful.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Apr 22, 2012

From @bulk88

The word document only contains a graphic. Here it is, attached as a
PNG. It’s not very helpful.

That is a problem. The OP doesn't say what tests failed. Since these are
I/O failures in general looking at the 2 test files, and only happened
on OP's machine, I'm going to guess a firewall or virus scanner or
security permissions caused them. If someone can reproduce them I'll
look into it. I dont think anyone will be able to, I couldn't with those
2 test files with my VC Perl 5.15 and AP 5.10.

@p5pRT
Copy link
Author

p5pRT commented Apr 22, 2012

From @jkeenan

On Sat Apr 21 19​:02​:57 2012, bulk88 wrote​:

The word document only contains a graphic. Here it is, attached as a
PNG. It’s not very helpful.

That is a problem. The OP doesn't say what tests failed. Since these are
I/O failures in general looking at the 2 test files, and only happened
on OP's machine, I'm going to guess a firewall or virus scanner or
security permissions caused them. If someone can reproduce them I'll
look into it. I dont think anyone will be able to, I couldn't with those
2 test files with my VC Perl 5.15 and AP 5.10.

Thanks for your response. I propose that we keep the ticket open for 30
days. If we get the errors reproduced, you can take up the
investigation. Otherwise, we'll close the ticket.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Apr 22, 2012

From @bulk88

My 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()) {
  if (Win32​::FsType() eq 'NTFS') {
  $has_link = 1;
  $accurate_timestamps = 1;
  }
}
FsType gets the FS type of the current directory, as thought of by the
Windows API. This might not be the current directory thought of by the
Perl Language (ithreads, etc).

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
install on C​: or C​: isn't the windows OS dir, and somehow perl thought
it was running on NTFS when it was actually a fat partition.

below done with perl 5.10.1 tests on 5.10.0 (best I can do)

C​:\Perl\t>perl ./io/fs.t
1..51
ok 1 # skip bogus umask
ok 2 - link a b
ok 3 - link b c
ok 4 - link count of triply-linked file
ok 5 - mode of triply-linked file
ok 6 - chmod succeeding
ok 7 - chmod going through
ok 8 - chmod two files
ok 9 - chmod going through to c
ok 10 - chmod going through to x
ok 11 - unlink two files
ok 12 - ino of removed file b should be undef
ok 13 - ino of removed file x should be undef
ok 14 # skip no fchmod
ok 15 # skip no fchmod
ok 16 # skip no fchmod
ok 17 # skip no fchmod
ok 18 # skip no fchmod
ok 19 # skip no fchown
ok 20 - fchmod is unimplemented
ok 21 - fchown is unimplemented
ok 22 - rename a b
ok 23 - ino of renamed file a should be undef
ok 24 - utime
ok 25 # skip bogus inode num
# atime - 500000000 mtime - 500000001 delta - 1
ok 26 - atime
ok 27 - mtime
# utime undef, undef --> 1335072593, 1335072593
ok 28 - atime
ok 29 - mtime
ok 30 # skip no futimes
ok 31 # skip no futimes
ok 32 # skip no futimes
ok 33 # skip no futimes
ok 34 - futimes is unimplemented
ok 35 - unlink b
ok 36 - ino of unlinked file b should be undef
ok 37 # skip No symbolic links found to test with
ok 38 # skip No symbolic links found to test with
ok 39 - truncation to five bytes
ok 40 - truncation to zero bytes
ok 41 - fh resize to 200
ok 42 - fh resize to 200 working (filename check)
ok 43 - fh resize to zero
ok 44 - fh resize to zero working (filename check)
ok 45 - fh resize by IO slot
ok 46 - fh resize by IO slot working
ok 47 - rename working
ok 48 - rename on directories
ok 49 - rename on directories working
ok 50 - extend sp in pp_chmod
ok 51 - extend sp in pp_chown

C​:\Perl\t>

C​:\Perl\t>perl ./op/stat.t
1..107
ok 1 - nlink on regular file
ok 2 # skip mtime and ctime not reliable
ok 3 # skip mtime and ctime not reliable
ok 4 - link() implemented
ok 5 - linked tmp testfile
ok 6 - chmoded tmp testfile
ok 7 - Link count on hard linked file
ok 8 # skip No ctime concept on this OS
ok 9 # skip No ctime concept on this OS
ok 10 - -z on empty filehandle
ok 11 - and -s
ok 12 - -z on empty file
ok 13 - and -s
ok 14 - -z on empty filehandle
ok 15 - and -s
ok 16 - -z on non-empty file
ok 17 - and -s
ok 18 - chmod 0000
ok 19 # skip Can't test -r or -w meaningfully if you're superuser
ok 20 # skip Can't test -r or -w meaningfully if you're superuser
ok 21 - -x
ok 22 - chmod 0700
ok 23 - -r
ok 24 - -w
ok 25 # skip -x simply determines if a file ends in an executable suffix
ok 26 - -f
ok 27 - !-d
ok 28 - -d cwd
ok 29 - !-f cwd
ok 30 # skip symlink not implemented
ok 31 # skip symlink not implemented
ok 32 # skip symlink not implemented
ok 33 - -o
ok 34 - -e
ok 35 - -e on unlinked file
ok 36 # skip No character, socket or block special files
ok 37 # skip No character, socket or block special files
ok 38 # skip No character, socket or block special files
ok 39 # skip No character, socket or block special files
ok 40 # skip No character, socket or block special files
ok 41 # skip No character, socket or block special files
ok 42 # skip Can't find a setuid file to test with
ok 43 # skip Can't find a setuid file to test with
ok 44 # skip Can't find a setuid file to test with
ok 45 # skip Test uses unixisms
ok 46 # skip Test uses unixisms
ok 47 - !-t on closed TTY filehandle
ok 48 - -t on STDIN
ok 49 # skip No null device to test with
ok 50 - -T
ok 51 - !-B
ok 52 - -B
ok 53 - !-T
ok 54 - -T on filehandle causes no errors
ok 55 - -T
ok 56 - !-B
ok 57 - after readline
ok 58 - still -T
ok 59 - still -B
ok 60 - reopened and after readline
ok 61 - still -T
ok 62 - still !-B
ok 63 - after seek
ok 64 - still -T
ok 65 - still !-B
ok 66 - at EOF
ok 67 - still -T
ok 68 - now -B
ok 69 # skip No null device to test with
ok 70 # skip No null device to test with
ok 71 - bare -f uses $_
ok 72 - -f() "
ok 73 - stat returns full 13 elements
ok 74 - lstat _ croaks after stat
ok 75 - -l _ croaks after stat
ok 76 - lstat _ ok after lstat
ok 77 - -l _ ok after lstat
ok 78 # skip No lstat
ok 79 # skip No lstat
# Zzz...
ok 80 - can create tmp file
# time=1335072680, stat=(2 0 33206 1 0 0 2 0 1335072683 1335072683
1335072683 )

# -MAC=(-3.47222222222222e-005 -3.47222222222222e-005
-3.47222222222222e-005)
ok 81 - negative -M works
ok 82 - negative -A works
ok 83 - negative -C works
ok 84 - unlink tmp file
ok 85 - can create temp file
ok 86 - -T _ doesn't break the statbuffer
ok 87 # skip No dirfd()
ok 88 # skip No dirfd()
ok 89 # skip No dirfd()
ok 90 # skip No dirfd()
ok 91 # skip No dirfd()
ok 92 # skip No dirfd()
ok 93 # skip No dirfd()
ok 94 # skip No dirfd()
ok 95 # skip No dirfd()
ok 96 - can create temp file
ok 97 - stat(*F{IO}) works
ok 98 - single file tests work with *F{IO}
ok 99 # skip No dirfd()
ok 100 # skip No dirfd()
ok 101 # skip No dirfd()
ok 102 # skip No dirfd()
ok 103 # skip No dirfd()
ok 104 # skip No dirfd()
ok 105 # skip No dirfd()
ok 106 # skip No dirfd()
ok 107 # skip No dirfd()

C​:\Perl\t>

@p5pRT
Copy link
Author

p5pRT commented Jul 3, 2012

From @doy

Closing, since it doesn't appear that we have been able to reproduce this.

-doy

@p5pRT
Copy link
Author

p5pRT commented Jul 3, 2012

From [Unknown Contact. See original ticket]

Closing, since it doesn't appear that we have been able to reproduce this.

-doy

@p5pRT
Copy link
Author

p5pRT commented Jul 3, 2012

@doy - Status changed from 'open' to 'resolved'

@p5pRT
Copy link
Author

p5pRT commented Mar 3, 2014

From @bulk88

On Tue Jul 03 00​:06​:38 2012, doy wrote​:

Closing, since it doesn't appear that we have been able to reproduce this.

-doy

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
1..113
ok 1 - nlink on regular file
ok 2 # skip mtime and ctime not reliable
ok 3 # skip mtime and ctime not reliable
ok 4 - link() implemented
not ok 5 - linked tmp testfile
# Failed test 5 - linked tmp testfile at op/stat.t line 103
ok 6 - chmoded tmp testfile
not ok 7 - Link count on hard linked file
# Failed test 7 - Link count on hard linked file at op/stat.t line 113
# got "1"
# expected "2"
ok 8 # skip No ctime concept on this OS
ok 9 # skip No ctime concept on this OS
ok 10 - -z on empty filehandle
ok 11 - and -s
ok 12 - -z on empty file
ok 13 - and -s
ok 14 - -z on empty filehandle
ok 15 - and -s
ok 16 - -z on non-empty file
ok 17 - and -s
ok 18 - chmod 0000
ok 19 # skip Can't test -r or -w meaningfully if you're superuser
ok 20 # skip Can't test -r or -w meaningfully if you're superuser
ok 21 - -x
ok 22 - chmod 0700
ok 23 - -r
ok 24 - -w
ok 25 # skip -x simply determines if a file ends in an executable suffix
ok 26 - -f
ok 27 - !-d
ok 28 - -d cwd
ok 29 - !-f cwd
ok 30 # skip symlink not implemented
ok 31 # skip symlink not implemented
ok 32 # skip symlink not implemented
ok 33 - -o
ok 34 - -e
ok 35 - -e on unlinked file
ok 36 # skip No character, socket or block special files
ok 37 # skip No character, socket or block special files
ok 38 # skip No character, socket or block special files
ok 39 # skip No character, socket or block special files
ok 40 # skip No character, socket or block special files
ok 41 # skip No character, socket or block special files
ok 42 # skip Can't find a setuid file to test with
ok 43 # skip Can't find a setuid file to test with
ok 44 # skip Can't find a setuid file to test with
ok 45 # skip Test uses unixisms
ok 46 # skip Test uses unixisms
ok 47 - !-t on closed TTY filehandle
ok 48 - -t on STDIN
ok 49 # skip No null device to test with
ok 50 - -T
ok 51 - !-B
ok 52 - -B
ok 53 - !-T
ok 54 - -T on filehandle causes no errors
ok 55 - -T
ok 56 - !-B
ok 57 - after readline
ok 58 - still -T
ok 59 - still -B
ok 60 - reopened and after readline
ok 61 - still -T
ok 62 - still !-B
ok 63 - after seek
ok 64 - still -T
ok 65 - still !-B
ok 66 - at EOF
ok 67 - still -T
ok 68 - now -B
ok 69 # skip No null device to test with
ok 70 # skip No null device to test with
ok 71 - bare -f uses $_
ok 72 - -f() "
ok 73 - stat returns full 13 elements
ok 74 - lstat _ croaks after stat
ok 75 - lstat *_ croaks after stat
ok 76 - lstat \*_ croaks after stat
ok 77 - -l _ croaks after stat
ok 78 - lstat _ ok after lstat
ok 79 - -l _ ok after lstat
ok 80 - stat $ioref resets stat type
ok 81 - lstat $ioref reverts to regular fstat
ok 82 # skip No lstat
ok 83 # skip No lstat
# Zzz...
ok 84 - can create tmp file
# time=1393701938, stat=(2 0 33206 1 0 0 2 0 1393650000 1393701944 1393701943 )

# -MAC=(-6.94444444444444e-005 0.601134259259259 -5.78703703703704e-005)
ok 85 - negative -M works
not ok 86 - negative -A works
# Failed test 86 - negative -A works at op/stat.t line 504
ok 87 - negative -C works
ok 88 - unlink tmp file
ok 89 - can create temp file
ok 90 - -T _ doesn't break the statbuffer
ok 91 # skip No lstat
ok 92 # skip No dirfd()
ok 93 # skip No dirfd()
ok 94 # skip No dirfd()
ok 95 # skip No dirfd()
ok 96 # skip No dirfd()
ok 97 # skip No dirfd()
ok 98 # skip No dirfd()
ok 99 # skip No dirfd()
ok 100 # skip No dirfd()
ok 101 - can create temp file
ok 102 - stat(*F{IO}) works
ok 103 - single file tests work with *F{IO}
ok 104 # skip No dirfd()
ok 105 # skip No dirfd()
ok 106 # skip No dirfd()
ok 107 # skip No dirfd()
ok 108 # skip No dirfd()
ok 109 # skip No dirfd()
ok 110 # skip No dirfd()
ok 111 # skip No dirfd()
ok 112 # skip No dirfd()
ok 113 - no unopened warning from stat _

C​:\perl519\src\t> ..\perl.exe -I..\lib io/fs.t
1..55
ok 1 # skip bogus umask
not ok 2 - link a b
# Failed test 2 - link a b at io/fs.t line 101
not ok 3 - link b c
# Failed test 3 - link b c at io/fs.t line 102
not ok 4 - link count of triply-linked file
# Failed test 4 - link count of triply-linked file at io/fs.t line 112
# got undef
# expected "3"
not ok 5 - mode of triply-linked file
# Failed test 5 - mode of triply-linked file at io/fs.t line 122
# got "00"
# expected "0666"
ok 6 - chmod succeeding
not ok 7 - chmod going through
# Failed test 7 - chmod going through at io/fs.t line 142
# got "0"
# expected "292"
not ok 8 - chmod two files
# Failed test 8 - chmod two files at io/fs.t line 149
# got "1"
# expected "2"
not ok 9 - chmod going through to c
# Failed test 9 - chmod going through to c at io/fs.t line 157
# got "0"
# expected "438"
ok 10 - chmod going through to x
not ok 11 - unlink two files
# Failed test 11 - unlink two files at io/fs.t line 169
# got "1"
# expected "2"
ok 12 - ino of removed file b should be undef
ok 13 - ino of removed file x should be undef
ok 14 # skip no fchmod
ok 15 # skip no fchmod
ok 16 # skip no fchmod
ok 17 # skip no fchmod
ok 18 # skip no fchmod
ok 19 # skip no fchown
ok 20 - fchmod is unimplemented
ok 21 - fchown is unimplemented
ok 22 - rename a b
ok 23 - ino of renamed file a should be undef
ok 24 - utime
ok 25 # skip bogus inode num
ok 26 # skip filesystem atime/mtime granularity too low
ok 27 # skip filesystem atime/mtime granularity too low
# utime undef, undef --> 1393650000, 1393714698
ok 28 - atime
ok 29 - mtime
ok 30 # skip no futimes
ok 31 # skip no futimes
ok 32 # skip no futimes
ok 33 # skip no futimes
ok 34 - futimes is unimplemented
ok 35 - unlink b
ok 36 - ino of unlinked file b should be undef
ok 37 # skip No symbolic links found to test with
ok 38 # skip No symbolic links found to test with
ok 39 - truncation to five bytes
ok 40 - truncation to zero bytes
ok 41 - fh resize to 200
ok 42 - fh resize to 200 working (filename check)
ok 43 - fh resize to zero
ok 44 - fh resize to zero working (filename check)
ok 45 - fh resize by IO slot
ok 46 - fh resize by IO slot working
ok 47 - truncate(word) does not fall back to file name
ok 48 - rename working
ok 49 - rename on directories
ok 50 - rename on directories working
ok 51 - extend sp in pp_chmod
ok 52 - extend sp in pp_chown
ok 53 - can't unlink directory without -U and privileges
ok 54 - unlink directory without -U sets errno
ok 55 - unlink non-existent directory without -U sets ENOENT


building perl on usb stick (F​: drive)


usb stick


../lib/vmsish.t ................................................... ok
../lib/warnings.t ................................................. ok
x2p/find2perl.t ................................................... skipped​: Nee
d something vaguely POSIX
x2p/s2p.t ......................................................... ok

Test Summary Report


io/fs.t (Wstat​: 0 Tests​:
55 Failed​: 8)
  Failed tests​: 2-5, 7-9, 11
op/stat.t (Wstat​: 0 Tests​:
113 Failed​: 3)
  Failed tests​: 5, 7, 86
Files=2407, Tests=691806, 17365 wallclock secs (142.05 usr + 6.55 sys = 148.59
CPU)
Result​: FAIL
NMAKE : fatal error U1077​: '..\perl.exe' : return code '0xb'
Stop.

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()) {
  if (Win32​::FsType() eq 'NTFS') {
  $has_link = 1;
  $accurate_timestamps = 1;
  }
}


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
io/fs.t .. # Failed test 2 - link a b at io/fs.t line 101
# Failed test 3 - link b c at io/fs.t line 102
# Failed test 4 - link count of triply-linked file at io/fs.t line 112
# got undef
# expected "3"
# Failed test 5 - mode of triply-linked file at io/fs.t line 122
# got "00"
# expected "0666"
# Failed test 7 - chmod going through at io/fs.t line 142
# got "0"
# expected "292"
# Failed test 8 - chmod two files at io/fs.t line 149
# got "1"
# expected "2"
# Failed test 9 - chmod going through to c at io/fs.t line 157
# got "0"
# expected "438"
# Failed test 11 - unlink two files at io/fs.t line 169
# got "1"
# expected "2"
io/fs.t .. Failed 8/55 subtests
  (less 16 skipped subtests​: 31 okay)

Test Summary Report


io/fs.t (Wstat​: 0 Tests​: 55 Failed​: 8)
  Failed tests​: 2-5, 7-9, 11
Files=1, Tests=55, 3 wallclock secs ( 0.08 usr + 0.02 sys = 0.09 CPU)
Result​: FAIL

F​:\perl\t>
F​:\perl\t>perl -I..\lib harness op/stat.t
op/stat.t .. # Failed test 5 - linked tmp testfile at op/stat.t line 103
# Failed test 7 - Link count on hard linked file at op/stat.t line 113
# got "1"
# expected "2"
# Failed test 86 - negative -A works at op/stat.t line 504
op/stat.t .. Failed 3/113 subtests
  (less 45 skipped subtests​: 65 okay)

Test Summary Report


op/stat.t (Wstat​: 0 Tests​: 113 Failed​: 3)
  Failed tests​: 5, 7, 86
Files=1, Tests=113, 5 wallclock secs ( 0.09 usr + 0.00 sys = 0.09 CPU)
Result​: FAIL

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()"
FAT6255

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.

--
bulk88 ~ bulk88 at hotmail.com

@p5pRT
Copy link
Author

p5pRT commented Mar 3, 2014

@nwc10 - Status changed from 'resolved' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Mar 3, 2014

From @khwilliamson

Re-opening at the request of bulk88
--
Karl Williamson

@p5pRT
Copy link
Author

p5pRT commented Mar 3, 2014

From @nwc10

On Mon, Mar 03, 2014 at 11​:49​:54AM -0800, bulk88 via RT wrote​:

On Tue Jul 03 00​:06​:38 2012, doy wrote​:

Closing, since it doesn't appear that we have been able to reproduce this.

-doy

Someone with ticket privilege needs to change this ticket to open, see last paragraph of this post for details.

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
rest of the message (which I've skimmed) other than thanks for figuring out
the cause of the bug. It's not clear that there's an "obvious" fix.

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented Mar 3, 2014

From @Hugmeir

On Mon, Mar 3, 2014 at 8​:49 PM, bulk88 via RT <perlbug-followup@​perl.org>wrote​:

On Tue Jul 03 00​:06​:38 2012, doy wrote​:

Closing, since it doesn't appear that we have been able to reproduce
this.

-doy

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
1..113
ok 1 - nlink on regular file
ok 2 # skip mtime and ctime not reliable
ok 3 # skip mtime and ctime not reliable
ok 4 - link() implemented
not ok 5 - linked tmp testfile
# Failed test 5 - linked tmp testfile at op/stat.t line 103
ok 6 - chmoded tmp testfile
not ok 7 - Link count on hard linked file
# Failed test 7 - Link count on hard linked file at op/stat.t line 113
# got "1"
# expected "2"
ok 8 # skip No ctime concept on this OS
ok 9 # skip No ctime concept on this OS
ok 10 - -z on empty filehandle
ok 11 - and -s
ok 12 - -z on empty file
ok 13 - and -s
ok 14 - -z on empty filehandle
ok 15 - and -s
ok 16 - -z on non-empty file
ok 17 - and -s
ok 18 - chmod 0000
ok 19 # skip Can't test -r or -w meaningfully if you're superuser
ok 20 # skip Can't test -r or -w meaningfully if you're superuser
ok 21 - -x
ok 22 - chmod 0700
ok 23 - -r
ok 24 - -w
ok 25 # skip -x simply determines if a file ends in an executable suffix
ok 26 - -f
ok 27 - !-d
ok 28 - -d cwd
ok 29 - !-f cwd
ok 30 # skip symlink not implemented
ok 31 # skip symlink not implemented
ok 32 # skip symlink not implemented
ok 33 - -o
ok 34 - -e
ok 35 - -e on unlinked file
ok 36 # skip No character, socket or block special files
ok 37 # skip No character, socket or block special files
ok 38 # skip No character, socket or block special files
ok 39 # skip No character, socket or block special files
ok 40 # skip No character, socket or block special files
ok 41 # skip No character, socket or block special files
ok 42 # skip Can't find a setuid file to test with
ok 43 # skip Can't find a setuid file to test with
ok 44 # skip Can't find a setuid file to test with
ok 45 # skip Test uses unixisms
ok 46 # skip Test uses unixisms
ok 47 - !-t on closed TTY filehandle
ok 48 - -t on STDIN
ok 49 # skip No null device to test with
ok 50 - -T
ok 51 - !-B
ok 52 - -B
ok 53 - !-T
ok 54 - -T on filehandle causes no errors
ok 55 - -T
ok 56 - !-B
ok 57 - after readline
ok 58 - still -T
ok 59 - still -B
ok 60 - reopened and after readline
ok 61 - still -T
ok 62 - still !-B
ok 63 - after seek
ok 64 - still -T
ok 65 - still !-B
ok 66 - at EOF
ok 67 - still -T
ok 68 - now -B
ok 69 # skip No null device to test with
ok 70 # skip No null device to test with
ok 71 - bare -f uses $_
ok 72 - -f() "
ok 73 - stat returns full 13 elements
ok 74 - lstat _ croaks after stat
ok 75 - lstat *_ croaks after stat
ok 76 - lstat \*_ croaks after stat
ok 77 - -l _ croaks after stat
ok 78 - lstat _ ok after lstat
ok 79 - -l _ ok after lstat
ok 80 - stat $ioref resets stat type
ok 81 - lstat $ioref reverts to regular fstat
ok 82 # skip No lstat
ok 83 # skip No lstat
# Zzz...
ok 84 - can create tmp file
# time=1393701938, stat=(2 0 33206 1 0 0 2 0 1393650000 1393701944
1393701943 )

# -MAC=(-6.94444444444444e-005 0.601134259259259 -5.78703703703704e-005)
ok 85 - negative -M works
not ok 86 - negative -A works
# Failed test 86 - negative -A works at op/stat.t line 504
ok 87 - negative -C works
ok 88 - unlink tmp file
ok 89 - can create temp file
ok 90 - -T _ doesn't break the statbuffer
ok 91 # skip No lstat
ok 92 # skip No dirfd()
ok 93 # skip No dirfd()
ok 94 # skip No dirfd()
ok 95 # skip No dirfd()
ok 96 # skip No dirfd()
ok 97 # skip No dirfd()
ok 98 # skip No dirfd()
ok 99 # skip No dirfd()
ok 100 # skip No dirfd()
ok 101 - can create temp file
ok 102 - stat(*F{IO}) works
ok 103 - single file tests work with *F{IO}
ok 104 # skip No dirfd()
ok 105 # skip No dirfd()
ok 106 # skip No dirfd()
ok 107 # skip No dirfd()
ok 108 # skip No dirfd()
ok 109 # skip No dirfd()
ok 110 # skip No dirfd()
ok 111 # skip No dirfd()
ok 112 # skip No dirfd()
ok 113 - no unopened warning from stat _

C​:\perl519\src\t> ..\perl.exe -I..\lib io/fs.t
1..55
ok 1 # skip bogus umask
not ok 2 - link a b
# Failed test 2 - link a b at io/fs.t line 101
not ok 3 - link b c
# Failed test 3 - link b c at io/fs.t line 102
not ok 4 - link count of triply-linked file
# Failed test 4 - link count of triply-linked file at io/fs.t line 112
# got undef
# expected "3"
not ok 5 - mode of triply-linked file
# Failed test 5 - mode of triply-linked file at io/fs.t line 122
# got "00"
# expected "0666"
ok 6 - chmod succeeding
not ok 7 - chmod going through
# Failed test 7 - chmod going through at io/fs.t line 142
# got "0"
# expected "292"
not ok 8 - chmod two files
# Failed test 8 - chmod two files at io/fs.t line 149
# got "1"
# expected "2"
not ok 9 - chmod going through to c
# Failed test 9 - chmod going through to c at io/fs.t line 157
# got "0"
# expected "438"
ok 10 - chmod going through to x
not ok 11 - unlink two files
# Failed test 11 - unlink two files at io/fs.t line 169
# got "1"
# expected "2"
ok 12 - ino of removed file b should be undef
ok 13 - ino of removed file x should be undef
ok 14 # skip no fchmod
ok 15 # skip no fchmod
ok 16 # skip no fchmod
ok 17 # skip no fchmod
ok 18 # skip no fchmod
ok 19 # skip no fchown
ok 20 - fchmod is unimplemented
ok 21 - fchown is unimplemented
ok 22 - rename a b
ok 23 - ino of renamed file a should be undef
ok 24 - utime
ok 25 # skip bogus inode num
ok 26 # skip filesystem atime/mtime granularity too low
ok 27 # skip filesystem atime/mtime granularity too low
# utime undef, undef --> 1393650000, 1393714698
ok 28 - atime
ok 29 - mtime
ok 30 # skip no futimes
ok 31 # skip no futimes
ok 32 # skip no futimes
ok 33 # skip no futimes
ok 34 - futimes is unimplemented
ok 35 - unlink b
ok 36 - ino of unlinked file b should be undef
ok 37 # skip No symbolic links found to test with
ok 38 # skip No symbolic links found to test with
ok 39 - truncation to five bytes
ok 40 - truncation to zero bytes
ok 41 - fh resize to 200
ok 42 - fh resize to 200 working (filename check)
ok 43 - fh resize to zero
ok 44 - fh resize to zero working (filename check)
ok 45 - fh resize by IO slot
ok 46 - fh resize by IO slot working
ok 47 - truncate(word) does not fall back to file name
ok 48 - rename working
ok 49 - rename on directories
ok 50 - rename on directories working
ok 51 - extend sp in pp_chmod
ok 52 - extend sp in pp_chown
ok 53 - can't unlink directory without -U and privileges
ok 54 - unlink directory without -U sets errno
ok 55 - unlink non-existent directory without -U sets ENOENT
------------------------------------------------------
building perl on usb stick (F​: drive)
------------------------------------------------------
usb stick
-------------------
../lib/vmsish.t ................................................... ok
../lib/warnings.t ................................................. ok
x2p/find2perl.t ...................................................
skipped​: Nee
d something vaguely POSIX
x2p/s2p.t ......................................................... ok

Test Summary Report
-------------------
io/fs.t (Wstat​: 0
Tests​:
55 Failed​: 8)
Failed tests​: 2-5, 7-9, 11
op/stat.t (Wstat​: 0
Tests​:
113 Failed​: 3)
Failed tests​: 5, 7, 86
Files=2407, Tests=691806, 17365 wallclock secs (142.05 usr + 6.55 sys =
148.59
CPU)
Result​: FAIL
NMAKE : fatal error U1077​: '..\perl.exe' : return code '0xb'
Stop.

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()) {
if (Win32​::FsType() eq 'NTFS') {
$has_link = 1;
$accurate_timestamps = 1;
}
}
----------------------------------------------------

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
io/fs.t .. # Failed test 2 - link a b at io/fs.t line 101
# Failed test 3 - link b c at io/fs.t line 102
# Failed test 4 - link count of triply-linked file at io/fs.t line 112
# got undef
# expected "3"
# Failed test 5 - mode of triply-linked file at io/fs.t line 122
# got "00"
# expected "0666"
# Failed test 7 - chmod going through at io/fs.t line 142
# got "0"
# expected "292"
# Failed test 8 - chmod two files at io/fs.t line 149
# got "1"
# expected "2"
# Failed test 9 - chmod going through to c at io/fs.t line 157
# got "0"
# expected "438"
# Failed test 11 - unlink two files at io/fs.t line 169
# got "1"
# expected "2"
io/fs.t .. Failed 8/55 subtests
(less 16 skipped subtests​: 31 okay)

Test Summary Report
-------------------
io/fs.t (Wstat​: 0 Tests​: 55 Failed​: 8)
Failed tests​: 2-5, 7-9, 11
Files=1, Tests=55, 3 wallclock secs ( 0.08 usr + 0.02 sys = 0.09 CPU)
Result​: FAIL

F​:\perl\t>
F​:\perl\t>perl -I..\lib harness op/stat.t
op/stat.t .. # Failed test 5 - linked tmp testfile at op/stat.t line 103
# Failed test 7 - Link count on hard linked file at op/stat.t line 113
# got "1"
# expected "2"
# Failed test 86 - negative -A works at op/stat.t line 504
op/stat.t .. Failed 3/113 subtests
(less 45 skipped subtests​: 65 okay)

Test Summary Report
-------------------
op/stat.t (Wstat​: 0 Tests​: 113 Failed​: 3)
Failed tests​: 5, 7, 86
Files=1, Tests=113, 5 wallclock secs ( 0.09 usr + 0.00 sys = 0.09 CPU)
Result​: FAIL

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()"
FAT6255

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.

To add to this, those tests (and some others from POSIX.pm) also fail on
Android if the underlying fs is FAT, so a more portable solution might be
warranted.
(For those wondering​: the internal memory of some android devices is
occasionally formatted as FAT, and as far as I know, /mnt/sdcard is
*always* FAT)

@p5pRT
Copy link
Author

p5pRT commented Mar 5, 2014

From @bulk88

Some 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
Committer​: Jarkko Hietaniemi <jhi@​iki.fi> 2001-12-11 22​:09​:37
Parent​: 15c6511 (utime() updates only the mtime in BeOS.)
Child​: b2ce412 ((On some platforms) missing truncate FH.)
Branches​: many (222)
Follows​: perl-5.6.0
Precedes​: perl-5.7.3

  io/fs cleanup​: testing on win32/cygwin/netware/djgpp/...
  and vms would be muchly appreciated.
 
  p4raw-id​: //depot/perl@​13643


F​:\perl\t>perl -I..\lib io/fs_0c5d4ba.t
1..31
ok 1 - Skip - bogus umask
not ok 2 - link a b
# Failed test 2 - link a b at io/fs_0c5d4ba.t line 78
not ok 3 - link b c
# Failed test 3 - link b c at io/fs_0c5d4ba.t line 79
not ok 4 - link count of triply-linked file
# Failed test 4 - link count of triply-linked file at io/fs_0c5d4ba.t line 87
# got undef
# expected "3"
not ok 5 - mode of triply-linked file
# Failed test 5 - mode of triply-linked file at io/fs_0c5d4ba.t line 93
# got "0"
# expected "438"
ok 6 - chmod succeeding
not ok 7 - chmod going through
# Failed test 7 - chmod going through at io/fs_0c5d4ba.t line 107
# got "0"
# expected "292"
not ok 8 - chmod two files
# Failed test 8 - chmod two files at io/fs_0c5d4ba.t line 113
# got "1"
# expected "2"
not ok 9 - chmod going through to c
# Failed test 9 - chmod going through to c at io/fs_0c5d4ba.t line 118
# got "0"
# expected "438"
ok 10 - chmod going through to x
not ok 11 - unlink two files
# Failed test 11 - unlink two files at io/fs_0c5d4ba.t line 125
# got "1"
# expected "2"
ok 12 - ino of removed file b should be undef
ok 13 - ino of removed file x should be undef
ok 14 - rename a b
ok 15 - ino of renamed file a should be undef
ok 16 - utime
ok 17 - Skip - bogus (stat)[1]

not ok 18 - Skip - granularity of the atime/mtime
# Failed test 18 - Skip - granularity of the atime/mtime at io/fs_0c5d4ba.t line
163
ok 19 - unlink b
ok 20 - ino of unlinked file b should be undef
ok 21 - Skip - no symbolic links
ok 22 - Skip - no symbolic links
ok 23 - truncation to five bytes
ok 24 - truncation to zero bytes
ok 25 - fh resize to 200
ok 26 - fh resize to 200 working
ok 27 - fh resize to zero
ok 28 - fh resize to zero working
ok 29 - rename working
ok 30 - rename on directories
ok 31 - rename on directories working

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
Committer​: Jarkko Hietaniemi <jhi@​iki.fi> 2001-10-31 10​:20​:01
Parent​: 73077d5 ([ PATCH ] maint/perl/t/io/fs.t for build on Cygwin)
Child​: 7d932aa (Re​: [PATCH t/io/argv.t vms/test.com t/test.pl] argv.t cleanup & fixes for VMS)
Branches​: many (240)
Follows​: perl-5.005_02
Precedes​: v5.10.0

  Skip message nit.
 
  p4raw-id​: //depot/perl@​12792


F​:\perl\t>perl -I..\lib io/fs_79316e7.t
1..29
ok 1 # skipped​: bogus umask()
ok 2 # skipped​: no link
ok 3 # skipped​: no link
ok 4 # skipped​: no link
ok 5 # skipped​: no link
ok 6
ok 7 # skipped​: no link
ok 8 # skipped​: no link
ok 9 # skipped​: no link
ok 10 # skipped​: no link
ok 11 # skipped​: no link
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17 # skipped​: bogus (stat)[1]
ok 18 # skipped​: granularity of the filetime
ok 19
ok 20
ok 21 # skipped​: no link
ok 22 # skipped​: no link
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29


The refactoring in " io/fs cleanup​: testing on win32/cygwin/netware/djgpp/..." is faulty since it added
"+my $has_link = $Config{d_link};" for ALL OSes that have the, umm, symbol available. later on in the commit,


+ if (Win32​::FsType() eq 'NTFS') {
+ $has_link = 1;


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​:
  /* ERROR_INVALID_FUNCTION - eg. on a FAT volume */
  errno = EINVAL;
  break;
  }
  return -1;
}


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
1..55
ok 1 # skip bogus umask
ok 2 # skip no link
ok 3 # skip no link
ok 4 # skip no link
ok 5 # skip no link
ok 6 - chmod succeeding
ok 7 # skip no link
ok 8 # skip no link
ok 9 # skip no link
ok 10 # skip no link
ok 11 # skip no link
ok 12 # skip no link
ok 13 # skip no link
ok 14 # skip no fchmod
ok 15 # skip no fchmod
ok 16 # skip no fchmod
ok 17 # skip no fchmod
ok 18 # skip no fchmod
ok 19 # skip no fchown
ok 20 - fchmod is unimplemented
ok 21 - fchown is unimplemented
ok 22 - rename a b
ok 23 - ino of renamed file a should be undef
ok 24 - utime
ok 25 # skip bogus inode num
ok 26 # skip filesystem atime/mtime granularity too low
ok 27 # skip filesystem atime/mtime granularity too low
# utime undef, undef --> 1393909200, 1393984002
ok 28 - atime
ok 29 - mtime
ok 30 # skip no futimes
ok 31 # skip no futimes
ok 32 # skip no futimes
ok 33 # skip no futimes
ok 34 - futimes is unimplemented
ok 35 - unlink b
ok 36 - ino of unlinked file b should be undef
ok 37 # skip No symbolic links found to test with
ok 38 # skip No symbolic links found to test with
ok 39 - truncation to five bytes
ok 40 - truncation to zero bytes
ok 41 - fh resize to 200
ok 42 - fh resize to 200 working (filename check)
ok 43 - fh resize to zero
ok 44 - fh resize to zero working (filename check)
ok 45 - fh resize by IO slot
ok 46 - fh resize by IO slot working
ok 47 - truncate(word) does not fall back to file name
ok 48 - rename working
ok 49 - rename on directories
ok 50 - rename on directories working
ok 51 - extend sp in pp_chmod
ok 52 - extend sp in pp_chown
ok 53 - can't unlink directory without -U and privileges
ok 54 - unlink directory without -U sets errno
ok 55 - unlink non-existent directory without -U sets ENOENT


NOW FOR OP/STAT.T

commit de5a37b
Author​: Michael G. Schwern <schwern@​pobox.com> Tue Dec 4 21​:22​:05 2001
Committer​: Jarkko Hietaniemi <jhi@​iki.fi> Wed Dec 5 08​:21​:09 2001

stat.t portability, the LAST VMS exception!
Message-ID​: <20011205022205.F14333@​blackrider>

p4raw-id​: //depot/perl@​13470


F​:\perl\t>perl -I..\lib op/stat_de5a37b.t
1..73
ok 1 - nlink on regular file
ok 2 # skip mtime and ctime not reliable
ok 3 # skip mtime and ctime not reliable
ok 4 - link() implemented
not ok 5 - linked tmp testfile
# Failed test 5 - linked tmp testfile at op/stat_de5a37b.t line 70
ok 6 - chmoded tmp testfile
not ok 7 - Link count on hard linked file
# Failed test 7 - Link count on hard linked file at op/stat_de5a37b.t line 77
# got "1"
# expected "2"
ok 8 - hard link mtime
ok 9 - hard link ctime != mtime
ok 10 - -z on empty file
ok 11 - and -s
ok 12 - -z on non-empty file
ok 13 - and -s
ok 14 - chmod 0000
ok 15 # skip Can't test -r or -w meaningfully if you're superuser
ok 16 # skip Can't test -r or -w meaningfully if you're superuser
ok 17 - -x
ok 18 - chmod 0700
ok 19 - -r
ok 20 - -w
ok 21 # skip -x simply determins if a file ends in an executable suffix
ok 22 - -f
ok 23 - !-d
ok 24 - -d cwd
ok 25 - !-f cwd
ok 26 # skip symlink not implemented
ok 27 # skip symlink not implemented
ok 28 # skip symlink not implemented
ok 29 - -o
ok 30 - -e
ok 31 - -e on unlinked file
ok 32 # skip No character, socket or block special files
ok 33 # skip No character, socket or block special files
ok 34 # skip No character, socket or block special files
ok 35 # skip No character, socket or block special files
ok 36 # skip No character, socket or block special files
ok 37 # skip No character, socket or block special files
ok 38 # skip No character, socket or block special files
ok 39 - !-c cwd
ok 40 - !-S cwd
ok 41 - !-b cwd
ok 42 # skip No setuid
ok 43 # skip No setuid
ok 44 # skip No setuid
ok 45 # skip Test uses unixisms
ok 46 # skip Test uses unixisms
ok 47 - !-t on closed TTY filehandle
ok 48 - -t on STDIN
ok 49 # skip No null device to test with
ok 50 - -T
ok 51 - !-B
ok 52 - -B
ok 53 - !-T
ok 54 - -T on filehandle causes no errors
ok 55 - -T
ok 56 - !-B
ok 57 - after readline
ok 58 - still -T
ok 59 - still -B
ok 60 - reopened and after readline
ok 61 - still -T
ok 62 - still !-B
ok 63 - after seek
ok 64 - still -T
ok 65 - still !-B
ok 66 - at EOF
ok 67 - still -T
ok 68 - now -B
ok 69 # skip No null device to test with
ok 70 # skip No null device to test with
ok 71 - bare -f uses $_
ok 72 - -f() "
ok 73 - stat returns full 13 elements


Revision​: cc25fa7
Author​: Michael G. Schwern <schwern@​pobox.com>
Date​: 12/4/2001 6​:40​:10 PM
Message​:
Re​: [PATCH t/op/stat.t t/test.pl] stat.t cleanup, first pass

Message-ID​: <20011204234010.B14333@​blackrider>

p4raw-id​: //depot/perl@​13469


F​:\perl\t>perl -I..\lib op/stat_cc25fa7.t
1..63
ok 1 - nlink on regular file
ok 2 # skip mtime and ctime not reliable
ok 3 # skip mtime and ctime not reliable
ok 4 # skip No hard links
ok 5 # skip No hard links
ok 6 # skip No hard links
ok 7 # skip No hard links
ok 8 # skip No hard links
ok 9 - -z on empty file
ok 10 - and -s
ok 11 - -z on non-empty file
ok 12 - and -s
ok 13 - chmod 0000
ok 14 # skip Can't test -r or -w meaningfully if you're superuser
ok 15 # skip Can't test -r or -w meaningfully if you're superuser
ok 16 - -x
ok 17 - chmod 0700
ok 18 - -r
ok 19 - -w
ok 20 # skip -x simply determins if a file ends in an executable suffix
ok 21 - -f
ok 22 - !-d
ok 23 - -d cwd
ok 24 - !-f cwd
ok 25 # skip Test uses unixisms
ok 26 - -o
ok 27 - -e
not ok 28 - unlink
# Failed test 28 - unlink at op/stat_cc25fa7.t line 169
ok 29 - -e on unlinked file
ok 30 # skip No character special files
ok 31 - !-c cwd
ok 32 # skip No socket files
ok 33 - !-S cwd
ok 34 # skip No block files
ok 35 - !-b cwd
ok 36 # skip No setuid
ok 37 # skip No setuid
ok 38 # skip Test uses unixisms
ok 39 # skip Test uses unixisms
ok 40 - !-t on closed TTY filehandle
ok 41 - -t on STDIN
ok 42 # skip No /dev/null to test with
ok 43 - -T
ok 44 - !-B
ok 45 - -B
ok 46 - !-T
ok 47 - -T on filehandle causes no errors
ok 48 - -T
ok 49 - !-B
ok 50 - after readline
ok 51 - still -T
ok 52 - still -B
ok 53 - reopened and after readline
ok 54 - still -T
ok 55 - still !-B
ok 56 - after seek
ok 57 - still -T
ok 58 - still !-B
ok 59 - /dev/null is -T
ok 60 - and -B
ok 61 - bare -f uses $_
ok 62 - -f() "
ok 63 - stat returns full 13 elements

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
# Failed test 28 - unlink at op/stat_cc25fa7.t line 169


This is because earlier in "Re​: [PATCH t/op/stat.t t/test.pl] stat.t cleanup, first pass" stat.t,


SKIP​: {
  unlink $tmpfile_link;

  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​: {
  unlink $tmpfile_link;

  skip "No hard links", 5 if $Is_Dosish || $Is_MPE;


became


SKIP​: {
  unlink $tmpfile_link;
  my $lnk_result = eval { link $tmpfile, $tmpfile_link };
  skip "link() unimplemented", 6 if $@​ =~ /unimplemented/;


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
Committer​: Gurusamy Sarathy <gsar@​cpan.org> 1998-07-10 20​:25​:17
Parent​: bf6b5eb (make binmode(STDIN) not whine)
Branches​: many (242)
Follows​: perl-5.004_04
Precedes​: perl-5.005

  add perlport.pod v1.23 from Chris Nandor <pudge@​pobox.com>
 
  p4raw-id​: //depot/perl@​1412

Here is a run of blead's stat.t which shows test 86 failing.


F​:\perl\t>perl -I..\lib op/stat.t
1..113
ok 1 - nlink on regular file
ok 2 # skip mtime and ctime not reliable
ok 3 # skip mtime and ctime not reliable
ok 4 - link() implemented
not ok 5 - linked tmp testfile
# Failed test 5 - linked tmp testfile at op/stat.t line 103
ok 6 - chmoded tmp testfile
not ok 7 - Link count on hard linked file
# Failed test 7 - Link count on hard linked file at op/stat.t line 113
# got "1"
# expected "2"
ok 8 # skip No ctime concept on this OS
ok 9 # skip No ctime concept on this OS
ok 10 - -z on empty filehandle
ok 11 - and -s
ok 12 - -z on empty file
ok 13 - and -s
ok 14 - -z on empty filehandle
ok 15 - and -s
ok 16 - -z on non-empty file
ok 17 - and -s
ok 18 - chmod 0000
ok 19 # skip Can't test -r or -w meaningfully if you're superuser
ok 20 # skip Can't test -r or -w meaningfully if you're superuser
ok 21 - -x
ok 22 - chmod 0700
ok 23 - -r
ok 24 - -w
ok 25 # skip -x simply determines if a file ends in an executable suffix
ok 26 - -f
ok 27 - !-d
ok 28 - -d cwd
ok 29 - !-f cwd
ok 30 # skip symlink not implemented
ok 31 # skip symlink not implemented
ok 32 # skip symlink not implemented
ok 33 - -o
ok 34 - -e
ok 35 - -e on unlinked file
ok 36 # skip No character, socket or block special files
ok 37 # skip No character, socket or block special files
ok 38 # skip No character, socket or block special files
ok 39 # skip No character, socket or block special files
ok 40 # skip No character, socket or block special files
ok 41 # skip No character, socket or block special files
ok 42 # skip Can't find a setuid file to test with
ok 43 # skip Can't find a setuid file to test with
ok 44 # skip Can't find a setuid file to test with
ok 45 # skip Test uses unixisms
ok 46 # skip Test uses unixisms
ok 47 - !-t on closed TTY filehandle
ok 48 - -t on STDIN
ok 49 # skip No null device to test with
ok 50 - -T
ok 51 - !-B
ok 52 - -B
ok 53 - !-T
ok 54 - -T on filehandle causes no errors
ok 55 - -T
ok 56 - !-B
ok 57 - after readline
ok 58 - still -T
ok 59 - still -B
ok 60 - reopened and after readline
ok 61 - still -T
ok 62 - still !-B
ok 63 - after seek
ok 64 - still -T
ok 65 - still !-B
ok 66 - at EOF
ok 67 - still -T
ok 68 - now -B
ok 69 # skip No null device to test with
ok 70 # skip No null device to test with
ok 71 - bare -f uses $_
ok 72 - -f() "
ok 73 - stat returns full 13 elements
ok 74 - lstat _ croaks after stat
ok 75 - lstat *_ croaks after stat
ok 76 - lstat \*_ croaks after stat
ok 77 - -l _ croaks after stat
ok 78 - lstat _ ok after lstat
ok 79 - -l _ ok after lstat
ok 80 - stat $ioref resets stat type
ok 81 - lstat $ioref reverts to regular fstat
ok 82 # skip No lstat
ok 83 # skip No lstat
# Zzz...
ok 84 - can create tmp file
# time=1393986207, stat=(5 0 33206 1 0 0 5 0 1393909200 1393986214 1393986212 )

# -MAC=(-8.10185185185185e-005 0.891284722222222 -5.78703703703704e-005)
ok 85 - negative -M works
not ok 86 - negative -A works
# Failed test 86 - negative -A works at op/stat.t line 504
ok 87 - negative -C works
ok 88 - unlink tmp file
ok 89 - can create temp file
ok 90 - -T _ doesn't break the statbuffer
ok 91 # skip No lstat
ok 92 # skip No dirfd()
ok 93 # skip No dirfd()
ok 94 # skip No dirfd()
ok 95 # skip No dirfd()
ok 96 # skip No dirfd()
ok 97 # skip No dirfd()
ok 98 # skip No dirfd()
ok 99 # skip No dirfd()
ok 100 # skip No dirfd()
ok 101 - can create temp file
ok 102 - stat(*F{IO}) works
ok 103 - single file tests work with *F{IO}
ok 104 # skip No dirfd()
ok 105 # skip No dirfd()
ok 106 # skip No dirfd()
ok 107 # skip No dirfd()
ok 108 # skip No dirfd()
ok 109 # skip No dirfd()
ok 110 # skip No dirfd()
ok 111 # skip No dirfd()
ok 112 # skip No dirfd()
ok 113 - no unopened warning from stat _

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.
# -A Same for access time.


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
Committer​: Jarkko Hietaniemi <jhi@​iki.fi> 2003-09-18 15​:23​:22
Parent​: 29ddfe3 (Re​: [perl #19582] [PATCH bleedperl] bad overload copy constructor segfaults)
Child​: f3b9614 (Integrate a change from the perlfaq CVS.)
Branches​: many (240)
Follows​: perl-5.8.0
Precedes​: perl-5.9.0

  -M -A -C broken
  Message-ID​: <20030918180202.GA21949@​math.berkeley.edu>
 
  (use stat.t instead of time.t)
 
  p4raw-id​: //depot/perl@​21277


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
# system clock.
my $Filesystem_Time_Offset = abs($mtime - time);
.............................
SKIP​: {
  skip "Too much clock skew between system and filesystem", 5
  if ($Filesystem_Time_Offset > 5);
  print "# Zzz...\n";
  sleep($Filesystem_Time_Offset+1);
  my $f = 'tstamp.tmp';


--
bulk88 ~ bulk88 at hotmail.com

@p5pRT
Copy link
Author

p5pRT commented Mar 5, 2014

From @bulk88

Here 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.

--
bulk88 ~ bulk88 at hotmail.com

@p5pRT
Copy link
Author

p5pRT commented Mar 5, 2014

From @bulk88

0001-perl-21442-fix-fs.t-failures-on-Win32-FAT-drive.patch
From 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

@p5pRT
Copy link
Author

p5pRT commented Mar 19, 2014

From @bulk88

On Wed Mar 05 04​:47​:12 2014, bulk88 wrote​:

Here 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.

Bump.

--
bulk88 ~ bulk88 at hotmail.com

@p5pRT
Copy link
Author

p5pRT commented Mar 26, 2014

From @tonycoz

On Wed Mar 05 04​:47​:12 2014, bulk88 wrote​:

Here 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.

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

@p5pRT
Copy link
Author

p5pRT commented Mar 26, 2014

From @tonycoz

0001-perl-21442-skip-link-tests-where-the-filesystem-does.patch
From 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

@p5pRT
Copy link
Author

p5pRT commented Apr 4, 2014

From @bulk88

On Tue Mar 25 17​:46​:18 2014, tonyc wrote​:

On Wed Mar 05 04​:47​:12 2014, bulk88 wrote​:

Here 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.

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

So when will these things start getting commited?

--
bulk88 ~ bulk88 at hotmail.com

@p5pRT
Copy link
Author

p5pRT commented Apr 4, 2014

From @tonycoz

On Thu, Apr 03, 2014 at 11​:23​:49PM -0700, bulk88 via RT wrote​:

On Tue Mar 25 17​:46​:18 2014, tonyc wrote​:

On Wed Mar 05 04​:47​:12 2014, bulk88 wrote​:

Here 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.

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

So when will these things start getting commited?

Next week, I'm testing other FAT on Win32 fixes, and until last night
it was slow (USB2).

Tony

@p5pRT
Copy link
Author

p5pRT commented Apr 7, 2014

From @steve-m-hay

On Thu Apr 03 23​:47​:37 2014, tonyc wrote​:

On Thu, Apr 03, 2014 at 11​:23​:49PM -0700, bulk88 via RT wrote​:

On Tue Mar 25 17​:46​:18 2014, tonyc wrote​:

On Wed Mar 05 04​:47​:12 2014, bulk88 wrote​:

Here 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.

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

So when will these things start getting commited?

Next week, I'm testing other FAT on Win32 fixes, and until last night
it was slow (USB2).

Out of the box I currently get these failures on FAT32​:

Test Summary Report


io/fs.t (Wstat​: 0 Tests​: 55 Failed​: 8)
  Failed tests​: 2-5, 7-9, 11
op/stat.t (Wstat​: 0 Tests​: 113 Failed​: 3)
  Failed tests​: 5, 7, 86
win32/fs.t (Wstat​: 0 Tests​: 4 Failed​: 1)
  Failed test​: 4
Files=2407, Tests=690430, 3901 wallclock secs (50.70 usr + 10.59 sys = 61.29 CPU)
Result​: FAIL

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
[...]
ok 82 # skip No lstat
ok 83 # skip No lstat
# Zzz...
ok 84 - can create tmp file
# time=1396912752, stat=(10 0 33206 1 0 0 10 0 1396911600 1396912758 1396912757 )
# -MAC=(-6.94444444444444e-005 0.0133333333333333 -5.78703703703704e-005)
ok 85 - negative -M works
not ok 86 - negative -A works
ok 87 - negative -C works
ok 88 - unlink tmp file
ok 89 - can create temp file
ok 90 - -T _ doesn't break the statbuffer
[...]

K​:\perl\t>..\perl harness -v win32\fs.t
win32/fs.t .. # Failed test 4 - check for EEXIST at win32/fs.t line 28
# got "22"
# expected "17"

1..4
ok 1 - Cannot link to unknown file
ok 2 - check errno is ENOENT
ok 3 - Cannot link to existing file
not ok 4 - check for EEXIST
Failed 1/4 subtests

@p5pRT
Copy link
Author

p5pRT commented Apr 8, 2014

From @bulk88

On Thu Apr 03 23​:47​:37 2014, tonyc wrote​:

On Thu, Apr 03, 2014 at 11​:23​:49PM -0700, bulk88 via RT wrote​:

On Tue Mar 25 17​:46​:18 2014, tonyc wrote​:

On Wed Mar 05 04​:47​:12 2014, bulk88 wrote​:

Here 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.

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

So when will these things start getting commited?

Next week, I'm testing other FAT on Win32 fixes, and until last night
it was slow (USB2).

Tony

No failures on smoke-me/tonyc/fatfix


../lib/vars.t ..................................................... ok
../lib/vars_carp.t ................................................ ok
../lib/vmsish.t ................................................... ok
../lib/warnings.t ................................................. ok
x2p/find2perl.t ................................................... skipped​: Nee
d something vaguely POSIX
x2p/s2p.t ......................................................... ok

Test Summary Report


../cpan/IPC-Cmd/t/01_IPC-Cmd.t (Wstat​: 256 Test
s​: 459 Failed​: 1)
  Failed test​: 141
  Non-zero exit status​: 1
../dist/lib/t/01lib.t (Wstat​: 1280 Tes
ts​: 13 Failed​: 0)
  Non-zero exit status​: 5
Files=2407, Tests=690383, 3494 wallclock secs (82.97 usr + 4.73 sys = 87.70 CPU
)
Result​: FAIL
NMAKE : fatal error U1077​: '..\perl.exe' : return code '0x1'
Stop.

F​:\perl\win32>cd ..\t

F​:\perl\t>perl harness ../cpan/IPC-Cmd/t/01_IPC-Cmd.t
../cpan/IPC-Cmd/t/01_IPC-Cmd.t .. ok
All tests successful.
Files=1, Tests=459, 2 wallclock secs ( 0.05 usr + 0.02 sys = 0.06 CPU)
Result​: PASS

F​:\perl\t>perl -I..\lib harness ../cpan/IPC-Cmd/t/01_IPC-Cmd.t
../cpan/IPC-Cmd/t/01_IPC-Cmd.t .. ok
All tests successful.
Files=1, Tests=459, 3 wallclock secs ( 0.03 usr + 0.00 sys = 0.03 CPU)
Result​: PASS

F​:\perl\t>


--
bulk88 ~ bulk88 at hotmail.com

@p5pRT
Copy link
Author

p5pRT commented Apr 8, 2014

From @steve-m-hay

On 8 April 2014 00​:20, Steve Hay via RT <perlbug-followup@​perl.org> wrote​:

On Thu Apr 03 23​:47​:37 2014, tonyc wrote​:

On Thu, Apr 03, 2014 at 11​:23​:49PM -0700, bulk88 via RT wrote​:

On Tue Mar 25 17​:46​:18 2014, tonyc wrote​:

On Wed Mar 05 04​:47​:12 2014, bulk88 wrote​:

Here 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.

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

So when will these things start getting commited?

Next week, I'm testing other FAT on Win32 fixes, and until last night
it was slow (USB2).

Out of the box I currently get these failures on FAT32​:

Test Summary Report
-------------------
io/fs.t (Wstat​: 0 Tests​: 55 Failed​: 8)
Failed tests​: 2-5, 7-9, 11
op/stat.t (Wstat​: 0 Tests​: 113 Failed​: 3)
Failed tests​: 5, 7, 86
win32/fs.t (Wstat​: 0 Tests​: 4 Failed​: 1)
Failed test​: 4
Files=2407, Tests=690430, 3901 wallclock secs (50.70 usr + 10.59 sys = 61.29 CPU)
Result​: FAIL

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
[...]
ok 82 # skip No lstat
ok 83 # skip No lstat
# Zzz...
ok 84 - can create tmp file
# time=1396912752, stat=(10 0 33206 1 0 0 10 0 1396911600 1396912758 1396912757 )
# -MAC=(-6.94444444444444e-005 0.0133333333333333 -5.78703703703704e-005)
ok 85 - negative -M works
not ok 86 - negative -A works
ok 87 - negative -C works
ok 88 - unlink tmp file
ok 89 - can create temp file
ok 90 - -T _ doesn't break the statbuffer
[...]

K​:\perl\t>..\perl harness -v win32\fs.t
win32/fs.t .. # Failed test 4 - check for EEXIST at win32/fs.t line 28
# got "22"
# expected "17"

1..4
ok 1 - Cannot link to unknown file
ok 2 - check errno is ENOENT
ok 3 - Cannot link to existing file
not ok 4 - check for EEXIST
Failed 1/4 subtests

I hadn't noticed the smoke-me/tonyc/fatfix branch then, but having
tried it now I find (as bulk88 did) that all tests now pass (or skip).

@p5pRT
Copy link
Author

p5pRT commented Apr 9, 2014

From @tonycoz

On Tue Apr 08 16​:28​:46 2014, shay wrote​:

I hadn't noticed the smoke-me/tonyc/fatfix branch then, but having
tried it now I find (as bulk88 did) that all tests now pass (or skip).

Thanks Steve, bulk88.

Pushed as 58a5e53, 3420f3f, e08070a.

Tony

@p5pRT
Copy link
Author

p5pRT commented Apr 9, 2014

@tonycoz - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant