ice_nine 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +7 -15
  2. data/.travis.yml +8 -7
  3. data/Gemfile +10 -0
  4. data/Gemfile.devtools +5 -4
  5. data/README.md +4 -24
  6. data/benchmarks/speed.rb +4 -2
  7. data/config/flay.yml +2 -2
  8. data/config/flog.yml +1 -1
  9. data/config/reek.yml +9 -2
  10. data/config/rubocop.yml +0 -1
  11. data/ice_nine.gemspec +1 -0
  12. data/lib/ice_nine.rb +24 -9
  13. data/lib/ice_nine/core_ext/object.rb +17 -3
  14. data/lib/ice_nine/freezer.rb +43 -3
  15. data/lib/ice_nine/freezer/array.rb +6 -8
  16. data/lib/ice_nine/freezer/false_class.rb +2 -2
  17. data/lib/ice_nine/freezer/hash.rb +22 -9
  18. data/lib/ice_nine/freezer/hash/state.rb +3 -3
  19. data/lib/ice_nine/freezer/module.rb +2 -2
  20. data/lib/ice_nine/freezer/nil_class.rb +2 -2
  21. data/lib/ice_nine/freezer/no_freeze.rb +5 -6
  22. data/lib/ice_nine/freezer/numeric.rb +2 -2
  23. data/lib/ice_nine/freezer/object.rb +7 -8
  24. data/lib/ice_nine/freezer/range.rb +7 -8
  25. data/lib/ice_nine/freezer/rubinius.rb +2 -2
  26. data/lib/ice_nine/freezer/struct.rb +2 -2
  27. data/lib/ice_nine/freezer/symbol.rb +2 -2
  28. data/lib/ice_nine/freezer/true_class.rb +2 -2
  29. data/lib/ice_nine/support/recursion_guard.rb +48 -28
  30. data/lib/ice_nine/version.rb +3 -3
  31. data/spec/integration/ice_nine/class_methods/deep_freeze_bang_spec.rb +21 -0
  32. data/spec/integration/ice_nine/class_methods/deep_freeze_spec.rb +5 -254
  33. data/spec/shared/array_deep_freeze_shared_spec.rb +9 -0
  34. data/spec/shared/hash_deep_freeze_shared_spec.rb +23 -0
  35. data/spec/shared/ice_nine_deep_freeze_shared_spec.rb +263 -0
  36. data/spec/shared/no_freeze_deep_freeze_shared_spec.rb +19 -0
  37. data/spec/shared/object_deep_freeze_shared_spec.rb +19 -0
  38. data/spec/shared/range_deep_freeze_shared_spec.rb +13 -0
  39. data/spec/unit/ice_nine/class_methods/deep_freeze_bang_spec.rb +24 -0
  40. data/spec/unit/ice_nine/class_methods/deep_freeze_spec.rb +6 -19
  41. data/spec/unit/ice_nine/core_ext/object/deep_freeze_bang_spec.rb +24 -0
  42. data/spec/unit/ice_nine/core_ext/object/deep_freeze_spec.rb +3 -9
  43. data/spec/unit/ice_nine/freezer/array/class_methods/deep_freeze_spec.rb +0 -14
  44. data/spec/unit/ice_nine/freezer/false_class/class_methods/deep_freeze_spec.rb +1 -7
  45. data/spec/unit/ice_nine/freezer/hash/class_methods/deep_freeze_spec.rb +1 -29
  46. data/spec/unit/ice_nine/freezer/module/class_methods/deep_freeze_spec.rb +1 -7
  47. data/spec/unit/ice_nine/freezer/nil_class/class_methods/deep_freeze_spec.rb +1 -7
  48. data/spec/unit/ice_nine/freezer/no_freeze/class_methods/deep_freeze_spec.rb +3 -23
  49. data/spec/unit/ice_nine/freezer/numeric/class_methods/deep_freeze_spec.rb +3 -12
  50. data/spec/unit/ice_nine/freezer/object/class_methods/deep_freeze_spec.rb +0 -18
  51. data/spec/unit/ice_nine/freezer/range/class_methods/deep_freeze_spec.rb +0 -18
  52. data/spec/unit/ice_nine/freezer/struct/class_methods/deep_freeze_spec.rb +1 -11
  53. data/spec/unit/ice_nine/freezer/symbol/class_methods/deep_freeze_spec.rb +1 -7
  54. data/spec/unit/ice_nine/freezer/true_class/class_methods/deep_freeze_spec.rb +1 -7
  55. data/spec/unit/ice_nine/recursion_guard/frozen/guard_spec.rb +28 -0
  56. data/spec/unit/ice_nine/recursion_guard/object_set/guard_spec.rb +31 -0
  57. data/spec/unit/object/deep_freeze_spec.rb +3 -9
  58. metadata +54 -41
  59. data/spec/unit/ice_nine/recursion_guard/class_methods/guard_spec.rb +0 -33
