Sha256: 36e023aa8197f44780edd77a4d42147a5a37d331c8b97f6f42cecf83ba59cfd9

Contents?: true

Size: 1.37 KB

Versions: 3

Compression:

Stored size: 1.37 KB

Contents

require_relative 'helper'

describe 'XML::SAX::Debug event method warning' do
  it 'warns #start_document' do
    assert_match regexp('start_document: []'), parse('<r/>')
  end

  it 'warns #end_document' do
    assert_match regexp('end_document: []'), parse('<r/>')
  end

  it 'warns #start_element' do
    assert_match regexp('start_element: ["r", []]'), parse('<r/>')
  end

  it 'warns #start_element with attributes' do
    assert_match regexp('start_element: ["r", [["id", "1"]]]'), parse('<r id="1"/>')
  end

  it 'warns #end_element' do
    assert_match regexp('end_element: ["r"]'), parse('<r/>')
  end

  it 'warns #characters' do
    assert_match regexp('characters: ["woot"]'), parse('<r>woot</r>')
  end

  it 'warns #comment' do
    assert_match regexp('comment: [" woot "]'), parse('<r><!-- woot --></r>')
  end

  it 'warns #cdata_block' do
    assert_match regexp('cdata_block: [" woot "]'), parse('<r><![CDATA[ woot ]]></r>')
  end

  protected
    def parse(xml)
      parser = Nokogiri::XML::SAX::PushParser.new(XML::SAX::Debug.new)
      capture_stderr do
        parser << xml
        parser.finish
      end
    end

    def regexp(string)
      Regexp.compile('^' + Regexp.escape(string))
    end

    def capture_stderr(&block)
      $stderr = StringIO.new
      yield
      result  = $stderr.rewind && $stderr.read
      $stderr = STDERR
      result
    end
end # DebugTest

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xml-sax-machines-0.4.1 test/test_debug.rb
xml-sax-machines-0.4.0 test/test_debug.rb
xml-sax-machines-0.3.0 test/test_debug.rb