ice_nine 0.8.0 → 0.9.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 (44) hide show
  1. checksums.yaml +15 -0
  2. data/.rspec +5 -0
  3. data/.travis.yml +23 -12
  4. data/Gemfile +3 -65
  5. data/Gemfile.devtools +55 -0
  6. data/Rakefile +2 -6
  7. data/config/devtools.yml +2 -0
  8. data/config/flay.yml +2 -2
  9. data/config/flog.yml +1 -1
  10. data/config/mutant.yml +3 -0
  11. data/config/{site.reek → reek.yml} +63 -48
  12. data/config/rubocop.yml +62 -0
  13. data/config/yardstick.yml +1 -1
  14. data/lib/ice_nine.rb +1 -0
  15. data/lib/ice_nine/freezer.rb +3 -6
  16. data/lib/ice_nine/freezer/hash.rb +3 -2
  17. data/lib/ice_nine/freezer/module.rb +10 -0
  18. data/lib/ice_nine/support/recursion_guard.rb +5 -5
  19. data/lib/ice_nine/version.rb +1 -1
  20. data/spec/integration/ice_nine/class_methods/deep_freeze_spec.rb +16 -16
  21. data/spec/spec_helper.rb +18 -11
  22. data/spec/unit/ice_nine/class_methods/deep_freeze_spec.rb +2 -2
  23. data/spec/unit/ice_nine/freezer/array/class_methods/deep_freeze_spec.rb +1 -1
  24. data/spec/unit/ice_nine/freezer/class_methods/{element_reference_spec.rb → element_reader_spec.rb} +55 -4
  25. data/spec/unit/ice_nine/freezer/hash/class_methods/deep_freeze_spec.rb +12 -12
  26. data/spec/unit/ice_nine/freezer/module/class_methods/deep_freeze_spec.rb +24 -0
  27. data/spec/unit/ice_nine/freezer/no_freeze/class_methods/deep_freeze_spec.rb +1 -1
  28. data/spec/unit/ice_nine/freezer/object/class_methods/deep_freeze_spec.rb +1 -1
  29. data/spec/unit/ice_nine/freezer/range/class_methods/deep_freeze_spec.rb +2 -2
  30. data/spec/unit/ice_nine/freezer/struct/class_methods/deep_freeze_spec.rb +1 -1
  31. data/spec/unit/ice_nine/recursion_guard/class_methods/guard_spec.rb +2 -2
  32. metadata +16 -24
  33. data/spec/rcov.opts +0 -7
  34. data/spec/spec.opts +0 -3
  35. data/spec/support/heckle.rb +0 -8
  36. data/tasks/metrics/ci.rake +0 -9
  37. data/tasks/metrics/flay.rake +0 -45
  38. data/tasks/metrics/flog.rake +0 -44
  39. data/tasks/metrics/heckle.rake +0 -207
  40. data/tasks/metrics/metric_fu.rake +0 -31
  41. data/tasks/metrics/roodi.rake +0 -19
  42. data/tasks/metrics/yardstick.rake +0 -25
  43. data/tasks/spec.rake +0 -60
  44. data/tasks/yard.rake +0 -11
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MTFlNzA3NDRhNmQwNjNlZjc4ZjA0ZWYxMjE0ZWNlMDY3NDQ1MjNlOA==
5
+ data.tar.gz: !binary |-
6
+ YTZiZGQzNThmNmQ1ZjZhNTRlYjBmOTI5MWM1MGVhNjE2YzhhMjIwNQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NjQ5YWYxMDEwYjhjMjFhNDA5MzdiMTlhNzAwNmJlMDVkNWQwNDk5MmFmYTdk
10
+ ZmNhZjM3YjQ1NjE5MjBmNjIzMWFlZmVlYjQyYTIxMmMzZDRjMDRhMGRjODVk
11
+ MWE3OTRiMjY3ZDhmMzdkYzk5Yjc3Y2Y5ODg0NWZiM2U0NWZlZTY=
12
+ data.tar.gz: !binary |-
13
+ OGNjMWJmMjc2YTNkMWQxNWI2NGI0MTUxOTE0ZWYzYzY3YjdkMTQ4NGRjYzNm
14
+ NzgzMWNlMDAyMGI3NGUyNzRlZjkyZjkzNWVkYTMwMWJmMWFhMmU0MjUzM2Q0
15
+ OTM2YzdjYmJkYTlkYzA1Yjk1MTljMTg5OThlZWZhMzJjMzdkNjM=
data/.rspec ADDED
@@ -0,0 +1,5 @@
1
+ --color
2
+ --format progress
3
+ --profile
4
+ --warnings
5
+ --order random
@@ -1,20 +1,31 @@
1
1
  language: ruby
