mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Check GC.enable'd status before and after test execution. Write this checker in gc_checker.rb, it was renamed from gc_compact_checker.rb.
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			710 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			710 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module GCDisabledChecker
 | 
						|
  def before_setup
 | 
						|
    if @__gc_disabled__ = GC.enable # return true if GC is disabled
 | 
						|
      GC.disable
 | 
						|
    end
 | 
						|
 | 
						|
    super
 | 
						|
  end
 | 
						|
 | 
						|
  def after_teardown
 | 
						|
    super
 | 
						|
 | 
						|
    disabled = GC.enable
 | 
						|
    GC.disable if @__gc_disabled__
 | 
						|
 | 
						|
    if @__gc_disabled__ != disabled
 | 
						|
      label = {
 | 
						|
        true => 'disabled',
 | 
						|
        false => 'enabled',
 | 
						|
      }
 | 
						|
      raise "GC was #{label[@__gc_disabled__]}, but is #{label[disabled]} after the test."
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
module GCCompactChecker
 | 
						|
  def after_teardown
 | 
						|
    super
 | 
						|
    GC.compact
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
Test::Unit::TestCase.include GCDisabledChecker
 | 
						|
Test::Unit::TestCase.include GCCompactChecker if ENV['RUBY_TEST_GC_COMPACT']
 |