@@ -5,15 +5,9 @@ require 'ice_nine'
5
5
  require 'ice_nine/core_ext/object'
6
6
 
7
7
  describe IceNine::CoreExt::Object, '#deep_freeze' do
8
- subject { object.deep_freeze }
8
+ subject { value.deep_freeze }
9
9
 
10
- let(:object) { Object.new.extend(IceNine::CoreExt::Object) }
10
+ let(:value) { Object.new.extend(IceNine::CoreExt::Object) }
11
11
 
12
- it 'returns the object' do
13
- should be(object)
14
- end
15
-
16
- it 'freezes the object' do
17
- expect { subject }.to change(object, :frozen?).from(false).to(true)
18
- end
12
+ it_behaves_like 'IceNine::Freezer::Object.deep_freeze'
19
13
  end
@@ -8,20 +8,6 @@ describe IceNine::Freezer::Array, '.deep_freeze' do
8
8
 
9
9
  let(:object) { described_class }
10
10
 
11
- shared_examples 'IceNine::Freezer::Array.deep_freeze' do
12
- it 'returns the object' do
13
- should be(value)
14
- end
15
-
16
- it 'freezes the object' do
17
- expect { subject }.to change(value, :frozen?).from(false).to(true)
18
- end
19
-
20
- it 'freezes each entry in the Array' do
21
- expect(subject.select(&:frozen?)).to eql(subject)
22
- end
23
- end
24
-
25
11
  context 'with an Array object' do
26
12
  let(:value) { %w[a] }
27
13
 
@@ -13,12 +13,6 @@ describe IceNine::Freezer::FalseClass, '.deep_freeze' do
13
13
  context 'with a false object' do
14
14
  let(:value) { false }
15
15
 
16
- it 'returns the object' do
17
- should be(value)
18
- end
19
-
20
- it 'does not freeze the object' do
21
- expect { subject }.to_not change(value, :frozen?).from(false)
22
- end
16
+ it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
23
17
  end
24
18
  end
@@ -8,37 +8,9 @@ describe IceNine::Freezer::Hash, '.deep_freeze' do
8
8
 
9
9
  let(:object) { described_class }
10
10
 
11
- shared_examples 'IceNine::Freezer::Hash.deep_freeze' do
12
- it 'returns the object' do
13
- should be(value)
14
- end
15
-
16
- it 'freezes the object' do
17
- expect { subject }.to change(value, :frozen?).from(false).to(true)
18
- end
19
-
20
- it 'freezes each key in the Hash' do
21
- expect(subject.keys.select(&:frozen?)).to eql(subject.keys)
22
- end
23
-
24
- it 'freezes each value in the Hash' do
25
- expect(subject.values.select(&:frozen?)).to eql(subject.values)
26
- end
27
-
28
- if RUBY_VERSION >= '1.9' && RUBY_ENGINE == 'rbx'
29
- it 'does not freeze the Hash state' do
30
- expect(subject.instance_variable_get(:@state)).to_not be_frozen
31
- end
32
-
33
- it 'does not freeze the Hash entries' do
34
- expect(subject.instance_variable_get(:@entries)).to_not be_frozen
35
- end
36
- end
37
- end
38
-
39
11
  context 'with a Hash object having a default proc' do
40
12
  let(:value) do
41
- Hash.new {}.update(Object.new => Object.new)
13
+ Hash.new { }.update(Object.new => Object.new)
42
14
  end
43
15
 
44
16
  it_behaves_like 'IceNine::Freezer::Hash.deep_freeze'
@@ -13,12 +13,6 @@ describe IceNine::Freezer::Module, '.deep_freeze' do
13
13
  context 'with a Module object' do
14
14
  let(:value) { Module.new }
15
15
 
16
- it 'returns the object' do
17
- should be(value)
18
- end
19
-
20
- it 'does not freeze the object' do
21
- expect { subject }.to_not change(value, :frozen?).from(false)
22
- end
16
+ it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
23
17
  end
24
18
  end
@@ -13,12 +13,6 @@ describe IceNine::Freezer::NilClass, '.deep_freeze' do
13
13
  context 'with a nil object' do
14
14
  let(:value) { nil }
15
15
 
16
- it 'returns the object' do
17
- should be(value)
18
- end
19
-
20
- it 'does not freeze the object' do
21
- expect { subject }.to_not change(value, :frozen?).from(false)
22
- end
16
+ it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
23
17
  end
