mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25211 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			61 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require 'test/unit'
 | 
						|
require 'rake'
 | 
						|
require 'stringio'
 | 
						|
 | 
						|
######################################################################
 | 
						|
class Rake::TestExtension < Test::Unit::TestCase
 | 
						|
 | 
						|
  module Redirect
 | 
						|
    def error_redirect
 | 
						|
      old_err = $stderr
 | 
						|
      result = StringIO.new
 | 
						|
      $stderr = result
 | 
						|
      yield
 | 
						|
      result
 | 
						|
    ensure
 | 
						|
      $stderr = old_err
 | 
						|
    end
 | 
						|
  end
 | 
						|
  
 | 
						|
  class Sample
 | 
						|
    extend Redirect
 | 
						|
 | 
						|
    def duplicate_method
 | 
						|
      :original
 | 
						|
    end
 | 
						|
    
 | 
						|
    OK_ERRS = error_redirect do
 | 
						|
      rake_extension("a") do
 | 
						|
        def ok_method
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
 | 
						|
    DUP_ERRS = error_redirect do
 | 
						|
      rake_extension("duplicate_method") do
 | 
						|
        def duplicate_method
 | 
						|
          :override
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def test_methods_actually_exist
 | 
						|
    sample = Sample.new
 | 
						|
    sample.ok_method
 | 
						|
    sample.duplicate_method
 | 
						|
  end
 | 
						|
 | 
						|
  def test_no_warning_when_defining_ok_method
 | 
						|
    assert_equal "", Sample::OK_ERRS.string
 | 
						|
  end
 | 
						|
 | 
						|
  def test_extension_complains_when_a_method_that_is_present
 | 
						|
    assert_match(/warning:/i, Sample::DUP_ERRS.string)
 | 
						|
    assert_match(/already exists/i, Sample::DUP_ERRS.string)
 | 
						|
    assert_match(/duplicate_method/i, Sample::DUP_ERRS.string)
 | 
						|
    assert_equal :original, Sample.new.duplicate_method
 | 
						|
  end
 | 
						|
 | 
						|
end
 |