2
2
  before_install: gem install bundler
3
- bundler_args: --without yard guard metrics benchmarks
4
- script: "bundle exec rake spec"
3
+ bundler_args: --without yard guard benchmarks
4
+ script: "bundle exec rake ci"
5
5
  rvm:
6
- - ree
7
- - 1.8.7
8
- - 1.9.2
9
6
  - 1.9.3
10
7
  - 2.0.0
11
8
  - ruby-head
12
- - jruby-18mode
13
- - jruby-19mode
14
- - jruby-head
15
- - rbx-18mode
16
- - rbx-19mode
9
+ # - rbx-19mode
17
10
  notifications:
18
- irc: "irc.freenode.org#datamapper"
11
+ irc:
12
+ channels:
13
+ - irc.freenode.org#rom-rb
14
+ on_success: never
15
+ on_failure: change
19
16
  email:
20
- - dan.kubb@gmail.com
17
+ recipients:
18
+ - dan.kubb@gmail.com
19
+ on_success: never
20
+ on_failure: change
21
+ matrix:
22
+ include:
23
+ - rvm: jruby-19mode
24
+ env: JRUBY_OPTS="$JRUBY_OPTS --debug"
25
+ - rvm: jruby-head
26
+ env: JRUBY_OPTS="$JRUBY_OPTS --debug"
27
+ allow_failures:
28
+ # broken on travis
29
+ - rvm: ruby-head
30
+ # simplecov broken
31
+ - rvm: rbx-19mode
data/Gemfile CHANGED
@@ -4,70 +4,8 @@ source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
6
 
7
- group :development do
8
- gem 'rake', '~> 10.0.4'
9
- gem 'rspec', '~> 1.3.2'
10
- gem 'yard', '~> 0.8.6.1'
7
+ group :development, :test do
8
+ gem 'devtools', git: 'https://github.com/rom-rb/devtools.git'
11
9
  end
12
10
 
