Repository: avro Updated Branches: refs/heads/master 29129abee -> e9fd99ffa
AVRO-1996: compatibility with Ruby 2.4 Fixed failing tests for ruby. Signed-off-by: Suraj Acharya <[email protected]> Signed-off-by: Sean Busbey <[email protected]> This closes #191 Project: http://git-wip-us.apache.org/repos/asf/avro/repo Commit: http://git-wip-us.apache.org/repos/asf/avro/commit/e9fd99ff Tree: http://git-wip-us.apache.org/repos/asf/avro/tree/e9fd99ff Diff: http://git-wip-us.apache.org/repos/asf/avro/diff/e9fd99ff Branch: refs/heads/master Commit: e9fd99ffa53e95ddbb1d136ddd6fabbfd2961f7f Parents: 29129ab Author: Tim Perkins <[email protected]> Authored: Mon Jan 30 15:48:58 2017 -0500 Committer: sacharya <[email protected]> Committed: Tue Feb 14 17:40:37 2017 -0600 ---------------------------------------------------------------------- lang/ruby/lib/avro/schema.rb | 2 +- lang/ruby/lib/avro/schema_validator.rb | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/avro/blob/e9fd99ff/lang/ruby/lib/avro/schema.rb ---------------------------------------------------------------------- diff --git a/lang/ruby/lib/avro/schema.rb b/lang/ruby/lib/avro/schema.rb index 38d9c05..477528e 100644 --- a/lang/ruby/lib/avro/schema.rb +++ b/lang/ruby/lib/avro/schema.rb @@ -318,7 +318,7 @@ module Avro attr_reader :size def initialize(name, space, size, names=nil) # Ensure valid cto args - unless size.is_a?(Fixnum) || size.is_a?(Bignum) + unless size.is_a?(Integer) raise AvroError, 'Fixed Schema requires a valid integer for size property.' end super(:fixed, name, space, names) http://git-wip-us.apache.org/repos/asf/avro/blob/e9fd99ff/lang/ruby/lib/avro/schema_validator.rb ---------------------------------------------------------------------- diff --git a/lang/ruby/lib/avro/schema_validator.rb b/lang/ruby/lib/avro/schema_validator.rb index 2b780d0..ca4f7f6 100644 --- a/lang/ruby/lib/avro/schema_validator.rb +++ b/lang/ruby/lib/avro/schema_validator.rb @@ -80,13 +80,13 @@ module Avro when :string, :bytes fail TypeMismatchError unless datum.is_a?(String) when :int - fail TypeMismatchError unless datum.is_a?(Fixnum) || datum.is_a?(Bignum) + fail TypeMismatchError unless datum.is_a?(Integer) result.add_error(path, "out of bound value #{datum}") unless INT_RANGE.cover?(datum) when :long - fail TypeMismatchError unless datum.is_a?(Fixnum) || datum.is_a?(Bignum) + fail TypeMismatchError unless datum.is_a?(Integer) result.add_error(path, "out of bound value #{datum}") unless LONG_RANGE.cover?(datum) when :float, :double - fail TypeMismatchError unless [Float, Fixnum, Bignum].any?(&datum.method(:is_a?)) + fail TypeMismatchError unless [Float, Integer].any?(&datum.method(:is_a?)) when :fixed if datum.is_a? String message = "expected fixed with size #{expected_schema.size}, got \"#{datum}\" with size #{datum.size}" @@ -165,7 +165,11 @@ module Avro private def actual_value_message(value) - avro_type = ruby_to_avro_type(value.class) + avro_type = if value.class == Integer + ruby_integer_to_avro_type(value) + else + ruby_to_avro_type(value.class) + end if value.nil? avro_type else @@ -183,6 +187,10 @@ module Avro Hash => 'record' }.fetch(ruby_class, ruby_class) end + + def ruby_integer_to_avro_type(value) + INT_RANGE.cover?(value) ? 'int' : 'long' + end end end end
