diff --git a/.github/workflows/gem-push.yml b/.github/workflows/gem-push.yml index f82bf12..ec95c5f 100644 --- a/.github/workflows/gem-push.yml +++ b/.github/workflows/gem-push.yml @@ -15,7 +15,7 @@ jobs: packages: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 02d2de1..99831cc 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -22,7 +22,7 @@ jobs: ruby-version: ['2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2'] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -30,3 +30,7 @@ jobs: bundler-cache: true # runs 'bundle install' and caches installed gems automatically - name: Run tests run: bundle exec rake + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4.2.0 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/Gemfile b/Gemfile index 817f62a..d54fb9a 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,5 @@ source 'http://rubygems.org' gemspec + +gem 'simplecov' +gem 'simplecov-cobertura' diff --git a/analytics-ruby.gemspec b/analytics-ruby.gemspec index aad3553..b45b31d 100644 --- a/analytics-ruby.gemspec +++ b/analytics-ruby.gemspec @@ -27,5 +27,4 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'oj', '~> 3.6.2' end spec.add_development_dependency 'rubocop', '~> 1.0' - spec.add_development_dependency 'codecov', '~> 0.6' end diff --git a/lib/segment/analytics/message_batch.rb b/lib/segment/analytics/message_batch.rb index 15eef43..29e37d2 100644 --- a/lib/segment/analytics/message_batch.rb +++ b/lib/segment/analytics/message_batch.rb @@ -29,6 +29,7 @@ def <<(message) message_json_size = message_json.bytesize if message_too_big?(message_json_size) logger.error('a message exceeded the maximum allowed size') + raise JSONGenerationError, 'Message Exceeded Maximum Allowed Size' else @messages << message @json_size += message_json_size + 1 # One byte for the comma diff --git a/spec/segment/analytics/message_batch_spec.rb b/spec/segment/analytics/message_batch_spec.rb index 98f7be7..b85930a 100644 --- a/spec/segment/analytics/message_batch_spec.rb +++ b/spec/segment/analytics/message_batch_spec.rb @@ -9,7 +9,10 @@ class Analytics describe '#<<' do it 'appends messages' do + expect(subject.length).to eq(0) + subject << { 'a' => 'b' } + expect(subject.length).to eq(1) end @@ -17,8 +20,10 @@ class Analytics max_bytes = Defaults::Message::MAX_BYTES message = { 'a' => 'b' * max_bytes } - subject << message expect(subject.length).to eq(0) + + expect { subject << message }.to raise_error(MessageBatch::JSONGenerationError) + .with_message('Message Exceeded Maximum Allowed Size') end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b1d8435..8dc8634 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,10 +1,9 @@ # frozen_string_literal: true -# https://github.com/codecov/codecov-ruby#usage require 'simplecov' SimpleCov.start -require 'codecov' -SimpleCov.formatter = SimpleCov::Formatter::Codecov +require 'simplecov-cobertura' +SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter require 'segment/analytics' require 'active_support/time'