Bug #1685

Updated by Yusuke Endoh over 1 year ago

=begin

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

=end

Back