From 3633bc0358f947e027e7e471b1038d8d0380f477 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Mon, 7 Jul 2025 10:10:19 +0900 Subject: [PATCH] Fix wrong Encoding resolution In this context, `Encoding` means `REXML::Encoding` not `Encoding`. --- lib/rexml/encoding.rb | 2 +- test/test_source.rb | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/test_source.rb diff --git a/lib/rexml/encoding.rb b/lib/rexml/encoding.rb index da2d70d6..f8459316 100644 --- a/lib/rexml/encoding.rb +++ b/lib/rexml/encoding.rb @@ -5,7 +5,7 @@ module Encoding # ID ---> Encoding name attr_reader :encoding def encoding=(encoding) - encoding = encoding.name if encoding.is_a?(Encoding) + encoding = encoding.name if encoding.is_a?(::Encoding) if encoding.is_a?(String) original_encoding = encoding encoding = find_encoding(encoding) diff --git a/test/test_source.rb b/test/test_source.rb new file mode 100644 index 00000000..b309105a --- /dev/null +++ b/test/test_source.rb @@ -0,0 +1,21 @@ +require "rexml/source" + +module REXMLTests + class TestSource < Test::Unit::TestCase + def setup + @source = REXML::Source.new(+"") + end + + sub_test_case("#encoding=") do + test("String") do + @source.encoding = "UTF-8" + assert_equal("UTF-8", @source.encoding) + end + + test("Encoding") do + @source.encoding = Encoding::UTF_8 + assert_equal("UTF-8", @source.encoding) + end + end + end +end