summaryrefslogtreecommitdiff
path: root/test/ruby/test_io_m17n.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-06-09 11:34:58 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-06-09 12:27:05 +0900
commit562c0bfedaa96a1488cbfc0d282412743ea8cde0 (patch)
tree4450f7d96c52849ed2e3340fa23ebc4557e02763 /test/ruby/test_io_m17n.rb
parenta8ef498d6bfbd5c665b75a0782526d18b361dd5b (diff)
Split test_strip_bom for each encoding
Diffstat (limited to 'test/ruby/test_io_m17n.rb')
-rw-r--r--test/ruby/test_io_m17n.rb46
1 files changed, 34 insertions, 12 deletions
diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb
index 4cc3d15f3d1..6fb8d8a0cfb 100644
--- a/test/ruby/test_io_m17n.rb
+++ b/test/ruby/test_io_m17n.rb
@@ -2080,26 +2080,42 @@ EOT
}
end
- def test_strip_bom
- with_tmpdir {
- text = "\uFEFFa"
- stripped = "a"
- %w/UTF-8 UTF-16BE UTF-16LE UTF-32BE UTF-32LE/.each do |name|
- path = '%s-bom.txt' % name
+ %w/UTF-8 UTF-16BE UTF-16LE UTF-32BE UTF-32LE/.each do |name|
+ define_method("test_strip_bom:#{name}") do
+ path = "#{name}-bom.txt"
+ with_tmpdir {
+ text = "\uFEFFa"
+ stripped = "a"
content = text.encode(name)
generate_file(path, content)
result = File.read(path, mode: 'rb:BOM|UTF-8')
assert_equal(Encoding.find(name), result.encoding, name)
assert_equal(content[1..-1].b, result.b, name)
- result = File.read(path, mode: 'rb:BOM|UTF-8:UTF-8')
- assert_equal(Encoding::UTF_8, result.encoding, name)
- assert_equal(stripped, result, name)
- end
+ %w[rb rt r].each do |mode|
+ message = "#{name}, mode: #{mode.dump}"
+ result = File.read(path, mode: "#{mode}:BOM|UTF-8:UTF-8")
+ assert_equal(Encoding::UTF_8, result.encoding, message)
+ assert_equal(stripped, result, message)
+ end
+ }
+ end
+ end
- bug3407 = '[ruby-core:30641]'
+ def test_strip_bom_no_conv
+ with_tmpdir {
path = 'UTF-8-bom.txt'
+ generate_file(path, "\uFEFFa")
+
+ bug3407 = '[ruby-core:30641]'
result = File.read(path, encoding: 'BOM|UTF-8')
- assert_equal("a", result.force_encoding("ascii-8bit"), bug3407)
+ assert_equal("a", result.b, bug3407)
+ }
+ end
+
+ def test_strip_bom_invalid
+ with_tmpdir {
+ path = 'UTF-8-bom.txt'
+ generate_file(path, "\uFEFFa")
bug8323 = '[ruby-core:54563] [Bug #8323]'
expected = "a\xff".force_encoding("utf-8")
@@ -2110,8 +2126,14 @@ EOT
result = File.read(path, encoding: 'BOM|UTF-8:UTF-8')
assert_not_predicate(result, :valid_encoding?, bug8323)
assert_equal(expected, result, bug8323)
+ }
+ end
+ def test_strip_bom_no_bom
+ with_tmpdir {
+ bug8323 = '[ruby-core:54563] [Bug #8323]'
path = 'ascii.txt'
+ stripped = "a"
generate_file(path, stripped)
result = File.read(path, encoding: 'BOM|UTF-8')
assert_equal(stripped, result, bug8323)