From a663893358504b94b45fd86035d2c32abd55c0df Mon Sep 17 00:00:00 2001 From: Ransom Briggs Date: Thu, 7 Apr 2022 09:19:43 -0500 Subject: [PATCH 1/4] Align .tool-version with .ruby-version --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index a4e3be56..a9e31a47 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -ruby 2.5.9 +ruby 2.7.1 From 0b9a75bcebfc2f028d0bfefbc31550764807b1d7 Mon Sep 17 00:00:00 2001 From: Ransom Briggs Date: Thu, 7 Apr 2022 10:52:05 -0500 Subject: [PATCH 2/4] Fall back to "" if dump does not respond to [] --- lib/super_diff/helpers.rb | 8 ++++++-- spec/unit/helpers_spec.rb | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/super_diff/helpers.rb b/lib/super_diff/helpers.rb index 1afed96f..9a3852a8 100644 --- a/lib/super_diff/helpers.rb +++ b/lib/super_diff/helpers.rb @@ -52,8 +52,12 @@ def object_address_for(object) def object_address_for(object) # Sources: and - address = JSON.parse(ObjectSpace.dump(object))["address"] - "0x%016x" % Integer(address, 16) + address = JSON.parse(ObjectSpace.dump(object)).try(:[], "address") + if address + "0x%016x" % Integer(address, 16) + else + "" + end end else def object_address_for(object) diff --git a/spec/unit/helpers_spec.rb b/spec/unit/helpers_spec.rb index 7227de90..65dec414 100644 --- a/spec/unit/helpers_spec.rb +++ b/spec/unit/helpers_spec.rb @@ -39,6 +39,20 @@ end end end + + describe "object_address_for" do + if SuperDiff::Helpers.ruby_version_matches?(">= 2.7.0") + it "returns an empty string for Floats" do + expect(helper.object_address_for(1.0)).to eq("") + end + + it "returns an object address for Objects" do + object = Object.new + address = JSON.parse(ObjectSpace.dump(object))["address"] + expect(helper.object_address_for(object)).to eq("0x%016x" % Integer(address, 16)) + end + end + end end describe 'as class methods' do From 2450859b8147b3b70ce755e03e3650cd4555422f Mon Sep 17 00:00:00 2001 From: Ransom Briggs Date: Thu, 7 Apr 2022 11:14:35 -0500 Subject: [PATCH 3/4] Revert "Align .tool-version with .ruby-version" This reverts commit a663893358504b94b45fd86035d2c32abd55c0df. --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index a9e31a47..a4e3be56 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -ruby 2.7.1 +ruby 2.5.9 From 55d9dc219771c67922dca5660bef1ee56baad0ec Mon Sep 17 00:00:00 2001 From: Ransom Briggs Date: Thu, 7 Apr 2022 11:39:18 -0500 Subject: [PATCH 4/4] Change try to is_a?(Hash) --- lib/super_diff/helpers.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/super_diff/helpers.rb b/lib/super_diff/helpers.rb index 9a3852a8..b085925e 100644 --- a/lib/super_diff/helpers.rb +++ b/lib/super_diff/helpers.rb @@ -52,9 +52,9 @@ def object_address_for(object) def object_address_for(object) # Sources: and - address = JSON.parse(ObjectSpace.dump(object)).try(:[], "address") - if address - "0x%016x" % Integer(address, 16) + json = JSON.parse(ObjectSpace.dump(object)) + if json.is_a?(Hash) + "0x%016x" % Integer(json["address"], 16) else "" end