From 8cd1c4ddab456bd5084d9272bb335e11a3651232 Mon Sep 17 00:00:00 2001 From: yugui Date: Sat, 28 May 2011 23:32:46 +0000 Subject: 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 --- ChangeLog | 6 ++++ ext/openssl/lib/openssl/buffering.rb | 2 ++ test/openssl/test_buffering.rb | 66 ++++++++++++++++++++++++++++++++++++ version.h | 2 +- 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 test/openssl/test_buffering.rb diff --git a/ChangeLog b/ChangeLog index 520d8d7a25..5919d1cb6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Mar 16 15:06:21 2011 Eric Hodel + + * ext/openssl/lib/openssl/buffering.rb (module OpenSSL): #flush should + not change sync mode on exception. + * test/openssl/test_buffering.rb: added + Sun Mar 13 16:07:58 2011 Shota Fukumori * lib/pstore.rb: Fix don't raise "nested transaction" when thread_safe diff --git a/ext/openssl/lib/openssl/buffering.rb b/ext/openssl/lib/openssl/buffering.rb index 3028fe5b52..cc1f08f563 100644 --- a/ext/openssl/lib/openssl/buffering.rb +++ b/ext/openssl/lib/openssl/buffering.rb @@ -328,6 +328,8 @@ module Buffering osync = @sync @sync = true do_write "" + return self + ensure @sync = osync end 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) diff --git a/version.h b/version.h index 8712f80a42..481e2f88a5 100644 --- a/version.h +++ b/version.h @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_PATCHLEVEL 215 +#define RUBY_PATCHLEVEL 216 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 -- cgit v1.2.3