diff options
author | Marek Kirejczyk <marekkirejczyk@users.noreply.github.com> | 2016-05-21 14:14:22 +0200 |
---|---|---|
committer | Rafael França <rafaelmfranca@gmail.com> | 2016-05-21 09:14:22 -0300 |
commit | dd829df07e632209404b025423f57d63148d0867 (patch) | |
tree | 99118e90592dcbbfc11b836e878b6487c363ef58 /activesupport/test/xml_mini | |
parent | 91421984b7182a483db0f96239e2d5f27ea3a9de (diff) | |
download | rails-dd829df07e632209404b025423f57d63148d0867.tar.gz rails-dd829df07e632209404b025423f57d63148d0867.tar.bz2 rails-dd829df07e632209404b025423f57d63148d0867.zip |
Fix Hash#from_xml with frozen strings (#24718)
* Hash#from_xml works with frozen strings
Fixes #24647
* Fix rexml engine test
[Marek Kirejczyk + Rafael Mendonça França]
Diffstat (limited to 'activesupport/test/xml_mini')
-rw-r--r-- | activesupport/test/xml_mini/rexml_engine_test.rb | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/activesupport/test/xml_mini/rexml_engine_test.rb b/activesupport/test/xml_mini/rexml_engine_test.rb index f0067ca656..6e9ce7ac11 100644 --- a/activesupport/test/xml_mini/rexml_engine_test.rb +++ b/activesupport/test/xml_mini/rexml_engine_test.rb @@ -22,14 +22,24 @@ class REXMLEngineTest < ActiveSupport::TestCase morning </root> eoxml - assert_equal_rexml(io) + hash = ActiveSupport::XmlMini.parse(io) + assert hash.has_key?('root') + assert hash['root'].has_key?('products') + assert_match "good", hash['root']['__content__'] + products = hash['root']['products'] + assert products.has_key?("__content__") + assert_match 'hello everyone', products['__content__'] + end + + def test_parse_from_empty_string + ActiveSupport::XmlMini.backend = 'REXML' + assert_equal({}, ActiveSupport::XmlMini.parse("")) + end + + def test_parse_from_frozen_string + ActiveSupport::XmlMini.backend = 'REXML' + xml_string = "<root></root>".freeze + assert_equal({"root" => {}}, ActiveSupport::XmlMini.parse(xml_string)) end - private - def assert_equal_rexml(xml) - parsed_xml = ActiveSupport::XmlMini.parse(xml) - xml.rewind if xml.respond_to?(:rewind) - hash = ActiveSupport::XmlMini.with_backend('REXML') { ActiveSupport::XmlMini.parse(xml) } - assert_equal(hash, parsed_xml) - end end |