summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2024-06-27 14:02:49 -0400
committerPeter Zhu <peter@peterzhu.ca>2024-06-27 14:06:40 -0400
commit176c4bb3c7db87ca5b0486012cb6a005105448c5 (patch)
treea3982d78847e0f7a9227bce3839a19bb14f5caf4 /test/ruby
parent9c5e9d29f0c9b025577cb72b421b9682bfadcd37 (diff)
Fix corruption of internal encoding string
[Bug #20598] Just like [Bug #20595], Encoding#name_list and Encoding#aliases can have their strings corrupted when Encoding.default_internal is set to nil. Co-authored-by: Matthew Valentine-House <matt@eightbitraptor.com>
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_m17n.rb22
1 files changed, 14 insertions, 8 deletions
diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb
index 3c7bb4b870..630ba269c0 100644
--- a/test/ruby/test_m17n.rb
+++ b/test/ruby/test_m17n.rb
@@ -1722,14 +1722,20 @@ class TestM17N < Test::Unit::TestCase
end
def test_encoding_names_of_default_internal
- # [Bug #20595]
- assert_separately(%w(-W0), "#{<<~"begin;"}\n#{<<~"end;"}")
- begin;
- Encoding.default_internal = Encoding::ASCII_8BIT
- names = Encoding.default_internal.names
- Encoding.default_internal = nil
- assert_include names, "int" + "ernal", "[Bug #20595]"
- end;
+ # [Bug #20595] [Bug #20598]
+ [
+ "default_internal.names",
+ "name_list",
+ "aliases.keys"
+ ].each do |method|
+ assert_separately(%w(-W0), <<~RUBY)
+ exp_name = "int" + "ernal"
+ Encoding.default_internal = Encoding::ASCII_8BIT
+ name = Encoding.#{method}.find { |x| x == exp_name }
+ Encoding.default_internal = nil
+ assert_equal exp_name, name, "Encoding.#{method} [Bug #20595] [Bug #20598]"
+ RUBY
+ end
end
def test_greek_capital_gap