From c587c44975b0a4a2cdf1f8589d14a4228bfb27f0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 28 Jul 2025 11:35:37 -0400 Subject: [PATCH] Fix `Lint/NonLocalExitFromIterator` cop in JSON-LD helper (#34948) --- .rubocop_todo.yml | 4 ---- app/helpers/json_ld_helper.rb | 2 +- spec/helpers/json_ld_helper_spec.rb | 8 ++++++++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 9e69426fcf7..8706ca0ddda 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -6,10 +6,6 @@ # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -Lint/NonLocalExitFromIterator: - Exclude: - - 'app/helpers/json_ld_helper.rb' - # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes. Metrics/AbcSize: Max: 82 diff --git a/app/helpers/json_ld_helper.rb b/app/helpers/json_ld_helper.rb index 078aba456ae..675d8b87309 100644 --- a/app/helpers/json_ld_helper.rb +++ b/app/helpers/json_ld_helper.rb @@ -134,7 +134,7 @@ module JsonLdHelper patch_for_forwarding!(value, compacted_value) elsif value.is_a?(Array) compacted_value = [compacted_value] unless compacted_value.is_a?(Array) - return if value.size != compacted_value.size + return nil if value.size != compacted_value.size compacted[key] = value.zip(compacted_value).map do |v, vc| if v.is_a?(Hash) && vc.is_a?(Hash) diff --git a/spec/helpers/json_ld_helper_spec.rb b/spec/helpers/json_ld_helper_spec.rb index d76c5167a7d..f216588d978 100644 --- a/spec/helpers/json_ld_helper_spec.rb +++ b/spec/helpers/json_ld_helper_spec.rb @@ -180,6 +180,14 @@ RSpec.describe JsonLdHelper do expect(compacted.dig('object', 'tag', 0, 'href')).to eq ['foo'] expect(safe_for_forwarding?(json, compacted)).to be true end + + context 'when array size mismatch exists' do + subject { helper.patch_for_forwarding!(json, alternate) } + + let(:alternate) { json.merge('to' => %w(one two three)) } + + it { is_expected.to be_nil } + end end describe 'safe_for_forwarding?' do