mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	conveniently
(https://github.com/ruby/irb/pull/429)
* Create a base TestIRB::TestCase class
* Save/restore encodings for tests that initializes InputMethod classes
Because `RelineInputMethod#initializes` calls `set_encoding`, which
changes stdio/out/err and Encoding's default encoding values, we need to
make sure any test that directly or indirectly (e.g. through Context)
initializes `RelineInputMethod` restores encodings.
`ReadlineInputMethod` also changes encodings but currently no tests
cover it.
* Remove unnecessary TestHelper module
Since we now have a base TestCase, without_rdoc can just live there.
c2874ec121
		
	
			
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			1,004 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			1,004 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require "test/unit"
 | 
						|
 | 
						|
module TestIRB
 | 
						|
  class TestCase < Test::Unit::TestCase
 | 
						|
    def save_encodings
 | 
						|
      @default_encoding = [Encoding.default_external, Encoding.default_internal]
 | 
						|
      @stdio_encodings = [STDIN, STDOUT, STDERR].map {|io| [io.external_encoding, io.internal_encoding] }
 | 
						|
    end
 | 
						|
 | 
						|
    def restore_encodings
 | 
						|
      EnvUtil.suppress_warning do
 | 
						|
        Encoding.default_external, Encoding.default_internal = *@default_encoding
 | 
						|
        [STDIN, STDOUT, STDERR].zip(@stdio_encodings) do |io, encs|
 | 
						|
          io.set_encoding(*encs)
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def without_rdoc(&block)
 | 
						|
      ::Kernel.send(:alias_method, :old_require, :require)
 | 
						|
 | 
						|
      ::Kernel.define_method(:require) do |name|
 | 
						|
        raise LoadError, "cannot load such file -- rdoc (test)" if name.match?("rdoc") || name.match?(/^rdoc\/.*/)
 | 
						|
        ::Kernel.send(:old_require, name)
 | 
						|
      end
 | 
						|
 | 
						|
      yield
 | 
						|
    ensure
 | 
						|
      EnvUtil.suppress_warning { ::Kernel.send(:alias_method, :require, :old_require) }
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |