ice_nine 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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: