Updated Branches: refs/heads/master 7740739b7 -> a9e33bf0f
THRIFT-1699 Native Union#read has extra read_field_end call Patch: Kevin Radloff Project: http://git-wip-us.apache.org/repos/asf/thrift/repo Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/a9e33bf0 Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/a9e33bf0 Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/a9e33bf0 Branch: refs/heads/master Commit: a9e33bf0f699cd35ce2a1442a705c468b3e4ca45 Parents: 7740739 Author: Jens Geyer <[email protected]> Authored: Wed Dec 12 23:11:04 2012 +0100 Committer: Jens Geyer <[email protected]> Committed: Wed Dec 12 23:11:04 2012 +0100 ---------------------------------------------------------------------- lib/rb/ext/struct.c | 3 --- lib/rb/spec/union_spec.rb | 14 +++++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/thrift/blob/a9e33bf0/lib/rb/ext/struct.c ---------------------------------------------------------------------- diff --git a/lib/rb/ext/struct.c b/lib/rb/ext/struct.c index 5a9a679..8fbadbe 100644 --- a/lib/rb/ext/struct.c +++ b/lib/rb/ext/struct.c @@ -627,9 +627,6 @@ static VALUE rb_thrift_union_read(VALUE self, VALUE protocol) { rb_raise(rb_eRuntimeError, "too many fields in union!"); } - // read field end - default_read_field_end(protocol); - // read struct end default_read_struct_end(protocol); http://git-wip-us.apache.org/repos/asf/thrift/blob/a9e33bf0/lib/rb/spec/union_spec.rb ---------------------------------------------------------------------- diff --git a/lib/rb/spec/union_spec.rb b/lib/rb/spec/union_spec.rb index db08cab..dd84906 100644 --- a/lib/rb/spec/union_spec.rb +++ b/lib/rb/spec/union_spec.rb @@ -93,7 +93,7 @@ describe 'Union' do lambda { union.some_characters }.should raise_error(RuntimeError, "some_characters is not union's set field.") end - it "should serialize correctly" do + it "should serialize to binary correctly" do trans = Thrift::MemoryBufferTransport.new proto = Thrift::BinaryProtocol.new(trans) @@ -105,6 +105,18 @@ describe 'Union' do other_union.should == union end + it "should serialize to json correctly" do + trans = Thrift::MemoryBufferTransport.new + proto = Thrift::JsonProtocol.new(trans) + + union = SpecNamespace::My_union.new(:integer32, 25) + union.write(proto) + + other_union = SpecNamespace::My_union.new(:integer32, 25) + other_union.read(proto) + other_union.should == union + end + it "should raise when validating unset union" do union = SpecNamespace::My_union.new lambda { union.validate }.should raise_error(StandardError, "Union fields are not set.")
