[Pkg-puppet-devel] [facter] 175/352: (FACT-237) Use specific error classes for deep_merge and deep_freeze

Stig Sandbeck Mathisen ssm at debian.org
Sun Apr 6 22:21:43 UTC 2014


This is an automated email from the git hooks/post-receive script.

ssm pushed a commit to branch master
in repository facter.

commit 1921fa3acf22e5849277f83e0e4cbbdb30f73cd3
Author: Adrien Thebo <git at somethingsinistral.net>
Date:   Fri Jan 17 09:41:21 2014 -0800

    (FACT-237) Use specific error classes for deep_merge and deep_freeze
---
 lib/facter/util/values.rb     | 8 ++++++--
 spec/unit/util/values_spec.rb | 9 +++++++--
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/lib/facter/util/values.rb b/lib/facter/util/values.rb
index f1e667c..a7048d5 100644
--- a/lib/facter/util/values.rb
+++ b/lib/facter/util/values.rb
@@ -4,6 +4,8 @@ module Facter
     module Values
       module_function
 
+      class DeepFreezeError < StandardError; end
+
       # Duplicate and deeply freeze a given data structure
       #
       # @param value [Object] The structure to freeze
@@ -25,10 +27,12 @@ module Facter
             hash
           end.freeze
         else
-          raise ArgumentError, "Cannot deep freeze #{value}:#{value.class}"
+          raise DeepFreezeError, "Cannot deep freeze #{value}:#{value.class}"
         end
       end
 
+      class DeepMergeError < StandardError; end
+
       # Perform a deep merge of two nested data structures.
       #
       # @param left [Object]
@@ -60,7 +64,7 @@ module Facter
             msg << " at root"
             msg << path.map { |part| "[#{part.inspect}]" }.join
           end
-          raise ArgumentError, msg
+          raise DeepMergeError, msg
         end
 
         ret
diff --git a/spec/unit/util/values_spec.rb b/spec/unit/util/values_spec.rb
index f3bb7f9..557eb19 100644
--- a/spec/unit/util/values_spec.rb
+++ b/spec/unit/util/values_spec.rb
@@ -41,6 +41,11 @@ describe Facter::Util::Values do
       expect(output).to be_frozen
     end
 
+    it "raises an error when given a structure that cannot be deeply frozen" do
+      expect {
+        described_class.deep_freeze(Set.new)
+      }.to raise_error(Facter::Util::Values::DeepFreezeError, /Cannot deep freeze.*Set/)
+    end
   end
 
   describe 'deep_merge' do
@@ -105,7 +110,7 @@ describe Facter::Util::Values do
 
         expect {
           described_class.deep_merge(first, second)
-        }.to raise_error(ArgumentError, /Cannot merge .*at .*foo.*bar.*baz.*quux/)
+        }.to raise_error(Facter::Util::Values::DeepMergeError, /Cannot merge .*at .*foo.*bar.*baz.*quux/)
       end
     end
 
@@ -118,7 +123,7 @@ describe Facter::Util::Values do
         it "raises an error when merging #{left}:#{left.class} and #{right}:#{right.class}" do
           expect {
             described_class.deep_merge(left, right)
-          }.to raise_error(ArgumentError, /Cannot merge #{left.inspect}:#{left.class} and #{right.inspect}:#{right.class}/)
+          }.to raise_error(Facter::Util::Values::DeepMergeError, /Cannot merge #{left.inspect}:#{left.class} and #{right.inspect}:#{right.class}/)
         end
       end
     end

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-puppet/facter.git



More information about the Pkg-puppet-devel mailing list