mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
67 lines
940 B
Ruby
67 lines
940 B
Ruby
|
require_relative 'utils'
|
||
|
require 'stringio'
|
||
|
require 'minitest/unit'
|
||
|
|
||
|
class OpenSSL::TestBuffering < MiniTest::Unit::TestCase
|
||
|
|
||
|
class IO
|
||
|
include OpenSSL::Buffering
|
||
|
|
||
|
attr_accessor :sync
|
||
|
|
||
|
def initialize
|
||
|
@io = StringIO.new
|
||
|
|
||
|
super
|
||
|
|
||
|
@sync = false
|
||
|
end
|
||
|
|
||
|
def string
|
||
|
@io.string
|
||
|
end
|
||
|
|
||
|
def sysread *a
|
||
|
@io.sysread *a
|
||
|
end
|
||
|
|
||
|
def syswrite *a
|
||
|
@io.syswrite *a
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def setup
|
||
|
@io = IO.new
|
||
|
end
|
||
|
|
||
|
def test_flush
|
||
|
@io.write 'a'
|
||
|
|
||
|
refute @io.sync
|
||
|
assert_empty @io.string
|
||
|
|
||
|
assert_equal @io, @io.flush
|
||
|
|
||
|
refute @io.sync
|
||
|
assert_equal 'a', @io.string
|
||
|
end
|
||
|
|
||
|
def test_flush_error
|
||
|
@io.write 'a'
|
||
|
|
||
|
refute @io.sync
|
||
|
assert_empty @io.string
|
||
|
|
||
|
def @io.syswrite *a
|
||
|
raise SystemCallError, 'fail'
|
||
|
end
|
||
|
|
||
|
assert_raises SystemCallError do
|
||
|
@io.flush
|
||
|
end
|
||
|
|
||
|
refute @io.sync, 'sync must not change'
|
||
|
end
|
||
|
|
||
|
end if defined?(OpenSSL)
|