From: Heesob Park Date: 2012-08-14T16:52:18+09:00 Subject: [ruby-core:47179] Re: [ruby-trunk - Bug #6851] Result of File.stat("c:/...") is different from 1.9.3 Hi, 2012/8/14 usa (Usaku NAKAMURA) > > > Issue #6851 has been updated by usa (Usaku NAKAMURA). > > > Hopefully, fixed. > > I added some test cases. > Please point out, if I have an oversight. > > ---------------------------------------- > Bug #6851: Result of File.stat("c:/...") is different from 1.9.3 > https://bugs.ruby-lang.org/issues/6851#change-28859 > > Author: phasis68 (Heesob Park) > Status: Closed > Priority: Normal > Assignee: usa (Usaku NAKAMURA) > Category: core > Target version: 2.0.0 > ruby -v: ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100] > > > What is the correct result of File.stat("c:/...") on Windows? > > File#stat for path like "c:/..." succeeds on trunk 36676. > > C:\>ruby -ve 'p File.stat("c:/...")' > ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100] > # 0, blksize=nil, blocks=nil, atime=2012-08-10 14:53:27 +0900, mtime=2012-08-10 09 > :40:33 +0900, ctime=2011-04-08 19:43:44 +0900> > > C:\>ruby -ve 'p File.stat("c:/....")' > ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100] > # 0, blksize=nil, blocks=nil, atime=2012-08-10 14:53:32 +0900, mtime=2012-08-10 09 > :40:33 +0900, ctime=2011-04-08 19:43:44 +0900> > > C:\>ruby -ve 'p File.stat("c:/..../..")' > ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100] > # 0, blksize=nil, blocks=nil, atime=2012-08-10 14:53:45 +0900, mtime=2012-08-10 09 > :40:33 +0900, ctime=2011-04-08 19:43:44 +0900> > > But, File#stat raises exception on Ruby 1.9.3. > > C:\Ruby193\bin>ruby -ve 'p File.stat("c:/...") > ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32] > -e:1:in `stat': Invalid argument - c:/... (Errno::EINVAL) > from -e:1:in `
' > > C:\Ruby193\bin>ruby -ve 'p File.stat("c:/....") > ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32] > -e:1:in `stat': No such file or directory - c:/.... (Errno::ENOENT) > from -e:1:in `
' > I confirmed the bug is fixed. I found another odd behavior of File#stat. File#stat of some directory + ".." always works on Windows even if the directory is not exists. C:\work>ruby -e 'p File.stat("./notexist")' -e:1:in `stat': No such file or directory - ./notexist (Errno::ENOENT) from -e:1:in `
' C:\work>ruby -e 'p File.stat("./notexist/..")' # C:\work>ruby -e 'p File.stat("../notexist")' -e:1:in `stat': No such file or directory - ../notexist (Errno::ENOENT) from -e:1:in `
' C:\work>ruby -e 'p File.stat("../notexist/..")' # Here is Linux behavior. [tmp]$ ruby -ve 'File.stat("./notexist")' ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux] -e:1:in `stat': No such file or directory - ./notexist (Errno::ENOENT) from -e:1 [tmp]$ ruby -ve 'File.stat("./notexist/..")' ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux] -e:1:in `stat': No such file or directory - ./notexist/.. (Errno::ENOENT) from -e:1 Is this a bug or feature? Regards, Park Heesob