13
- group :yard do
14
- gem 'kramdown', '~> 1.0.1'
15
- end
16
-
17
- group :guard do
18
- gem 'guard', '~> 1.8.0'
19
- gem 'guard-bundler', '~> 1.0.0'
20
- gem 'guard-rspec', '~> 1.2.1'
21
-
22
- # file system change event handling
23
- gem 'listen', '~> 1.2.1'
24
- gem 'rb-fchange', '~> 0.0.6', :require => false
25
- gem 'rb-fsevent', '~> 0.9.3', :require => false
26
- gem 'rb-inotify', '~> 0.9.0', :require => false
27
-
28
- # notification handling
29
- gem 'libnotify', '~> 0.8.0', :require => false
30
- gem 'rb-notifu', '~> 0.0.4', :require => false
31
- gem 'terminal-notifier-guard', '~> 1.5.3', :require => false
32
- end
33
-
34
- group :metrics do
35
- gem 'backports', '~> 3.3', '>= 3.3.2'
36
- gem 'coveralls', '~> 0.6.7'
37
- gem 'flay', '~> 1.4.3'
38
- gem 'flog', '~> 2.5.3'
39
- gem 'simplecov', '~> 0.7.1'
40
- gem 'roodi', '~> 2.2.0'
41
- gem 'yardstick', '~> 0.9.2'
42
-
43
- platforms :ruby_19 do
44
- gem 'yard-spellcheck', '~> 0.1.5'
45
- end
46
-
47
- platforms :mri_18 do
48
- gem 'arrayfields', '~> 4.9.0' # for metric_fu
49
- gem 'fattr', '~> 2.2.0' # for metric_fu
50
- gem 'heckle', '~> 1.4.3'
51
- gem 'json', '~> 1.8.0' # for metric_fu rake task
52
- gem 'map', '~> 6.5.1' # for metric_fu
53
- gem 'metric_fu', '~> 2.1.1'
54
- gem 'mspec', '~> 1.5.17'
55
- gem 'rails_best_practices', '= 1.13.3' # for metric_fu
56
- gem 'rcov', '~> 1.0.0'
57
- gem 'ruby2ruby', '= 1.2.2' # for heckle
58
- end
59
-
60
- platforms :rbx do
61
- gem 'pelusa', '~> 0.2.2'
62
- end
63
- end
64
-
65
- group :benchmarks do
66
- gem 'rbench', '~> 0.2.3'
67
- end
68
-
69
- platform :jruby do
70
- group :jruby do
71
- gem 'jruby-openssl', '~> 0.8.5'
72
- end
73
- end
11
+ eval_gemfile 'Gemfile.devtools'
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ group :development do
4
+ gem 'rake', '~> 10.1.0'
5
+ gem 'rspec', '~> 2.14.1'
6
+ gem 'yard', '~> 0.8.7'
7
+ end
8
+
9
+ group :yard do
10
+ gem 'kramdown', '~> 1.1.0'
11
+ end
12
+
13
+ group :guard do
14
+ gem 'guard', '~> 1.8.1'
15
+ gem 'guard-bundler', '~> 1.0.0'
16
+ gem 'guard-rspec', '~> 3.0.2'
17
+ gem 'guard-rubocop', '~> 0.2.0'
18
+ # gem 'guard-mutant', '~> 0.0.1'
19
+
20
+ # file system change event handling
21
+ gem 'listen', '~> 1.3.0'
22
+ gem 'rb-fchange', '~> 0.0.6', require: false
23
+ gem 'rb-fsevent', '~> 0.9.3', require: false
24
+ gem 'rb-inotify', '~> 0.9.0', require: false
25
+
26
+ # notification handling
27
+ gem 'libnotify', '~> 0.8.0', require: false
28
+ gem 'rb-notifu', '~> 0.0.4', require: false
29
+ gem 'terminal-notifier-guard', '~> 1.5.3', require: false
30
+ end
31
+
32
+ group :metrics do
33
+ gem 'coveralls', '~> 0.6.7'
34
+ gem 'flay', '~> 2.4.0'
35
+ gem 'flog', '~> 4.1.1'
36
+ gem 'reek', '~> 1.3.2'
37
+ gem 'rubocop', '~> 0.11.0'
38
+ gem 'simplecov', '~> 0.7.1'
39
+ gem 'yardstick', '~> 0.9.7', git: 'https://github.com/dkubb/yardstick.git'
40
+
41
+ platforms :ruby_19, :ruby_20 do
42
+ # gem 'mutant', git: 'https://github.com/mbj/mutant.git'
43
+ gem 'yard-spellcheck', '~> 0.1.5'
44
+ end
45
+ end
46
+
47
+ group :benchmarks do
48
+ gem 'rbench', '~> 0.2.3'
49
+ end
50
+
51
+ platform :jruby do
52
+ group :jruby do
53
+ gem 'jruby-openssl', '~> 0.8.5'
54
+ end
55
+ end
data/Rakefile CHANGED
@@ -1,8 +1,4 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'rake'
4
-
5
- FileList['tasks/**/*.rake'].each { |task| import task }
6
-
7
- desc 'Default: run all specs'
8
- task :default => :spec
3
+ require 'devtools'
4
+ Devtools.init_rake_tasks
@@ -0,0 +1,2 @@
1
+ ---
2
+ unit_test_timeout: 0.1
@@ -1,3 +1,3 @@
1
1
  ---
