mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			876 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			876 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
require 'test/unit'
 | 
						|
require_relative 'scheduler'
 | 
						|
 | 
						|
require 'timeout'
 | 
						|
 | 
						|
class TestFiberTimeout < Test::Unit::TestCase
 | 
						|
  def test_timeout_after
 | 
						|
    error = nil
 | 
						|
 | 
						|
    thread = Thread.new do
 | 
						|
      scheduler = Scheduler.new
 | 
						|
      Fiber.set_scheduler scheduler
 | 
						|
 | 
						|
      Fiber.schedule do
 | 
						|
        begin
 | 
						|
          Timeout.timeout(0.001) do
 | 
						|
            sleep(1)
 | 
						|
          end
 | 
						|
        rescue
 | 
						|
          error = $!
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    thread.join
 | 
						|
 | 
						|
    assert_kind_of(Timeout::Error, error)
 | 
						|
  end
 | 
						|
 | 
						|
  MESSAGE = "Hello World"
 | 
						|
 | 
						|
  def test_timeout_on_main_fiber
 | 
						|
    message = nil
 | 
						|
 | 
						|
    thread = Thread.new do
 | 
						|
      scheduler = Scheduler.new
 | 
						|
      Fiber.set_scheduler scheduler
 | 
						|
 | 
						|
      assert_nil Fiber.current_scheduler
 | 
						|
 | 
						|
      Timeout.timeout(1) do
 | 
						|
        message = MESSAGE
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    thread.join
 | 
						|
 | 
						|
    assert_equal MESSAGE, message
 | 
						|
  end
 | 
						|
end
 |