From a7092270da3528a09ca4e2249e55ab12cb7f4c11 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 20 May 2013 18:10:34 +0000 Subject: test_dir_m17n.rb: assert_separately * test/ruby/test_dir_m17n.rb: prefer assert_separately over assert_ruby_status for more descriptive messages. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_dir_m17n.rb | 146 +++++++++++++++++++++++++-------------------- 1 file changed, 82 insertions(+), 64 deletions(-) (limited to 'test/ruby/test_dir_m17n.rb') diff --git a/test/ruby/test_dir_m17n.rb b/test/ruby/test_dir_m17n.rb index 50aea013b5..79017c03a2 100644 --- a/test/ruby/test_dir_m17n.rb +++ b/test/ruby/test_dir_m17n.rb @@ -13,28 +13,32 @@ class TestDir_M17N < Test::Unit::TestCase def create_and_check_raw_file_name(code, encoding) with_tmpdir { |dir| - create_file_program = %Q[ + assert_separately(["-E#{encoding}"], <<-EOS, :chdir=>dir) filename = #{code}.chr('UTF-8').force_encoding("#{encoding}") File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) - ] - assert_ruby_status(["-E#{encoding}"], create_file_program, nil, :chdir=>dir) + assert_include(ents, filename) + EOS - test_file_program = %Q[ + assert_separately(%w[-EASCII-8BIT], <<-EOS, :chdir=>dir) filename = #{code}.chr('UTF-8').force_encoding("ASCII-8BIT") opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) expected_filename = #{code}.chr('UTF-8').encode(Encoding.find("filesystem")) rescue expected_filename = "?" expected_filename = expected_filename.force_encoding("ASCII-8BIT") - result = ents.include?(filename) || (/mswin|mingw/ =~ RUBY_PLATFORM && ents.include?(expected_filename)) - if !result && /mswin|mingw/ =~ RUBY_PLATFORM - exit Dir.entries(".", {:encoding => Encoding.find("filesystem")}).include?(expected_filename) + if /mswin|mingw/ =~ RUBY_PLATFORM + case + when ents.include?(filename) + when ents.include?(expected_filename) + filename = expected_filename + else + ents = Dir.entries(".", {:encoding => Encoding.find("filesystem")}) + filename = expected_filename + end end - exit result - ] - assert_ruby_status(%w[-EASCII-8BIT], test_file_program, nil, :chdir=>dir) + assert_include(ents, filename) + EOS } end @@ -42,69 +46,67 @@ class TestDir_M17N < Test::Unit::TestCase def test_filename_extutf8 with_tmpdir {|d| - assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8], <<-'EOS', :chdir=>d) filename = "\u3042" File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) + assert_include(ents, filename) EOS } end def test_filename_extutf8_invalid with_tmpdir {|d| - assert_ruby_status(%w[-EASCII-8BIT], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EASCII-8BIT], <<-'EOS', :chdir=>d) filename = "\xff".force_encoding("ASCII-8BIT") # invalid byte sequence as UTF-8 File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) || (/darwin/ =~ RUBY_PLATFORM && ents.include?("%FF")) + filename = "%FF" if /darwin/ =~ RUBY_PLATFORM && ents.include?("%FF") + assert_include(ents, filename) EOS - assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8], <<-'EOS', :chdir=>d) filename = "\xff".force_encoding("UTF-8") # invalid byte sequence as UTF-8 File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) || (/darwin/ =~ RUBY_PLATFORM && ents.include?("%FF")) + filename = "%FF" if /darwin/ =~ RUBY_PLATFORM && ents.include?("%FF") + assert_include(ents, filename) EOS } end unless /mswin|mingw/ =~ RUBY_PLATFORM def test_filename_as_bytes_extutf8 with_tmpdir {|d| - assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8], <<-'EOS', :chdir=>d) filename = "\xc2\xa1".force_encoding("utf-8") File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) + assert_include(ents, filename) EOS - assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8], <<-'EOS', :chdir=>d) if /mswin|mingw/ =~ RUBY_PLATFORM filename = "\x8f\xa2\xc2".force_encoding("euc-jp") else filename = "\xc2\xa1".force_encoding("euc-jp") end - begin + assert_nothing_raised(Errno::ENOENT) do open(filename) {} - exit true - rescue Errno::ENOENT - exit false end EOS # no meaning test on windows unless /mswin|mingw/ =~ RUBY_PLATFORM - assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + assert_separately(%W[-EUTF-8], <<-'EOS', :chdir=>d) filename1 = "\xc2\xa1".force_encoding("utf-8") filename2 = "\xc2\xa1".force_encoding("euc-jp") filename3 = filename1.encode("euc-jp") filename4 = filename2.encode("utf-8") - s1 = File.stat(filename1) rescue nil - s2 = File.stat(filename2) rescue nil - s3 = File.stat(filename3) rescue nil - s4 = File.stat(filename4) rescue nil - exit((s1 && s2 && !s3 && !s4) ? true : false) + assert_file.stat(filename1) + assert_file.stat(filename2) + assert_file.not_exist?(filename3) + assert_file.not_exist?(filename4) EOS end } @@ -114,26 +116,23 @@ class TestDir_M17N < Test::Unit::TestCase def test_filename_extutf8_inteucjp_representable with_tmpdir {|d| - assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8], <<-'EOS', :chdir=>d) filename = "\u3042" File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) + assert_include(ents, filename) EOS - assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8:EUC-JP], <<-'EOS', :chdir=>d) filename = "\xA4\xA2".force_encoding("euc-jp") opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) + assert_include(ents, filename) EOS - assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8:EUC-JP], <<-'EOS', :chdir=>d) filename = "\xA4\xA2".force_encoding("euc-jp") - begin + assert_nothing_raised(Errno::ENOENT) do open(filename) {} - exit true - rescue Errno::ENOENT - exit false end EOS } @@ -141,30 +140,31 @@ class TestDir_M17N < Test::Unit::TestCase def test_filename_extutf8_inteucjp_unrepresentable with_tmpdir {|d| - assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8], <<-'EOS', :chdir=>d) filename1 = "\u2661" # WHITE HEART SUIT which is not representable in EUC-JP filename2 = "\u3042" # HIRAGANA LETTER A which is representable in EUC-JP File.open(filename1, "w") {} File.open(filename2, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename1) && ents.include?(filename2) + assert_include(ents, filename1) + assert_include(ents, filename2) EOS - assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8:EUC-JP], <<-'EOS', :chdir=>d) filename1 = "\u2661" # WHITE HEART SUIT which is not representable in EUC-JP filename2 = "\xA4\xA2".force_encoding("euc-jp") # HIRAGANA LETTER A in EUC-JP opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename1) && ents.include?(filename2) + assert_include(ents, filename1) + assert_include(ents, filename2) EOS - assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EUTF-8:EUC-JP], <<-'EOS', :chdir=>d) filename1 = "\u2661" # WHITE HEART SUIT which is not representable in EUC-JP filename2 = "\u3042" # HIRAGANA LETTER A which is representable in EUC-JP filename3 = "\xA4\xA2".force_encoding("euc-jp") # HIRAGANA LETTER A in EUC-JP - s1 = File.stat(filename1) rescue nil - s2 = File.stat(filename2) rescue nil - s3 = File.stat(filename3) rescue nil - exit((s1 && s2 && s3) ? true : false) + assert_file.stat(filename1) + assert_file.stat(filename2) + assert_file.stat(filename3) EOS } end @@ -173,39 +173,51 @@ class TestDir_M17N < Test::Unit::TestCase def test_filename_bytes_euc_jp with_tmpdir {|d| - assert_ruby_status(%w[-EEUC-JP], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EEUC-JP], <<-'EOS', :chdir=>d) filename = "\xA4\xA2".force_encoding("euc-jp") File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) ents.each {|e| e.force_encoding("ASCII-8BIT") } - exit ents.include?(filename.force_encoding("ASCII-8BIT")) || - (/darwin/ =~ RUBY_PLATFORM && ents.include?("%A4%A2".force_encoding("ASCII-8BIT"))) + if /darwin/ =~ RUBY_PLATFORM && ents.include?("%A4%A2".force_encoding("ASCII-8BIT")) + filename = "%A4%A2" + end + assert_include(ents, filename.force_encoding("ASCII-8BIT")) EOS } end def test_filename_euc_jp with_tmpdir {|d| - assert_ruby_status(%w[-EEUC-JP], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EEUC-JP], <<-'EOS', :chdir=>d) filename = "\xA4\xA2".force_encoding("euc-jp") File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) || (/darwin/ =~ RUBY_PLATFORM && ents.include?("%A4%A2".force_encoding("euc-jp"))) + if /darwin/ =~ RUBY_PLATFORM && ents.include?(eucjp_filename = "%A4%A2".force_encoding("euc-jp")) + filename = eucjp_filename + end + assert_include(ents, filename) EOS - assert_ruby_status(%w[-EASCII-8BIT], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EASCII-8BIT], <<-'EOS', :chdir=>d) filename = "\xA4\xA2".force_encoding('ASCII-8BIT') win_expected_filename = filename.encode(Encoding.find("filesystem"), "euc-jp") rescue "?" opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - result = ents.include?(filename) || - (/darwin/ =~ RUBY_PLATFORM && ents.include?("%A4%A2".force_encoding("ASCII-8BIT"))) || - (/mswin|mingw/ =~ RUBY_PLATFORM && ents.include?(win_expected_filename.force_encoding("ASCII-8BIT"))) - if !result && /mswin|mingw/ =~ RUBY_PLATFORM - exit Dir.entries(".", {:encoding => Encoding.find("filesystem")}).include?(win_expected_filename) + unless ents.include?(filename) + case RUBY_PLATFORM + when /darwin/ + if ents.include?(asc_filename = "%A4%A2".force_encoding("ASCII-8BIT")) + filename = asc_filename + end + when /mswin|mingw/ + if ents.include?(win_expected_filename.dup.force_encoding("ASCII-8BIT")) + ents = Dir.entries(".", {:encoding => Encoding.find("filesystem")}) + filename = win_expected_filename + end + end end - exit result + assert_include(ents, filename) EOS } end @@ -224,18 +236,24 @@ class TestDir_M17N < Test::Unit::TestCase def test_filename_ext_euc_jp_and_int_utf_8 with_tmpdir {|d| - assert_ruby_status(%w[-EEUC-JP], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EEUC-JP], <<-'EOS', :chdir=>d) filename = "\xA4\xA2".force_encoding("euc-jp") File.open(filename, "w") {} opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) || (/darwin/ =~ RUBY_PLATFORM && ents.include?("%A4%A2".force_encoding("euc-jp"))) + if /darwin/ =~ RUBY_PLATFORM && ents.include?(eucjp_filename = "%A4%A2".force_encoding("euc-jp")) + filename = eucjp_filename + end + assert_include(ents, filename) EOS - assert_ruby_status(%w[-EEUC-JP:UTF-8], <<-'EOS', nil, :chdir=>d) + assert_separately(%w[-EEUC-JP:UTF-8], <<-'EOS', :chdir=>d) filename = "\u3042" opts = {:encoding => Encoding.default_external} if /mswin|mingw/ =~ RUBY_PLATFORM ents = Dir.entries(".", opts) - exit ents.include?(filename) || (/darwin/ =~ RUBY_PLATFORM && ents.include?("%A4%A2")) + if /darwin/ =~ RUBY_PLATFORM && ents.include?("%A4%A2") + filename = "%A4%A2" + end + assert_include(ents, filename) EOS } end -- cgit v1.2.3