diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 85587aa..6b55dca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,10 +9,9 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest, macos-latest ] - # TODO: Wait for supporting Ruby 3.0 in simplecov-cobertura. - # See https://github.com/dashingrocket/simplecov-cobertura/pull/16 - # ruby: [ 2.5, 2.6, 2.7, 3.0 ] - ruby: [ 2.5, 2.6, 2.7 ] + ruby: [ '3.0', '3.1', '3.2', '3.3' ] + exclude: + - { os: macos-latest, ruby: '2.5' } runs-on: ${{ matrix.os }} steps: diff --git a/lib/pb/serializer.rb b/lib/pb/serializer.rb index f8c97e7..5493f26 100644 --- a/lib/pb/serializer.rb +++ b/lib/pb/serializer.rb @@ -22,11 +22,11 @@ class Configuration # @return [Logger] attr_accessor :logger # @!attribute [r] missing_field_behavior - # @return [:raise, :warn, :ignore] default: `:raise` + # @return [:raise, :warn, :ignore] default: `:ignore` attr_reader :missing_field_behavior def initialize - self.missing_field_behavior = :raise + self.missing_field_behavior = :ignore self.logger = Logger.new(STDOUT) end @@ -70,7 +70,7 @@ def build_default_mask(descriptor) case fd.type when :message case fd.submsg_name - when "google.protobuf.Timestamp", + when "google.protobuf.Timestamp", "google.protobuf.StringValue", "google.protobuf.Int32Value" , "google.protobuf.Int64Value" , diff --git a/pb-serializer.gemspec b/pb-serializer.gemspec index 5054d61..7e6dfba 100644 --- a/pb-serializer.gemspec +++ b/pb-serializer.gemspec @@ -38,6 +38,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rspec", "~> 3.0" spec.add_development_dependency "rubocop", "0.67.2" # for onkcop spec.add_development_dependency "sqlite3", "~> 1.4" - spec.add_development_dependency "simplecov", "~> 0.18.5" - spec.add_development_dependency "simplecov-cobertura", "~> 1.3" + spec.add_development_dependency "simplecov", "~> 0.19" + spec.add_development_dependency "simplecov-cobertura", "~> 3.1" + spec.add_development_dependency "concurrent-ruby", "1.3.4" end diff --git a/spec/examples/errors_spec.rb b/spec/examples/errors_spec.rb index 5af53d2..7c4f5c9 100644 --- a/spec/examples/errors_spec.rb +++ b/spec/examples/errors_spec.rb @@ -39,7 +39,7 @@ allow(Pb::Serializer).to receive(:configuration).and_return(config) Pb::Serializer.configure do |c| - c.missing_field_behavior = missing_field_behavior + c.missing_field_behavior = missing_field_behavior if missing_field_behavior c.logger = Logger.new(log_buffer) end end @@ -72,6 +72,29 @@ it { expect(log_buffer.string).to be_empty } it { is_expected.to be_a TestFixture::Simple::Message } end + + context 'when missing_field_behavior is not configured (default behavior)' do + before do + # Reset configuration to test default behavior + Pb::Serializer.instance_variable_set(:@configuraiton, nil) + allow(Pb::Serializer).to receive(:configuration).and_call_original + + # Don't configure missing_field_behavior to test default + Pb::Serializer.configure do |c| + c.logger = Logger.new(log_buffer) + end + end + + # Override the parent's before block to avoid setting missing_field_behavior + let(:missing_field_behavior) { nil } + + it 'uses default value :ignore' do + expect(Pb::Serializer.configuration.missing_field_behavior).to eq(:ignore) + end + + it { expect(log_buffer.string).to be_empty } + it { is_expected.to be_a TestFixture::Simple::Message } + end end it 'raises when set invalid param to missing_field_behavior config' do