From: noreply@... Date: 2007-02-16T02:09:08+09:00 Subject: [ ruby-Bugs-8676 ] File.basename fails on Windows root paths Bugs item #8676, was opened at 2007-02-15 10:09 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=8676&group_id=426 Category: Core Group: 1.8.5 Status: Open Resolution: None Priority: 3 Submitted By: Daniel Berger (djberg96) Assigned to: Nobody (None) Summary: File.basename fails on Windows root paths Initial Comment: Ruby 1.8.5 Windows XP Pro, SP2 The File.basename method does not work properly on Windows root paths. IMO, calling File.basename on a root path should return itself. However, on MS Windows it appears to be dropping the volume name and it doesn't handle UNC root paths correctly: require 'test/unit' class TC_File_Basename_ClassMethod < Test::Unit::TestCase def test_basename_windows_root_forward_slash assert_equal("C:/", File.basename("C:/")) end def test_basename_windows_root_backslash assert_equal("C:\", File.basename("C:\")) # Or "C:/" if you prefer end def test_basename_windows_unc_root_two_elements assert_equal("\\foo\bar", File.basename("\\foo\bar")) end def test_basename_windows_unc_root_one_element assert_equal("\\foo", File.basename("\\foo")) end end C:\Documents and Settings\djberge\My Documents\Ruby>ruby basename_bugs.rb Loaded suite basename_bugs Started FFFF Finished in 0.07 seconds. 1) Failure: test_basename_windows_root_backslash(TC_File_Basename_ClassMethod) [basename_bugs.rb:9]: <"C:\"> expected but was <"\">. 2) Failure: test_basename_windows_root_forward_slash(TC_File_Basename_ClassMethod) [basename_bugs.rb:5]: <"C:/"> expected but was <"/">. 3) Failure: test_basename_windows_unc_root_one_element(TC_File_Basename_ClassMethod) [basename_bugs.rb:17]: <"\\foo"> expected but was <"/">. 4) Failure: test_basename_windows_unc_root_two_elements(TC_File_Basename_ClassMethod) [basename_bugs.rb:13]: <"\\foo\bar"> expected but was <"/">. 4 tests, 4 assertions, 4 failures, 0 errors This method should probably be moved to win32.c where you can use the Windows path handling functions from shlwapi.h to get things right, and convert the path separators as you see fit. Regards, Dan ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=8676&group_id=426