From 8ac1724b51459295c339e2ed3c2e911cd8003715 Mon Sep 17 00:00:00 2001 From: Paarth Madan Date: Wed, 26 Jan 2022 10:25:58 -0500 Subject: [PATCH] Conditionally assert load_json returns symbolized data --- lib/i18n/backend/base.rb | 2 +- test/backend/simple_test.rb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/i18n/backend/base.rb b/lib/i18n/backend/base.rb index 9f9df168..07f9bbd7 100644 --- a/lib/i18n/backend/base.rb +++ b/lib/i18n/backend/base.rb @@ -255,7 +255,7 @@ def load_yml(filename) def load_json(filename) begin # Use #load_file as a proxy for a version of JSON where symbolize_names and freeze are supported. - if JSON.respond_to?(:load_file) + if ::JSON.respond_to?(:load_file) [::JSON.load_file(filename, symbolize_names: true, freeze: true), true] else [::JSON.parse(File.read(filename)), false] diff --git a/test/backend/simple_test.rb b/test/backend/simple_test.rb index ce9762dc..5c5955c3 100644 --- a/test/backend/simple_test.rb +++ b/test/backend/simple_test.rb @@ -97,10 +97,12 @@ def setup test "simple load_json: loads data from a JSON file" do data, _ = I18n.backend.send(:load_json, "#{locales_dir}/en.json") - assert_equal({ :en => { :foo => { :bar => 'baz' } } }, data) if JSON.respond_to?(:load_file) + assert_equal({ :en => { :foo => { :bar => 'baz' } } }, data) assert_predicate data.dig(:en, :foo, :bar), :frozen? + else + assert_equal({ 'en' => { 'foo' => { 'bar' => 'baz' } } }, data) end end