diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-03-16 06:07:03 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-03-16 06:07:03 +0000 |
commit | d6fb308078ce499092d75472b221ee8def9f42c1 (patch) | |
tree | 340d512aed05f6cb73d70761f6d7ad0e97f978c0 /test/openssl/test_buffering.rb | |
parent | 92946d44742ee9c48f418f6ff583b1bf35da9d1f (diff) | |
download | ruby-d6fb308078ce499092d75472b221ee8def9f42c1.tar.gz |
* ext/openssl/lib/openssl/buffering.rb (module OpenSSL): #flush should
not change sync mode on exception.
* test/openssl/test_buffering.rb: added
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31113 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/openssl/test_buffering.rb')
-rw-r--r-- | test/openssl/test_buffering.rb | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/test/openssl/test_buffering.rb b/test/openssl/test_buffering.rb new file mode 100644 index 0000000000..49335de8d2 --- /dev/null +++ b/test/openssl/test_buffering.rb @@ -0,0 +1,66 @@ +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) |