24
18
  end
@@ -4,30 +4,10 @@ require 'spec_helper'
4
4
  require 'ice_nine/freezer/no_freeze'
5
5
 
6
6
  describe IceNine::Freezer::NoFreeze, '.deep_freeze' do
7
+ subject { object.deep_freeze(value) }
8
+
7
9
  let(:object) { described_class }
8
10
  let(:value) { double('value') }
9
11
 
10
- shared_examples 'IceNine::Freezer::NoFreeze.deep_freeze' do
11
- it 'returns the object' do
12
- should be(value)
13
- end
14
-
15
- it 'does not freeze the object' do
16
- expect { subject }.to_not change(value, :frozen?).from(false)
17
- end
18
- end
19
-
20
- context 'with a recursion guard' do
21
- subject { object.deep_freeze(value, recursion_guard) }
22
-
23
- let(:recursion_guard) { double('recursion_guard') }
24
-
25
- it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
26
- end
27
-
28
- context 'without a recursion guard' do
29
- subject { object.deep_freeze(value) }
30
-
31
- it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
32
- end
12
+ it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
33
13
  end
@@ -4,27 +4,18 @@ require 'spec_helper'
4
4
  require 'ice_nine/freezer'
5
5
  require 'ice_nine/freezer/no_freeze'
6
6
  require 'ice_nine/freezer/numeric'
7
+ require 'bigdecimal'
7
8
 
8
9
  describe IceNine::Freezer::Numeric, '.deep_freeze' do
9
10
  subject { object.deep_freeze(value) }
10
11
 
11
12
  let(:object) { described_class }
12
13
 
13
- shared_examples 'IceNine::Freezer::Numeric.deep_freeze' do
14
- it 'returns the object' do
15
- should be(value)
16
- end
17
-
18
- it 'does not freeze the object' do
19
- expect { subject }.to_not change(value, :frozen?).from(false)
20
- end
21
- end
22
-
23
- [0.0, 0, 0x7fffffffffffffff].each do |value|
14
+ [0.0, 0, 0x7fffffffffffffff, BigDecimal('0')].each do |value|
24
15
  context "with a #{value.class} object" do
25
16
  let(:value) { value }
26
17
 
27
- it_behaves_like 'IceNine::Freezer::Numeric.deep_freeze'
18
+ it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
28
19
  end
29
20
  end
30
21
  end
@@ -8,27 +8,9 @@ describe IceNine::Freezer::Object, '.deep_freeze' do
8
8
 
9
9
  let(:object) { described_class }
10
10
 
11
- shared_examples 'IceNine::Freezer::Object.deep_freeze' do
12
- it 'returns the object' do
13
- should be(value)
14
- end
15
-
16
- it 'freezes the object' do
17
- expect { subject }.to change(value, :frozen?).from(false).to(true)
18
- end
19
-
20
- it 'freezes the instance variables in the Object' do
21
- expect(subject.instance_variable_get(:@a)).to be_frozen
22
- end
23
- end
24
-
25
11
  context 'with an Object' do
26
12
  let(:value) { Object.new }
27
13
 
28
- before do
29
- value.instance_eval { @a = '1' }
30
- end
31
-
32
14
  context 'without a circular reference' do
33
15
  it_behaves_like 'IceNine::Freezer::Object.deep_freeze'
34
16
  end
@@ -33,24 +33,6 @@ describe IceNine::Freezer::Range, '.deep_freeze' do
33
33
  end
34
34
  end
35
35
 
36
- shared_examples 'IceNine::Freezer::Range.deep_freeze' do
37
- it 'returns the object' do
38
- should be(value)
39
- end
40
-
41
- it 'freezes the object' do
42
- expect { subject }.to change(value, :frozen?).from(false).to(true)
43
- end
44
-
45
- it 'freeze the first object in the Range' do
46
- expect(subject.begin).to be_frozen
47
- end
48
-
49
- it 'freeze the last object in the Range' do
50
- expect(subject.end).to be_frozen
51
- end
52
- end
53
-
54
36
  context 'with a Range' do
55
37
  let(:value) { element_class.new(1)..element_class.new(100) }
56
38
 
@@ -12,16 +12,6 @@ describe IceNine::Freezer::Struct, '.deep_freeze' do
12
12
  let(:value) { klass.new('1') }
13
13
  let(:klass) { Struct.new(:a) }
14
14
 
