summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-05-28 23:32:46 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-05-28 23:32:46 +0000
commit8cd1c4ddab456bd5084d9272bb335e11a3651232 (patch)
treeff14359cbe5c3c48bd83defd16e41f8ba4a6cb57 /test
parentb337563fba42e8a531e6c96c98568491e2b0a7c2 (diff)
merges r31113 from trunk into ruby_1_9_2.
-- * 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/branches/ruby_1_9_2@31777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/openssl/test_buffering.rb66
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)