From 8e3901b5e6b4900cb4dd4cc1154180f42b51db2b Mon Sep 17 00:00:00 2001 From: Jon Moss Date: Sun, 20 Nov 2016 10:14:56 -0500 Subject: Move tests to a module, include in subclasses, style linting This fixes an error where the test runner would try and run XMLMiniEngineTest like a normal test class, except it's abstract. Now, to circumvent this, we don't include any of the actual tests in XMLMiniEngineTest; they are wrapped in a module that is included in subclass when they inherit from XMLMiniEngineTest. Pretty neat, huh? --- .../test/xml_mini/xml_mini_engine_test.rb | 383 +++++++++++---------- 1 file changed, 195 insertions(+), 188 deletions(-) (limited to 'activesupport/test') diff --git a/activesupport/test/xml_mini/xml_mini_engine_test.rb b/activesupport/test/xml_mini/xml_mini_engine_test.rb index a7d4fe20ad..5be9084c9d 100644 --- a/activesupport/test/xml_mini/xml_mini_engine_test.rb +++ b/activesupport/test/xml_mini/xml_mini_engine_test.rb @@ -11,7 +11,12 @@ class XMLMiniEngineTest < ActiveSupport::TestCase end def self.run_with_platform(platform_name) - yielf if RUBY_PLATFORM.include?(platform_name) + yield if RUBY_PLATFORM.include?(platform_name) + end + + def self.inherited(base) + base.include EngineTests + super end def setup @@ -25,226 +30,228 @@ class XMLMiniEngineTest < ActiveSupport::TestCase super end - def test_file_from_xml - hash = Hash.from_xml(<<-eoxml) - - - - - eoxml - assert hash.key?("blog") - assert hash["blog"].key?("logo") - - file = hash["blog"]["logo"] - assert_equal "logo.png", file.original_filename - assert_equal "image/png", file.content_type - end - - def test_exception_thrown_on_expansion_attack - assert_raise expansion_attack_error do - Hash.from_xml(<<-eoxml) - - - - - - - - - ]> - - &a; - - eoxml + module EngineTests + def test_file_from_xml + hash = Hash.from_xml(<<-eoxml) + + + + + eoxml + assert hash.key?("blog") + assert hash["blog"].key?("logo") + + file = hash["blog"]["logo"] + assert_equal "logo.png", file.original_filename + assert_equal "image/png", file.content_type end - end - - def test_setting_backend - assert_engine_class ActiveSupport::XmlMini.backend - end - def test_blank_returns_empty_hash - assert_equal({}, ActiveSupport::XmlMini.parse(nil)) - assert_equal({}, ActiveSupport::XmlMini.parse("")) - end - - def test_array_type_makes_an_array - assert_equal_rexml(<<-eoxml) - - - a post - another post - - - eoxml - end - - def test_one_node_document_as_hash - assert_equal_rexml(<<-eoxml) - - eoxml - end + def test_exception_thrown_on_expansion_attack + assert_raise expansion_attack_error do + Hash.from_xml(<<-eoxml) + + + + + + + + + ]> + + &a; + + eoxml + end + end - def test_one_node_with_attributes_document_as_hash - assert_equal_rexml(<<-eoxml) - - eoxml - end + def test_setting_backend + assert_engine_class ActiveSupport::XmlMini.backend + end - def test_products_node_with_book_node_as_hash - assert_equal_rexml(<<-eoxml) - - - - eoxml - end + def test_blank_returns_empty_hash + assert_equal({}, ActiveSupport::XmlMini.parse(nil)) + assert_equal({}, ActiveSupport::XmlMini.parse("")) + end - def test_products_node_with_two_book_nodes_as_hash - assert_equal_rexml(<<-eoxml) - - - - - eoxml - end + def test_array_type_makes_an_array + assert_equal_rexml(<<-eoxml) + + + a post + another post + + + eoxml + end - def test_single_node_with_content_as_hash - assert_equal_rexml(<<-eoxml) - - hello world - - eoxml - end + def test_one_node_document_as_hash + assert_equal_rexml(<<-eoxml) + + eoxml + end - def test_children_with_children - assert_equal_rexml(<<-eoxml) - - - - - - eoxml - end + def test_one_node_with_attributes_document_as_hash + assert_equal_rexml(<<-eoxml) + + eoxml + end - def test_children_with_text - assert_equal_rexml(<<-eoxml) - + def test_products_node_with_book_node_as_hash + assert_equal_rexml(<<-eoxml) - hello everyone + - - eoxml - end + eoxml + end - def test_children_with_non_adjacent_text - assert_equal_rexml(<<-eoxml) - - good + def test_products_node_with_two_book_nodes_as_hash + assert_equal_rexml(<<-eoxml) - hello everyone + + - morning - - eoxml - end - - def test_parse_from_io - skip_unless_extended_engine + eoxml + end - assert_equal_rexml(StringIO.new(<<-eoxml)) - - good + def test_single_node_with_content_as_hash + assert_equal_rexml(<<-eoxml) - hello everyone + hello world - morning - - eoxml - end - - def test_children_with_simple_cdata - skip_unless_extended_engine + eoxml + end - assert_equal_rexml(<<-eoxml) - - - - - - eoxml - end + def test_children_with_children + assert_equal_rexml(<<-eoxml) + + + + + + eoxml + end - def test_children_with_multiple_cdata - skip_unless_extended_engine + def test_children_with_text + assert_equal_rexml(<<-eoxml) + + + hello everyone + + + eoxml + end - assert_equal_rexml(<<-eoxml) - - - - - - eoxml - end + def test_children_with_non_adjacent_text + assert_equal_rexml(<<-eoxml) + + good + + hello everyone + + morning + + eoxml + end - def test_children_with_text_and_cdata - skip_unless_extended_engine + def test_parse_from_io + skip_unless_extended_engine - assert_equal_rexml(<<-eoxml) - - - hello + assert_equal_rexml(StringIO.new(<<-eoxml)) + + good + + hello everyone + morning - - - eoxml - end - - def test_children_with_blank_text - skip_unless_extended_engine + + eoxml + end - assert_equal_rexml(<<-eoxml) - - - - eoxml - end + def test_children_with_simple_cdata + skip_unless_extended_engine - def test_children_with_blank_text_and_attribute - skip_unless_extended_engine + assert_equal_rexml(<<-eoxml) + + + + + + eoxml + end - assert_equal_rexml(<<-eoxml) - - - - eoxml - end + def test_children_with_multiple_cdata + skip_unless_extended_engine - private - def engine - raise NotImplementedError + assert_equal_rexml(<<-eoxml) + + + + + + eoxml end - def assert_engine_class(actual) - assert_equal ActiveSupport.const_get("XmlMini_#{engine}"), actual + def test_children_with_text_and_cdata + skip_unless_extended_engine + + assert_equal_rexml(<<-eoxml) + + + hello + morning + + + eoxml end - 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 + def test_children_with_blank_text + skip_unless_extended_engine - def expansion_attack_error - raise NotImplementedError + assert_equal_rexml(<<-eoxml) + + + + eoxml end - def extended_engine? - true - end + def test_children_with_blank_text_and_attribute + skip_unless_extended_engine - def skip_unless_extended_engine - skip "#{engine} is not an extended engine" unless extended_engine? + assert_equal_rexml(<<-eoxml) + + + + eoxml end + + private + def engine + raise NotImplementedError + end + + def assert_engine_class(actual) + assert_equal ActiveSupport.const_get("XmlMini_#{engine}"), actual + end + + 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 + + def expansion_attack_error + raise NotImplementedError + end + + def extended_engine? + true + end + + def skip_unless_extended_engine + skip "#{engine} is not an extended engine" unless extended_engine? + end + end end -- cgit v1.2.3