mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 eafe85f603
			
		
	
	
		eafe85f603
		
	
	
	
	
		
			
			method. * test/ruby/test_argf.rb: use assert_in_out_err instead of EnvUtil.rubyexec. * test/ruby/test_module.rb: ditto. * test/ruby/test_require.rb: ditto. * test/ruby/test_objectspace.rb: ditto. * test/ruby/test_object.rb: ditto. * test/ruby/test_string.rb: ditto. * test/ruby/test_method.rb: ditto. * test/ruby/test_variable.rb: ditto. * test/ruby/test_io.rb: ditto. * test/ruby/test_rubyoptions.rb: ditto. * test/ruby/test_exception.rb: ditto. * test/ruby/test_class.rb: ditto. * test/ruby/test_thread.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			226 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'test/unit'
 | |
| require_relative 'envutil'
 | |
| 
 | |
| class TestException < Test::Unit::TestCase
 | |
|   def test_exception
 | |
|     begin
 | |
|       raise "this must be handled"
 | |
|       assert(false)
 | |
|     rescue
 | |
|       assert(true)
 | |
|     end
 | |
| 
 | |
|     $bad = true
 | |
|     begin
 | |
|       raise "this must be handled no.2"
 | |
|     rescue
 | |
|       if $bad
 | |
|         $bad = false
 | |
|         retry
 | |
|         assert(false)
 | |
|       end
 | |
|     end
 | |
|     assert(true)
 | |
| 
 | |
|     # exception in rescue clause
 | |
|     $string = "this must be handled no.3"
 | |
|     e = assert_raises(RuntimeError) do
 | |
|       begin
 | |
|         raise "exception in rescue clause"
 | |
|       rescue
 | |
|         raise $string
 | |
|       end
 | |
|       assert(false)
 | |
|     end
 | |
|     assert_equal($string, e.message)
 | |
| 
 | |
|     # exception in ensure clause
 | |
|     $string = "exception in ensure clause"
 | |
|     e = assert_raises(RuntimeError) do
 | |
|       begin
 | |
|         raise "this must be handled no.4"
 | |
|       ensure
 | |
|         assert_instance_of(RuntimeError, $!)
 | |
|         assert_equal("this must be handled no.4", $!.message)
 | |
|         raise "exception in ensure clause"
 | |
|       end
 | |
|       assert(false)
 | |
|     end
 | |
|     assert_equal($string, e.message)
 | |
| 
 | |
|     $bad = true
 | |
|     begin
 | |
|       begin
 | |
|         raise "this must be handled no.5"
 | |
|       ensure
 | |
|         $bad = false
 | |
|       end
 | |
|     rescue
 | |
|     end
 | |
|     assert(!$bad)
 | |
| 
 | |
|     $bad = true
 | |
|     begin
 | |
|       begin
 | |
|         raise "this must be handled no.6"
 | |
|       ensure
 | |
|         $bad = false
 | |
|       end
 | |
|     rescue
 | |
|     end
 | |
|     assert(!$bad)
 | |
| 
 | |
|     $bad = true
 | |
|     while true
 | |
|       begin
 | |
|         break
 | |
|       ensure
 | |
|         $bad = false
 | |
|       end
 | |
|     end
 | |
|     assert(!$bad)
 | |
| 
 | |
|     assert(catch(:foo) {
 | |
|          loop do
 | |
|            loop do
 | |
|     	 throw :foo, true
 | |
|     	 break
 | |
|            end
 | |
|            break
 | |
|            assert(false)			# should no reach here
 | |
|          end
 | |
|          false
 | |
|        })
 | |
| 
 | |
|   end
 | |
| 
 | |
|   def test_else
 | |
|     begin
 | |
|       assert(true)
 | |
|     rescue
 | |
|       assert(false)
 | |
|     else
 | |
|       assert(true)
 | |
|     end
 | |
| 
 | |
|     begin
 | |
|       assert(true)
 | |
|       raise
 | |
|       assert(false)
 | |
|     rescue
 | |
|       assert(true)
 | |
|     else
 | |
|       assert(false)
 | |
|     end
 | |
| 
 | |
|     begin
 | |
|       assert(true)
 | |
|       begin
 | |
| 	assert(true)
 | |
|       rescue
 | |
| 	assert(false)
 | |
|       else
 | |
| 	assert(true)
 | |
|       end
 | |
|       assert(true)
 | |
|     rescue
 | |
|       assert(false)
 | |
|     else
 | |
|       assert(true)
 | |
|     end
 | |
| 
 | |
|     begin
 | |
|       assert(true)
 | |
|       begin
 | |
| 	assert(true)
 | |
| 	raise
 | |
| 	assert(false)
 | |
|       rescue
 | |
| 	assert(true)
 | |
|       else
 | |
| 	assert(false)
 | |
|       end
 | |
|       assert(true)
 | |
|     rescue
 | |
|       assert(false)
 | |
|     else
 | |
|       assert(true)
 | |
|     end
 | |
| 
 | |
|     begin
 | |
|       assert(true)
 | |
|       begin
 | |
| 	assert(true)
 | |
|       rescue
 | |
| 	assert(false)
 | |
|       else
 | |
| 	assert(true)
 | |
|       end
 | |
|       assert(true)
 | |
|       raise
 | |
|       assert(false)
 | |
|     rescue
 | |
|       assert(true)
 | |
|     else
 | |
|       assert(false)
 | |
|     end
 | |
| 
 | |
|     begin
 | |
|       assert(true)
 | |
|       begin
 | |
| 	assert(true)
 | |
| 	raise
 | |
| 	assert(false)
 | |
|       rescue
 | |
| 	assert(true)
 | |
|       else
 | |
| 	assert(false)
 | |
|       end
 | |
|       assert(true)
 | |
|       raise
 | |
|       assert(false)
 | |
|     rescue
 | |
|       assert(true)
 | |
|     else
 | |
|       assert(false)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def test_raise_with_wrong_number_of_arguments
 | |
|     assert_raise(TypeError) { raise nil }
 | |
|     assert_raise(TypeError) { raise 1, 1 }
 | |
|     assert_raise(ArgumentError) { raise 1, 1, 1, 1 }
 | |
|   end
 | |
| 
 | |
|   def test_errat
 | |
|     assert_in_out_err([], "p $@", %w(nil), [])
 | |
| 
 | |
|     assert_in_out_err([], "$@ = 1", [], /\$! not set \(ArgumentError\)$/)
 | |
| 
 | |
|     assert_in_out_err([], <<-INPUT, [], /backtrace must be Array of String \(TypeError\)$/)
 | |
|       begin
 | |
|         raise
 | |
|       rescue
 | |
|         $@ = 1
 | |
|       end
 | |
|     INPUT
 | |
| 
 | |
|     assert_in_out_err([], <<-INPUT, [], /^foo: unhandled exception$/)
 | |
|       begin
 | |
|         raise
 | |
|       rescue
 | |
|         $@ = 'foo'
 | |
|         raise
 | |
|       end
 | |
|     INPUT
 | |
| 
 | |
|     assert_in_out_err([], <<-INPUT, [], /^foo: unhandled exception\s+from bar\s+from baz$/)
 | |
|       begin
 | |
|         raise
 | |
|       rescue
 | |
|         $@ = %w(foo bar baz)
 | |
|         raise
 | |
|       end
 | |
|     INPUT
 | |
|   end
 | |
| end
 |