diff --git a/lib/oga/xml/tree_builder.rb b/lib/oga/xml/tree_builder.rb index 92877d3..0805e39 100644 --- a/lib/oga/xml/tree_builder.rb +++ b/lib/oga/xml/tree_builder.rb @@ -120,6 +120,11 @@ module Oga return *node end + ## + # Raises for every unhandled node. + # + # @param [Oga::AST::Node] node + # def handler_missing(node) raise "No handler for node type #{node.type.inspect}" end diff --git a/spec/oga/xml/tree_builder_spec.rb b/spec/oga/xml/tree_builder_spec.rb index d4eafa8..0e6323c 100644 --- a/spec/oga/xml/tree_builder_spec.rb +++ b/spec/oga/xml/tree_builder_spec.rb @@ -228,4 +228,15 @@ describe Oga::XML::TreeBuilder do @builder.process(s(:attributes)).should == {} end end + + context '#handler_missing' do + before do + @node = s(:foo, 'bar') + end + + example 'raise when processing an unknown node' do + lambda { @builder.process(@node) } + .should raise_error('No handler for node type :foo') + end + end end