15
- it 'returns the object' do
16
- should be(value)
17
- end
18
-
19
- it 'freezes the object' do
20
- expect { subject }.to change(value, :frozen?).from(false).to(true)
21
- end
22
-
23
- it 'freezes each value in the Struct' do
24
- expect(subject.values.select(&:frozen?)).to eql(subject.values)
25
- end
15
+ it_behaves_like 'IceNine::Freezer::Array.deep_freeze'
26
16
  end
27
17
  end
@@ -13,12 +13,6 @@ describe IceNine::Freezer::Symbol, '.deep_freeze' do
13
13
  context 'with a Symbol object' do
14
14
  let(:value) { :symbol }
15
15
 
16
- it 'returns the object' do
17
- should be(value)
18
- end
19
-
20
- it 'does not freeze the object' do
21
- expect { subject }.to_not change(value, :frozen?).from(false)
22
- end
16
+ it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
23
17
  end
24
18
  end
@@ -14,12 +14,6 @@ describe IceNine::Freezer::TrueClass, '.deep_freeze' do
14
14
  context 'with a true object' do
15
15
  let(:value) { true }
16
16
 
17
- it 'returns the object' do
18
- should be(value)
19
- end
20
-
21
- it 'does not freeze the object' do
22
- expect { subject }.to_not change(value, :frozen?).from(false)
23
- end
17
+ it_behaves_like 'IceNine::Freezer::NoFreeze.deep_freeze'
24
18
  end
25
19
  end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'ice_nine/support/recursion_guard'
5
+
6
+ describe IceNine::RecursionGuard::Frozen, '#guard' do
7
+ subject { object.guard(object_arg) { return_value } }
8
+
9
+ let(:object) { IceNine::RecursionGuard::Frozen.new }
10
+ let(:object_arg) { Object.new }
11
+ let(:return_value) { double('return_value') }
12
+
13
+ context 'when the object_arg is not frozen' do
14
+ it 'returns the expected value' do
15
+ should be(return_value)
16
+ end
17
+ end
18
+
19
+ context 'when the object_arg is frozen' do
20
+ before do
21
+ object_arg.freeze
22
+ end
23
+
24
+ it 'returns the expected value' do
25
+ should be(object_arg)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'ice_nine/support/recursion_guard'
5
+
6
+ describe IceNine::RecursionGuard::ObjectSet, '#guard' do
7
+ let(:object) { IceNine::RecursionGuard::ObjectSet.new }
8
+ let(:object_arg) { Object.new }
9
+ let(:return_value) { double('return_value') }
10
+
11
+ context 'when the block is not recursive' do
12
+ subject { object.guard(object_arg) { return_value } }
13
+
14
+ it 'returns the expected value' do
15
+ should be(return_value)
16
+ end
17
+ end
18
+
19
+ context 'when the block is recursive' do
20
+ subject do
21
+ object.guard(object_arg) do
22
+ expect(subject).to be(object_arg)
23
+ return_value
24
+ end
25
+ end
26
+
27
+ it 'returns the expected value' do
28
+ should be(return_value)
29
+ end
30
+ end
31
+ end
@@ -5,15 +5,9 @@ require 'ice_nine'
5
5
  require 'ice_nine/core_ext/object'
6
6
 
7
7
  describe Object, '#deep_freeze' do
8
- subject { object.deep_freeze }
8
+ subject { value.deep_freeze }
9
9
 
10
- let(:object) { described_class.new }
10
+ let(:value) { described_class.new }
11
11
 
12
- it 'returns the object' do
13
- should be(object)
14
- end
15
-
16
- it 'freezes the object' do
17
- expect { subject }.to change(object, :frozen?).from(false).to(true)
18
- end
12
+ it_behaves_like 'IceNine::Freezer::Object.deep_freeze'
19
13
  end
metadata CHANGED
@@ -1,45 +1,41 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ice_nine
3
- version: !ruby/object:Gem::Version
4
- version: 0.10.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.11.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Dan Kubb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-19 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2013-12-19 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
20
- - - ! '>='
21
- - !ruby/object:Gem::Version
22
- version: 1.3.5
23
- type: :development
24
16
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
27
19
  - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '1.3'
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
21
+ version: "1.3"
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
32
24
  version: 1.3.5
25
+ type: :development
26
+ version_requirements: *id001
33
27
  description: Deep Freeze Ruby Objects
34
- email:
28
+ email:
35
29
  - dan.kubb@gmail.com
36
30
  executables: []
31
+
37
32
  extensions: []
38
- extra_rdoc_files:
33
+
34
+ extra_rdoc_files:
39
35
  - LICENSE
40
36
  - README.md
41
37
  - TODO
42
- files:
38
+ files:
43
39
  - .gitignore
44
40
  - .pelusa.yml
45
41
  - .rspec