2
- threshold: 6
3
- total_score: 37.0
2
+ threshold: 4
3
+ total_score: 22.0
@@ -1,2 +1,2 @@
1
1
  ---
2
- threshold: 9.7
2
+ threshold: 8.0
@@ -0,0 +1,3 @@
1
+ ---
2
+ name: ice_nine
3
+ namespace: IceNine
@@ -1,91 +1,106 @@
1
1
  ---
2
- UncommunicativeParameterName:
3
- accept: []
4
- exclude: []
2
+ Attribute:
5
3
  enabled: true
6
- reject:
7
- - !ruby/regexp /^.$/
8
- - !ruby/regexp /[0-9]$/
9
- - !ruby/regexp /[A-Z]/
10
- LargeClass:
11
- max_methods: 1
12
4
  exclude: []
5
+ BooleanParameter:
13
6
  enabled: true
14
- max_instance_variables: 1
15
- UncommunicativeMethodName:
16
- accept: []
17
7
  exclude: []
8
+ ClassVariable:
18
9
  enabled: true
19
- reject:
20
- - !ruby/regexp /^[a-z]$/
21
- - !ruby/regexp /[0-9]$/
22
- - !ruby/regexp /[A-Z]/
23
- LongParameterList:
24
- max_params: 1
25
10
  exclude: []
11
+ ControlParameter:
26
12
  enabled: true
27
- overrides: {}
28
- FeatureEnvy:
29
13
  exclude: []
14
+ DataClump:
30
15
  enabled: true
31
- ClassVariable:
32
16
  exclude: []
17
+ max_copies: 2
18
+ min_clump_size: 2
19
+ DuplicateMethodCall:
33
20
  enabled: true
34
- BooleanParameter:
35
21
  exclude: []
22
+ max_calls: 1
23
+ allow_calls: []
24
+ FeatureEnvy:
36
25
  enabled: true
26
+ exclude: []
37
27
  IrresponsibleModule:
28
+ enabled: true
38
29
  exclude: []
30
+ LongParameterList:
39
31
  enabled: true
40
- UncommunicativeModuleName:
41
- accept: []
42
32
  exclude: []
33
+ max_params: 2
34
+ overrides:
35
+ initialize:
36
+ max_params: 3
37
+ LongYieldList:
43
38
  enabled: true
44
- reject:
45
- - !ruby/regexp /^.$/
46
- - !ruby/regexp /[0-9]$/
39
+ exclude: []
40
+ max_params: 2
47
41
  NestedIterators:
42
+ enabled: true
43
+ exclude: []
44
+ max_allowed_nesting: 1
48
45
  ignore_iterators: []
46
+ NilCheck:
47
+ enabled: true
49
48
  exclude: []
49
+ RepeatedConditional:
50
50
  enabled: true
51
- max_allowed_nesting: 1
52
- LongMethod:
53
- max_statements: 5
54
51
  exclude: []
52
+ max_ifs: 1
53
+ TooManyInstanceVariables:
55
54
  enabled: true
56
- Duplication:
57
- allow_calls: []
58
55
  exclude: []
56
+ max_instance_variables: 3
57
+ TooManyMethods:
59
58
  enabled: true
60
- max_calls: 1
61
- UtilityFunction:
62
- max_helper_calls: 0
63
59
  exclude: []
60
+ max_methods: 10
61
+ TooManyStatements:
62
+ enabled: true
63
+ exclude:
64
+ - IceNine::Freezer::Hash#self.deep_freeze
65
+ - IceNine::Freezer::Range#self.deep_freeze
66
+ - IceNine::RecursionGuard#self.guard
67
+ - each
68
+ max_statements: 2
69
+ UncommunicativeMethodName:
64
70
  enabled: true
