Sha256: 7f8d8846acdf654b6e706c55c15c5765f6f8cd0d7d5de3f47c24d5b0654f25e0

Contents?: true

Size: 1.45 KB

Versions: 7

Compression:

Stored size: 1.45 KB

Contents

require "helper"

class TestMemoryLeak < Nokogiri::TestCase
  if ENV['NOKOGIRI_GC'] # turning these off by default for now
    def test_dont_hurt_em_why
      content = File.open("#{File.dirname(__FILE__)}/files/dont_hurt_em_why.xml").read
      ndoc = Nokogiri::XML(content)
      2.times do
        ndoc.search('status text').first.inner_text
        ndoc.search('user name').first.inner_text
        GC.start
      end
    end

    def test_for_memory_leak
      begin
        #  we don't use Dike in any tests, but requiring it has side effects
        #  that can create memory leaks, and that's what we're testing for.
        require 'rubygems'
        require 'dike' # do not remove!

        count_start = count_object_space_documents
        xml_data = <<-EOS
        <test>
          <items>
            <item>abc</item>
            <item>1234</item>
            <item>Zzz</item>
          <items>
        </test>
        EOS
        20.times do
          doc = Nokogiri::XML(xml_data)
          doc.xpath("//item")
        end
        2.times { GC.start }
        count_end = count_object_space_documents
        assert((count_end - count_start) <= 2, "memory leak detected")
      rescue LoadError
        puts "\ndike is not installed, skipping memory leak test"
      end
    end
  end # if NOKOGIRI_GC

  private

  def count_object_space_documents
    count = 0
    ObjectSpace.each_object {|j| count += 1 if j.is_a?(Nokogiri::XML::Document) }
    count
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
nokogiri-1.5.0.beta.4 test/test_memory_leak.rb
nokogiri-1.5.0.beta.4-java test/test_memory_leak.rb
nokogiri-backupify-1.5.0.beta.4 test/test_memory_leak.rb
nokogiri-1.5.0.beta.3-java test/test_memory_leak.rb
nokogiri-1.5.0.beta.3 test/test_memory_leak.rb
nokogiri-1.5.0.beta.2 test/test_memory_leak.rb
nokogiri-1.5.0.beta.2-java test/test_memory_leak.rb