@@ -83,10 +79,19 @@ files:
83
79
  - lib/ice_nine/freezer/true_class.rb
84
80
  - lib/ice_nine/support/recursion_guard.rb
85
81
  - lib/ice_nine/version.rb
82
+ - spec/integration/ice_nine/class_methods/deep_freeze_bang_spec.rb
86
83
  - spec/integration/ice_nine/class_methods/deep_freeze_spec.rb
84
+ - spec/shared/array_deep_freeze_shared_spec.rb
85
+ - spec/shared/hash_deep_freeze_shared_spec.rb
86
+ - spec/shared/ice_nine_deep_freeze_shared_spec.rb
87
+ - spec/shared/no_freeze_deep_freeze_shared_spec.rb
88
+ - spec/shared/object_deep_freeze_shared_spec.rb
89
+ - spec/shared/range_deep_freeze_shared_spec.rb
87
90
  - spec/spec_helper.rb
88
91
  - spec/support/config_alias.rb
92
+ - spec/unit/ice_nine/class_methods/deep_freeze_bang_spec.rb
89
93
  - spec/unit/ice_nine/class_methods/deep_freeze_spec.rb
94
+ - spec/unit/ice_nine/core_ext/object/deep_freeze_bang_spec.rb
90
95
  - spec/unit/ice_nine/core_ext/object/deep_freeze_spec.rb
91
96
  - spec/unit/ice_nine/freezer/array/class_methods/deep_freeze_spec.rb
92
97
  - spec/unit/ice_nine/freezer/class_methods/element_reader_spec.rb
@@ -101,34 +106,41 @@ files:
101
106
  - spec/unit/ice_nine/freezer/struct/class_methods/deep_freeze_spec.rb
102
107
  - spec/unit/ice_nine/freezer/symbol/class_methods/deep_freeze_spec.rb
103
108
  - spec/unit/ice_nine/freezer/true_class/class_methods/deep_freeze_spec.rb
104
- - spec/unit/ice_nine/recursion_guard/class_methods/guard_spec.rb
109
+ - spec/unit/ice_nine/recursion_guard/frozen/guard_spec.rb
110
+ - spec/unit/ice_nine/recursion_guard/object_set/guard_spec.rb
105
111
  - spec/unit/object/deep_freeze_spec.rb
106
112
  homepage: https://github.com/dkubb/ice_nine
107
- licenses: []
113
+ licenses:
114
+ - MIT
108
115
  metadata: {}
116
+
109
117
  post_install_message:
110
118
  rdoc_options: []
111
- require_paths:
119
+
120
+ require_paths:
112
121
  - lib
113
- required_ruby_version: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- required_rubygems_version: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - ! '>='
121
- - !ruby/object:Gem::Version
122
- version: '0'
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - &id002
125
+ - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: "0"
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - *id002
123
131
  requirements: []
132
+
124
133
  rubyforge_project:
125
- rubygems_version: 2.1.1
134
+ rubygems_version: 2.1.10
126
135
  signing_key:
127
136
  specification_version: 4
128
137
  summary: Deep Freeze Ruby Objects
129
- test_files:
138
+ test_files:
139
+ - spec/integration/ice_nine/class_methods/deep_freeze_bang_spec.rb
130
140
  - spec/integration/ice_nine/class_methods/deep_freeze_spec.rb
141
+ - spec/unit/ice_nine/class_methods/deep_freeze_bang_spec.rb
131
142
  - spec/unit/ice_nine/class_methods/deep_freeze_spec.rb
143
+ - spec/unit/ice_nine/core_ext/object/deep_freeze_bang_spec.rb
132
144
  - spec/unit/ice_nine/core_ext/object/deep_freeze_spec.rb
133
145
  - spec/unit/ice_nine/freezer/array/class_methods/deep_freeze_spec.rb
134
146
  - spec/unit/ice_nine/freezer/class_methods/element_reader_spec.rb
@@ -143,6 +155,7 @@ test_files:
143
155
  - spec/unit/ice_nine/freezer/struct/class_methods/deep_freeze_spec.rb
144
156
  - spec/unit/ice_nine/freezer/symbol/class_methods/deep_freeze_spec.rb
145
157
  - spec/unit/ice_nine/freezer/true_class/class_methods/deep_freeze_spec.rb
146
- - spec/unit/ice_nine/recursion_guard/class_methods/guard_spec.rb
158
+ - spec/unit/ice_nine/recursion_guard/frozen/guard_spec.rb
159
+ - spec/unit/ice_nine/recursion_guard/object_set/guard_spec.rb
147
160
  - spec/unit/object/deep_freeze_spec.rb
148
161
  has_rdoc: