Bug #1685 [ruby-core:24010]

Some windows unicode path issues remain

Added by B Kelly 266 days ago. Updated 217 days ago.

Status :Assigned Start :06/24/2009
Priority :High Due date :
Assigned to :Usaku NAKAMURA % Done :

0%

Category :core
Target version :1.9.2
ruby -v :

ruby 1.9.2dev (2009-06-24) [i386-mswin32_71]


Description

Hi,

I see some nice progress has been made in unicode path
handling on windows.

The following tests are not exhaustive, but do reveal some
remaining issues.

Everything below "NOT WORKING" fails in one way or another.

Regards,

Bill

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# encoding: UTF-8

# Test unicode path/dir handling on windows

require 'test/unit'

class TestUnicodeFilenamesAndPaths < Test::Unit::TestCase
  def setup
    tmpdir = ENV['TEMP'] || "C:/TEMP"
    Dir.chdir tmpdir
    puts Dir.pwd
    testdir = "ruby_unicode_test"
    Dir.mkdir testdir unless test ?d, testdir
    Dir.chdir testdir
    puts Dir.pwd
  end
  
  def test_unicode_paths
    fname_resume = "R\xC3\xA9sum\xC3\xA9".force_encoding("UTF-8")
    fname_chinese = "\u52ec\u52ee\u52f1\u52f2.txt"
    dname_chinese = "\u52ec\u52ee\u52f1\u52f2"

    assert_equal( "UTF-8", fname_resume.encoding.name )
    File.open(fname_resume, "w") {|io| io.puts "Hello, World"}
    
    assert_equal( "UTF-8", fname_chinese.encoding.name )
    File.open(fname_chinese, "w") {|io| io.puts "Hello, World"}
    
    dat = File.read(fname_chinese)
    assert_equal( "Hello, World\n", dat )
    
    files = Dir["*"]
    assert( files.include? fname_resume )
    assert( files.include? fname_chinese )

# NOT WORKING:
    Dir.rmdir dname_chinese rescue nil
    Dir.mkdir dname_chinese
    test ?d, dname_chinese
    Dir.chdir dname_chinese
    cwd = Dir.pwd
    assert( cwd[(-dname_chinese.length)..-1] == dname_chinese )
    Dir.chdir ".."

    x = File.stat(fname_resume)
    x = File.stat(fname_chinese)
    x = File.stat(dname_chinese)
    
    assert( File.exist? fname_resume )
    assert( File.exist? fname_chinese )
    assert( test(?f, fname_resume) )
    assert( test(?f, fname_chinese) )

    files = Dir[fname_resume]
    assert_equal( fname_resume, files.first )
    files = Dir[fname_chinese]
    assert_equal( fname_chinese, files.first )
    files = Dir[dname_chinese]
    assert_equal( dname_chinese, files.first )
  end  
end

Related issues

related to Bug #1771 system()/popen()/popen3() & windows & unicode is not working Assigned 07/13/2009
related to Feature #2255 unicode parameters cannot be passed to ruby Open 10/22/2009
related to Bug #2332 Ruby doesn't run properly from unicode folder on windows Closed 11/04/2009
duplicates Bug #2137 Dir.glob does not support unicode on Windows Assigned 09/23/2009

History

07/16/2009 04:10 PM - Yuki Sonoda

  • Status changed from Open to Assigned
  • Assigned to set to Usaku NAKAMURA

08/12/2009 03:48 PM - Usaku NAKAMURA

  • Priority changed from Normal to High

01/22/2010 10:01 PM - Vit Ondruch

Is there any progress regarding this issue(s)?

Also available in: Atom PDF