From: thomas@... Date: 2014-04-04T11:45:51+00:00 Subject: [ruby-core:61856] [ruby-trunk - Bug #1685] Some windows unicode path issues remain Issue #1685 has been updated by Thomas Thomassen. Martin D��rst wrote: > If you know of anything that's not yet in Ruby 2.2, please tell us, best > by opening a bug for each issue. I've been setting up tests and running them through Ruby 2.2 I find some are fixed but there is still several issues related to file handling. We'll be filing issues for what we have uncovered. ---------------------------------------- Bug #1685: Some windows unicode path issues remain https://bugs.ruby-lang.org/issues/1685#change-46072 * Author: B Kelly * Status: Assigned * Priority: Normal * Assignee: Usaku NAKAMURA * Category: M17N * Target version: next minor * ruby -v: ruby 1.9.2dev (2009-06-24) [i386-mswin32_71] * Backport: ---------------------------------------- =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 ---Files-------------------------------- spatulasnout-unicode-mkdir-diffs.txt (3.56 KB) test_io_unicode_paths.rb (925 Bytes) -- https://bugs.ruby-lang.org/