65
- Attribute:
66
71
  exclude: []
67
- enabled: false
68
- UncommunicativeVariableName:
72
+ reject:
73
+ - !ruby/regexp /^[a-z]$/
74
+ - !ruby/regexp /[0-9]$/
75
+ - !ruby/regexp /[A-Z]/
69
76
  accept: []
77
+ UncommunicativeModuleName:
78
+ enabled: true
70
79
  exclude: []
80
+ reject:
81
+ - !ruby/regexp /^.$/
82
+ - !ruby/regexp /[0-9]$/
83
+ accept: []
84
+ UncommunicativeParameterName:
71
85
  enabled: true
86
+ exclude: []
72
87
  reject:
73
88
  - !ruby/regexp /^.$/
74
89
  - !ruby/regexp /[0-9]$/
75
90
  - !ruby/regexp /[A-Z]/
76
- SimulatedPolymorphism:
77
- exclude: []
91
+ accept: []
92
+ UncommunicativeVariableName:
78
93
  enabled: true
79
- max_ifs: 1
80
- DataClump:
81
94
  exclude: []
95
+ reject:
96
+ - !ruby/regexp /^.$/
97
+ - !ruby/regexp /[0-9]$/
98
+ - !ruby/regexp /[A-Z]/
99
+ accept: []
100
+ UnusedParameters:
82
101
  enabled: true
83
- max_copies: 0
84
- min_clump_size: 0
85
- ControlCouple:
86
102
  exclude: []
103
+ UtilityFunction:
87
104
  enabled: true
88
- LongYieldList:
89
- max_params: 0
90
105
  exclude: []
91
- enabled: true
106
+ max_helper_calls: 0
@@ -0,0 +1,62 @@
1
+ AllCops:
2
+ Includes:
3
+ - '**/*.rake'
4
+ - 'Gemfile'
5
+ - 'Gemfile.devtools'
6
+ Excludes:
7
+ - '**/vendor/**'
8
+ - '**/benchmarks/**'
9
+
10
+ # Avoid parameter lists longer than five parameters.
11
+ ParameterLists:
12
+ Max: 3
13
+ CountKeywordArgs: true
14
+
15
+ # Avoid more than `Max` levels of nesting.
16
+ BlockNesting:
17
+ Max: 3
18
+
19
+ # Align with the style guide.
20
+ CollectionMethods:
21
+ PreferredMethods:
22
+ collect: 'map'
23
+ inject: 'reduce'
24
+ find: 'detect'
25
+ find_all: 'select'
26
+
27
+ # Do not force public/protected/private keyword to be indented at the same
28
+ # level as the def keyword. My personal preference is to outdent these keywords
29
+ # because I think when scanning code it makes it easier to identify the
30
+ # sections of code and visually separate them. When the keyword is at the same
31
+ # level I think it sort of blends in with the def keywords and makes it harder
32
+ # to scan the code and see where the sections are.
33
+ AccessControl:
34
+ Enabled: false
35
+
36
+ # Limit line length
37
+ LineLength:
38
+ Max: 79
39
+
40
+ # Disable documentation checking until a class needs to be documented once
41
+ Documentation:
42
+ Enabled: false
43
+
44
+ # Do not always use &&/|| instead of and/or.
45
+ AndOr:
46
+ Enabled: false
47
+
48
+ # Do not favor modifier if/unless usage when you have a single-line body
49
+ IfUnlessModifier:
50
+ Enabled: false
51
+
52
+ # Allow case equality operator (in limited use within the specs)
53
+ CaseEquality:
54
+ Enabled: false
55
+
56
+ # Constants do not always have to use SCREAMING_SNAKE_CASE
57
+ ConstantName:
58
+ Enabled: false
59
+
60
+ # Not all trivial readers/writers can be defined with attr_* methods
61
+ TrivialAccessors:
62
+ Enabled: false