rubocop 0.13.1 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubocop might be problematic. Click here for more details.

Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/CHANGELOG.md +42 -0
  4. data/README.md +59 -54
  5. data/config/default.yml +124 -95
  6. data/config/disabled.yml +4 -0
  7. data/config/enabled.yml +286 -264
  8. data/lib/rubocop.rb +10 -3
  9. data/lib/rubocop/cli.rb +10 -171
  10. data/lib/rubocop/cop/cop.rb +14 -11
  11. data/lib/rubocop/cop/lint/debugger.rb +35 -0
  12. data/lib/rubocop/cop/lint/syntax.rb +34 -0
  13. data/lib/rubocop/cop/offence.rb +15 -23
  14. data/lib/rubocop/cop/style/align_array.rb +1 -10
  15. data/lib/rubocop/cop/style/align_hash.rb +14 -2
  16. data/lib/rubocop/cop/style/align_parameters.rb +1 -11
  17. data/lib/rubocop/cop/style/and_or.rb +13 -11
  18. data/lib/rubocop/cop/style/attr.rb +1 -1
  19. data/lib/rubocop/cop/style/autocorrect_alignment.rb +31 -6
  20. data/lib/rubocop/cop/style/blocks.rb +14 -6
  21. data/lib/rubocop/cop/style/character_literal.rb +1 -1
  22. data/lib/rubocop/cop/style/class_length.rb +38 -0
  23. data/lib/rubocop/cop/style/collection_methods.rb +1 -1
  24. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  25. data/lib/rubocop/cop/style/configurable_naming.rb +47 -0
  26. data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
  27. data/lib/rubocop/cop/style/empty_literal.rb +1 -1
  28. data/lib/rubocop/cop/style/even_odd.rb +7 -3
  29. data/lib/rubocop/cop/style/hash_methods.rb +1 -1
  30. data/lib/rubocop/cop/style/hash_syntax.rb +36 -7
  31. data/lib/rubocop/cop/style/lambda_call.rb +36 -11
  32. data/lib/rubocop/cop/style/method_call_parentheses.rb +1 -1
  33. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +41 -0
  34. data/lib/rubocop/cop/style/method_length.rb +2 -13
  35. data/lib/rubocop/cop/style/method_name.rb +42 -0
  36. data/lib/rubocop/cop/style/numeric_literals.rb +4 -0
  37. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  38. data/lib/rubocop/cop/style/raise_args.rb +60 -0
  39. data/lib/rubocop/cop/style/redundant_exception.rb +32 -0
  40. data/lib/rubocop/cop/style/redundant_return.rb +14 -5
  41. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  42. data/lib/rubocop/cop/style/semicolon.rb +13 -4
  43. data/lib/rubocop/cop/style/signal_exception.rb +63 -14
  44. data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
  45. data/lib/rubocop/cop/style/string_help.rb +4 -1
  46. data/lib/rubocop/cop/style/string_literals.rb +34 -11
  47. data/lib/rubocop/cop/style/surrounding_space.rb +64 -17
  48. data/lib/rubocop/cop/style/tab.rb +1 -1
  49. data/lib/rubocop/cop/style/variable_name.rb +44 -0
  50. data/lib/rubocop/cop/style/when_then.rb +1 -1
  51. data/lib/rubocop/cop/style/while_until_do.rb +1 -1
  52. data/lib/rubocop/cop/team.rb +4 -7
  53. data/lib/rubocop/cop/util.rb +12 -0
  54. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
  55. data/lib/rubocop/formatter/emacs_style_formatter.rb +5 -2
  56. data/lib/rubocop/formatter/json_formatter.rb +1 -0
  57. data/lib/rubocop/formatter/progress_formatter.rb +9 -13
  58. data/lib/rubocop/formatter/simple_text_formatter.rb +63 -15
  59. data/lib/rubocop/options.rb +184 -0
  60. data/lib/rubocop/processed_source.rb +4 -0
  61. data/lib/rubocop/version.rb +1 -1
  62. data/rubocop.gemspec +1 -1
  63. data/spec/rubocop/cli_spec.rb +870 -1001
  64. data/spec/rubocop/config_spec.rb +13 -13
  65. data/spec/rubocop/config_store_spec.rb +38 -37
  66. data/spec/rubocop/cop/commissioner_spec.rb +42 -46
  67. data/spec/rubocop/cop/cop_spec.rb +72 -77
  68. data/spec/rubocop/cop/corrector_spec.rb +51 -55
  69. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +100 -106
  70. data/spec/rubocop/cop/lint/block_alignment_spec.rb +403 -409
  71. data/spec/rubocop/cop/lint/debugger_spec.rb +39 -0
  72. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +19 -25
  73. data/spec/rubocop/cop/lint/end_alignment_spec.rb +50 -56
  74. data/spec/rubocop/cop/lint/end_in_method_spec.rb +20 -26
  75. data/spec/rubocop/cop/lint/ensure_return_spec.rb +30 -36
  76. data/spec/rubocop/cop/lint/eval_spec.rb +25 -31
  77. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +22 -28
  78. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +51 -57
  79. data/spec/rubocop/cop/lint/loop_spec.rb +17 -23
  80. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +51 -57
  81. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +105 -111
  82. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +230 -236
  83. data/spec/rubocop/cop/lint/syntax_spec.rb +33 -0
  84. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +51 -57
  85. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1544 -1550
  86. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +21 -27
  87. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +119 -125
  88. data/spec/rubocop/cop/lint/void_spec.rb +50 -56
  89. data/spec/rubocop/cop/offence_spec.rb +101 -131
  90. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +6 -12
  91. data/spec/rubocop/cop/rails/read_attribute_spec.rb +6 -12
  92. data/spec/rubocop/cop/rails/validation_spec.rb +13 -19
  93. data/spec/rubocop/cop/style/access_control_spec.rb +146 -152
  94. data/spec/rubocop/cop/style/alias_spec.rb +30 -36
  95. data/spec/rubocop/cop/style/align_array_spec.rb +57 -56
  96. data/spec/rubocop/cop/style/align_hash_spec.rb +256 -237
  97. data/spec/rubocop/cop/style/align_parameters_spec.rb +216 -202
  98. data/spec/rubocop/cop/style/and_or_spec.rb +51 -55
  99. data/spec/rubocop/cop/style/ascii_comments_spec.rb +14 -20
  100. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +26 -32
  101. data/spec/rubocop/cop/style/attr_spec.rb +11 -17
  102. data/spec/rubocop/cop/style/begin_block_spec.rb +6 -12
  103. data/spec/rubocop/cop/style/block_comments_spec.rb +13 -19
  104. data/spec/rubocop/cop/style/block_nesting_spec.rb +134 -140
  105. data/spec/rubocop/cop/style/blocks_spec.rb +81 -84
  106. data/spec/rubocop/cop/style/case_equality_spec.rb +5 -11
  107. data/spec/rubocop/cop/style/case_indentation_spec.rb +71 -77
  108. data/spec/rubocop/cop/style/character_literal_spec.rb +31 -37
  109. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +31 -37
  110. data/spec/rubocop/cop/style/class_length_spec.rb +65 -0
  111. data/spec/rubocop/cop/style/class_methods_spec.rb +35 -41
  112. data/spec/rubocop/cop/style/class_vars_spec.rb +11 -17
  113. data/spec/rubocop/cop/style/collection_methods_spec.rb +41 -47
  114. data/spec/rubocop/cop/style/colon_method_call_spec.rb +45 -51
  115. data/spec/rubocop/cop/style/comment_annotation_spec.rb +79 -85
  116. data/spec/rubocop/cop/style/constant_name_spec.rb +45 -51
  117. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +28 -34
  118. data/spec/rubocop/cop/style/def_without_parentheses_spec.rb +23 -29
  119. data/spec/rubocop/cop/style/documentation_spec.rb +60 -66
  120. data/spec/rubocop/cop/style/dot_position_spec.rb +50 -56
  121. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +109 -110
  122. data/spec/rubocop/cop/style/empty_lines_spec.rb +28 -34
  123. data/spec/rubocop/cop/style/empty_literal_spec.rb +80 -86
  124. data/spec/rubocop/cop/style/encoding_spec.rb +50 -56
  125. data/spec/rubocop/cop/style/end_block_spec.rb +6 -12
  126. data/spec/rubocop/cop/style/end_of_line_spec.rb +13 -19
  127. data/spec/rubocop/cop/style/even_odd_spec.rb +69 -41
  128. data/spec/rubocop/cop/style/favor_join_spec.rb +21 -27
  129. data/spec/rubocop/cop/style/favor_modifier_spec.rb +180 -176
  130. data/spec/rubocop/cop/style/favor_sprintf_spec.rb +41 -47
  131. data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +63 -69
  132. data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +32 -38
  133. data/spec/rubocop/cop/style/final_newline_spec.rb +16 -22
  134. data/spec/rubocop/cop/style/for_spec.rb +18 -24
  135. data/spec/rubocop/cop/style/global_vars_spec.rb +23 -29
  136. data/spec/rubocop/cop/style/hash_methods_spec.rb +39 -45
  137. data/spec/rubocop/cop/style/hash_syntax_spec.rb +93 -65
  138. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +11 -17
  139. data/spec/rubocop/cop/style/indentation_width_spec.rb +377 -383
  140. data/spec/rubocop/cop/style/lambda_call_spec.rb +40 -22
  141. data/spec/rubocop/cop/style/lambda_spec.rb +30 -34
  142. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +44 -50
  143. data/spec/rubocop/cop/style/line_length_spec.rb +11 -17
  144. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +14 -20
  145. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +60 -0
  146. data/spec/rubocop/cop/style/method_length_spec.rb +127 -133
  147. data/spec/rubocop/cop/style/method_name_spec.rb +103 -0
  148. data/spec/rubocop/cop/style/module_function_spec.rb +16 -22
  149. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +64 -70
  150. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +74 -80
  151. data/spec/rubocop/cop/style/nil_comparison_spec.rb +20 -26
  152. data/spec/rubocop/cop/style/not_spec.rb +13 -19
  153. data/spec/rubocop/cop/style/numeric_literals_spec.rb +36 -35
  154. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +5 -11
  155. data/spec/rubocop/cop/style/op_method_spec.rb +61 -67
  156. data/spec/rubocop/cop/style/parameter_lists_spec.rb +31 -37
  157. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +62 -68
  158. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +9 -15
  159. data/spec/rubocop/cop/style/proc_spec.rb +13 -19
  160. data/spec/rubocop/cop/style/raise_args_spec.rb +55 -0
  161. data/spec/rubocop/cop/style/reduce_arguments_spec.rb +49 -55
  162. data/spec/rubocop/cop/style/redundant_begin_spec.rb +47 -53
  163. data/spec/rubocop/cop/style/redundant_exception_spec.rb +27 -0
  164. data/spec/rubocop/cop/style/redundant_return_spec.rb +164 -72
  165. data/spec/rubocop/cop/style/redundant_self_spec.rb +109 -115
  166. data/spec/rubocop/cop/style/regexp_literal_spec.rb +57 -63
  167. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +99 -105
  168. data/spec/rubocop/cop/style/semicolon_spec.rb +95 -90
  169. data/spec/rubocop/cop/style/signal_exception_spec.rb +248 -95
  170. data/spec/rubocop/cop/style/single_line_methods_spec.rb +45 -51
  171. data/spec/rubocop/cop/style/space_after_colon_spec.rb +14 -20
  172. data/spec/rubocop/cop/style/space_after_comma_spec.rb +16 -22
  173. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +48 -54
  174. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +49 -55
  175. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +10 -16
  176. data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +118 -50
  177. data/spec/rubocop/cop/style/space_around_equals_in_default_parameter_spec.rb +18 -24
  178. data/spec/rubocop/cop/style/space_around_operators_spec.rb +204 -210
  179. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +36 -42
  180. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +39 -45
  181. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +62 -68
  182. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +18 -24
  183. data/spec/rubocop/cop/style/special_global_vars_spec.rb +40 -46
  184. data/spec/rubocop/cop/style/string_literals_spec.rb +148 -70
  185. data/spec/rubocop/cop/style/symbol_array_spec.rb +28 -34
  186. data/spec/rubocop/cop/style/symbol_name_spec.rb +132 -138
  187. data/spec/rubocop/cop/style/tab_spec.rb +9 -15
  188. data/spec/rubocop/cop/style/ternary_operator_spec.rb +25 -31
  189. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +10 -16
  190. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +14 -20
  191. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +374 -380
  192. data/spec/rubocop/cop/style/unless_else_spec.rb +17 -23
  193. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +36 -42
  194. data/spec/rubocop/cop/style/variable_name_spec.rb +83 -0
  195. data/spec/rubocop/cop/style/when_then_spec.rb +31 -37
  196. data/spec/rubocop/cop/style/while_until_do_spec.rb +47 -53
  197. data/spec/rubocop/cop/style/word_array_spec.rb +49 -55
  198. data/spec/rubocop/cop/team_spec.rb +125 -127
  199. data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +176 -180
  200. data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +580 -586
  201. data/spec/rubocop/cop/variable_inspector/scope_spec.rb +140 -146
  202. data/spec/rubocop/cop/variable_inspector/variable_spec.rb +52 -58
  203. data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +217 -223
  204. data/spec/rubocop/cop/variable_inspector_spec.rb +15 -19
  205. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +35 -36
  206. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +2 -2
  207. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +24 -1
  208. data/spec/rubocop/formatter/file_list_formatter_spec.rb +1 -1
  209. data/spec/rubocop/formatter/formatter_set_spec.rb +3 -3
  210. data/spec/rubocop/formatter/json_formatter_spec.rb +7 -2
  211. data/spec/rubocop/formatter/offence_count_formatter_spec.rb +1 -1
  212. data/spec/rubocop/formatter/progress_formatter_spec.rb +1 -1
  213. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +55 -6
  214. data/spec/rubocop/options_spec.rb +233 -0
  215. data/spec/rubocop/processed_source_spec.rb +85 -42
  216. data/spec/rubocop/source_parser_spec.rb +108 -110
  217. data/spec/rubocop/target_finder_spec.rb +125 -127
  218. data/spec/rubocop/token_spec.rb +15 -17
  219. metadata +32 -8
  220. data/lib/rubocop/backports/bsearch.rb +0 -39
  221. data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +0 -77
  222. data/spec/rubocop/cop/style/method_and_variable_snake_case_spec.rb +0 -102
@@ -0,0 +1,65 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::ClassLength, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) { { 'Max' => 5, 'CountComments' => false } }
8
+
9
+ it 'rejects a class with more than 5 lines' do
10
+ inspect_source(cop, ['class Test',
11
+ ' a = 1',
12
+ ' a = 2',
13
+ ' a = 3',
14
+ ' a = 4',
15
+ ' a = 5',
16
+ ' a = 6',
17
+ 'end'])
18
+ expect(cop.offences.size).to eq(1)
19
+ end
20
+
21
+ it 'accepts a class with less than 5 lines' do
22
+ inspect_source(cop, ['class Test',
23
+ ' a = 1',
24
+ ' a = 2',
25
+ ' a = 3',
26
+ ' a = 4',
27
+ 'end'])
28
+ expect(cop.offences).to be_empty
29
+ end
30
+
31
+ it 'does not count blank lines' do
32
+ inspect_source(cop, ['class Test',
33
+ ' a = 1',
34
+ ' a = 2',
35
+ ' a = 3',
36
+ ' a = 4',
37
+ '',
38
+ '',
39
+ ' a = 7',
40
+ 'end'])
41
+ expect(cop.offences).to be_empty
42
+ end
43
+
44
+ it 'accepts empty classes' do
45
+ inspect_source(cop, ['class Test',
46
+ 'end'])
47
+ expect(cop.offences).to be_empty
48
+ end
49
+
50
+ context 'when CountComments is enabled' do
51
+ before { cop_config['CountComments'] = true }
52
+
53
+ it 'also counts commented lines' do
54
+ inspect_source(cop, ['class Test',
55
+ ' a = 1',
56
+ ' #a = 2',
57
+ ' a = 3',
58
+ ' #a = 4',
59
+ ' a = 5',
60
+ ' a = 6',
61
+ 'end'])
62
+ expect(cop.offences.size).to eq(1)
63
+ end
64
+ end
65
+ end
@@ -2,50 +2,44 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe ClassMethods do
9
- subject(:cm) { ClassMethods.new }
5
+ describe Rubocop::Cop::Style::ClassMethods do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for methods using a class name' do
12
- inspect_source(cm,
13
- ['class Test',
14
- ' def Test.some_method',
15
- ' do_something',
16
- ' end',
17
- 'end'])
18
- expect(cm.offences.size).to eq(1)
19
- end
8
+ it 'registers an offence for methods using a class name' do
9
+ inspect_source(cop,
10
+ ['class Test',
11
+ ' def Test.some_method',
12
+ ' do_something',
13
+ ' end',
14
+ 'end'])
15
+ expect(cop.offences.size).to eq(1)
16
+ end
20
17
 
21
- it 'registers an offence for methods using a module name' do
22
- inspect_source(cm,
23
- ['module Test',
24
- ' def Test.some_method',
25
- ' do_something',
26
- ' end',
27
- 'end'])
28
- expect(cm.offences.size).to eq(1)
29
- end
18
+ it 'registers an offence for methods using a module name' do
19
+ inspect_source(cop,
20
+ ['module Test',
21
+ ' def Test.some_method',
22
+ ' do_something',
23
+ ' end',
24
+ 'end'])
25
+ expect(cop.offences.size).to eq(1)
26
+ end
30
27
 
31
- it 'does not register an offence for methods using self' do
32
- inspect_source(cm,
33
- ['module Test',
34
- ' def self.some_method',
35
- ' do_something',
36
- ' end',
37
- 'end'])
38
- expect(cm.offences).to be_empty
39
- end
28
+ it 'does not register an offence for methods using self' do
29
+ inspect_source(cop,
30
+ ['module Test',
31
+ ' def self.some_method',
32
+ ' do_something',
33
+ ' end',
34
+ 'end'])
35
+ expect(cop.offences).to be_empty
36
+ end
40
37
 
41
- it 'does not register an offence outside class/module bodies' do
42
- inspect_source(cm,
43
- ['def self.some_method',
44
- ' do_something',
45
- 'end'])
46
- expect(cm.offences).to be_empty
47
- end
48
- end
49
- end
38
+ it 'does not register an offence outside class/module bodies' do
39
+ inspect_source(cop,
40
+ ['def self.some_method',
41
+ ' do_something',
42
+ 'end'])
43
+ expect(cop.offences).to be_empty
50
44
  end
51
45
  end
@@ -2,24 +2,18 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe ClassVars do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::ClassVars do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for class variable declaration' do
12
- inspect_source(cop, ['class TestClass; @@test = 10; end'])
13
- expect(cop.offences.size).to eq(1)
14
- expect(cop.messages)
15
- .to eq(['Replace class var @@test with a class instance var.'])
16
- end
8
+ it 'registers an offence for class variable declaration' do
9
+ inspect_source(cop, ['class TestClass; @@test = 10; end'])
10
+ expect(cop.offences.size).to eq(1)
11
+ expect(cop.messages)
12
+ .to eq(['Replace class var @@test with a class instance var.'])
13
+ end
17
14
 
18
- it 'does not register an offence for class variable usage' do
19
- inspect_source(cop, ['@@test.test(20)'])
20
- expect(cop.offences).to be_empty
21
- end
22
- end
23
- end
15
+ it 'does not register an offence for class variable usage' do
16
+ inspect_source(cop, ['@@test.test(20)'])
17
+ expect(cop.offences).to be_empty
24
18
  end
25
19
  end
@@ -2,53 +2,47 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe CollectionMethods, :config do
9
- cop_config = {
10
- 'PreferredMethods' => {
11
- 'collect' => 'map',
12
- 'inject' => 'reduce',
13
- 'detect' => 'find',
14
- 'find_all' => 'select'
15
- }
16
- }
17
-
18
- subject(:cop) { CollectionMethods.new(config) }
19
- let(:cop_config) { cop_config }
20
-
21
- cop_config['PreferredMethods'].each do |method, preferred_method|
22
- it "registers an offence for #{method} with block" do
23
- inspect_source(cop, ["[1, 2, 3].#{method} { |e| e + 1 }"])
24
- expect(cop.offences.size).to eq(1)
25
- expect(cop.messages)
26
- .to eq(["Prefer #{preferred_method} over #{method}."])
27
- end
28
-
29
- it "registers an offence for #{method} with proc param" do
30
- inspect_source(cop, ["[1, 2, 3].#{method}(&:test)"])
31
- expect(cop.offences.size).to eq(1)
32
- expect(cop.messages)
33
- .to eq(["Prefer #{preferred_method} over #{method}."])
34
- end
35
-
36
- it "accepts #{method} with more than 1 param" do
37
- inspect_source(cop, ["[1, 2, 3].#{method}(other, &:test)"])
38
- expect(cop.offences).to be_empty
39
- end
40
-
41
- it "accepts #{method} without a block" do
42
- inspect_source(cop, ["[1, 2, 3].#{method}"])
43
- expect(cop.offences).to be_empty
44
- end
45
-
46
- it 'auto-corrects to preferred method' do
47
- new_source = autocorrect_source(cop, 'some.collect(&:test)')
48
- expect(new_source).to eq('some.map(&:test)')
49
- end
50
- end
51
- end
5
+ describe Rubocop::Cop::Style::CollectionMethods, :config do
6
+ cop_config = {
7
+ 'PreferredMethods' => {
8
+ 'collect' => 'map',
9
+ 'inject' => 'reduce',
10
+ 'detect' => 'find',
11
+ 'find_all' => 'select'
12
+ }
13
+ }
14
+
15
+ subject(:cop) { described_class.new(config) }
16
+ let(:cop_config) { cop_config }
17
+
18
+ cop_config['PreferredMethods'].each do |method, preferred_method|
19
+ it "registers an offence for #{method} with block" do
20
+ inspect_source(cop, ["[1, 2, 3].#{method} { |e| e + 1 }"])
21
+ expect(cop.offences.size).to eq(1)
22
+ expect(cop.messages)
23
+ .to eq(["Prefer #{preferred_method} over #{method}."])
24
+ end
25
+
26
+ it "registers an offence for #{method} with proc param" do
27
+ inspect_source(cop, ["[1, 2, 3].#{method}(&:test)"])
28
+ expect(cop.offences.size).to eq(1)
29
+ expect(cop.messages)
30
+ .to eq(["Prefer #{preferred_method} over #{method}."])
31
+ end
32
+
33
+ it "accepts #{method} with more than 1 param" do
34
+ inspect_source(cop, ["[1, 2, 3].#{method}(other, &:test)"])
35
+ expect(cop.offences).to be_empty
36
+ end
37
+
38
+ it "accepts #{method} without a block" do
39
+ inspect_source(cop, ["[1, 2, 3].#{method}"])
40
+ expect(cop.offences).to be_empty
41
+ end
42
+
43
+ it 'auto-corrects to preferred method' do
44
+ new_source = autocorrect_source(cop, 'some.collect(&:test)')
45
+ expect(new_source).to eq('some.map(&:test)')
52
46
  end
53
47
  end
54
48
  end
@@ -2,65 +2,59 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe ColonMethodCall do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::ColonMethodCall do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for instance method call' do
12
- inspect_source(cop,
13
- ['test::method_name'])
14
- expect(cop.offences.size).to eq(1)
15
- end
8
+ it 'registers an offence for instance method call' do
9
+ inspect_source(cop,
10
+ ['test::method_name'])
11
+ expect(cop.offences.size).to eq(1)
12
+ end
16
13
 
17
- it 'registers an offence for instance method call with arg' do
18
- inspect_source(cop,
19
- ['test::method_name(arg)'])
20
- expect(cop.offences.size).to eq(1)
21
- end
14
+ it 'registers an offence for instance method call with arg' do
15
+ inspect_source(cop,
16
+ ['test::method_name(arg)'])
17
+ expect(cop.offences.size).to eq(1)
18
+ end
22
19
 
23
- it 'registers an offence for class method call' do
24
- inspect_source(cop,
25
- ['Class::method_name'])
26
- expect(cop.offences.size).to eq(1)
27
- end
20
+ it 'registers an offence for class method call' do
21
+ inspect_source(cop,
22
+ ['Class::method_name'])
23
+ expect(cop.offences.size).to eq(1)
24
+ end
28
25
 
29
- it 'registers an offence for class method call with arg' do
30
- inspect_source(cop,
31
- ['Class::method_name(arg, arg2)'])
32
- expect(cop.offences.size).to eq(1)
33
- end
26
+ it 'registers an offence for class method call with arg' do
27
+ inspect_source(cop,
28
+ ['Class::method_name(arg, arg2)'])
29
+ expect(cop.offences.size).to eq(1)
30
+ end
34
31
 
35
- it 'does not register an offence for constant access' do
36
- inspect_source(cop,
37
- ['Tip::Top::SOME_CONST'])
38
- expect(cop.offences).to be_empty
39
- end
32
+ it 'does not register an offence for constant access' do
33
+ inspect_source(cop,
34
+ ['Tip::Top::SOME_CONST'])
35
+ expect(cop.offences).to be_empty
36
+ end
40
37
 
41
- it 'does not register an offence for nested class' do
42
- inspect_source(cop,
43
- ['Tip::Top.some_method'])
44
- expect(cop.offences).to be_empty
45
- end
38
+ it 'does not register an offence for nested class' do
39
+ inspect_source(cop,
40
+ ['Tip::Top.some_method'])
41
+ expect(cop.offences).to be_empty
42
+ end
46
43
 
47
- it 'does not register an offence for op methods' do
48
- inspect_source(cop,
49
- ['Tip::Top.some_method[3]'])
50
- expect(cop.offences).to be_empty
51
- end
44
+ it 'does not register an offence for op methods' do
45
+ inspect_source(cop,
46
+ ['Tip::Top.some_method[3]'])
47
+ expect(cop.offences).to be_empty
48
+ end
52
49
 
53
- it 'does not register an offence when for constructor methods' do
54
- inspect_source(cop,
55
- ['Tip::Top(some_arg)'])
56
- expect(cop.offences).to be_empty
57
- end
50
+ it 'does not register an offence when for constructor methods' do
51
+ inspect_source(cop,
52
+ ['Tip::Top(some_arg)'])
53
+ expect(cop.offences).to be_empty
54
+ end
58
55
 
59
- it 'auto-corrects "::" with "."' do
60
- new_source = autocorrect_source(cop, 'test::method')
61
- expect(new_source).to eq('test.method')
62
- end
63
- end
64
- end
56
+ it 'auto-corrects "::" with "."' do
57
+ new_source = autocorrect_source(cop, 'test::method')
58
+ expect(new_source).to eq('test.method')
65
59
  end
66
60
  end
@@ -2,91 +2,85 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe CommentAnnotation, :config do
9
- subject(:cop) { CommentAnnotation.new(config) }
10
- let(:cop_config) do
11
- { 'Keywords' => %w(TODO FIXME OPTIMIZE HACK REVIEW) }
12
- end
13
-
14
- it 'registers an offence for a missing colon' do
15
- inspect_source(cop, ['# TODO make better'])
16
- expect(cop.offences.size).to eq(1)
17
- end
18
-
19
- context 'with configured keyword' do
20
- let(:cop_config) { { 'Keywords' => %w(ISSUE) } }
21
-
22
- it 'registers an offence for a missing colon after the word' do
23
- inspect_source(cop, ['# ISSUE wrong order'])
24
- expect(cop.offences.size).to eq(1)
25
- end
26
- end
27
-
28
- context 'when used with the clang formatter' do
29
- let(:formatter) { Formatter::ClangStyleFormatter.new(output) }
30
- let(:output) { StringIO.new }
31
-
32
- it 'marks the annotation keyword' do
33
- inspect_source(cop, ['# TODO:make better'])
34
- formatter.report_file('t', cop.offences)
35
- expect(output.string).to eq(["t:1:3: C: #{CommentAnnotation::MSG}",
36
- '# TODO:make better',
37
- ' ^^^^^',
38
- ''].join("\n"))
39
- end
40
- end
41
-
42
- it 'registers an offence for lower case' do
43
- inspect_source(cop, ['# fixme: does not work'])
44
- expect(cop.offences.size).to eq(1)
45
- end
46
-
47
- it 'registers an offence for capitalized annotation keyword' do
48
- inspect_source(cop, ['# Optimize: does not work'])
49
- expect(cop.offences.size).to eq(1)
50
- end
51
-
52
- it 'registers an offence for upper case with colon but no note' do
53
- inspect_source(cop, ['# HACK:'])
54
- expect(cop.offences.size).to eq(1)
55
- end
56
-
57
- it 'accepts upper case keyword with colon, space and note' do
58
- inspect_source(cop, ['# REVIEW: not sure about this'])
59
- expect(cop.offences).to be_empty
60
- end
61
-
62
- it 'accepts upper case keyword alone' do
63
- inspect_source(cop, ['# OPTIMIZE'])
64
- expect(cop.offences).to be_empty
65
- end
66
-
67
- it 'accepts a comment that is obviously a code example' do
68
- inspect_source(cop, ['# Todo.destroy(1)'])
69
- expect(cop.offences).to be_empty
70
- end
71
-
72
- it 'accepts a keyword that is just the beginning of a sentence' do
73
- inspect_source(cop,
74
- ["# Optimize if you want. I wouldn't recommend it.",
75
- '# Hack is a fun game.'])
76
- expect(cop.offences).to be_empty
77
- end
78
-
79
- context 'when a keyword is not in the configuration' do
80
- let(:cop_config) do
81
- { 'Keywords' => %w(FIXME OPTIMIZE HACK REVIEW) }
82
- end
83
-
84
- it 'accepts the word without colon' do
85
- inspect_source(cop, ['# TODO make better'])
86
- expect(cop.offences).to be_empty
87
- end
88
- end
89
- end
5
+ describe Rubocop::Cop::Style::CommentAnnotation, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) do
8
+ { 'Keywords' => %w(TODO FIXME OPTIMIZE HACK REVIEW) }
9
+ end
10
+
11
+ it 'registers an offence for a missing colon' do
12
+ inspect_source(cop, ['# TODO make better'])
13
+ expect(cop.offences.size).to eq(1)
14
+ end
15
+
16
+ context 'with configured keyword' do
17
+ let(:cop_config) { { 'Keywords' => %w(ISSUE) } }
18
+
19
+ it 'registers an offence for a missing colon after the word' do
20
+ inspect_source(cop, ['# ISSUE wrong order'])
21
+ expect(cop.offences.size).to eq(1)
22
+ end
23
+ end
24
+
25
+ context 'when used with the clang formatter' do
26
+ let(:formatter) { Rubocop::Formatter::ClangStyleFormatter.new(output) }
27
+ let(:output) { StringIO.new }
28
+
29
+ it 'marks the annotation keyword' do
30
+ inspect_source(cop, ['# TODO:make better'])
31
+ formatter.report_file('t', cop.offences)
32
+ expect(output.string).to eq(["t:1:3: C: #{described_class::MSG}",
33
+ '# TODO:make better',
34
+ ' ^^^^^',
35
+ ''].join("\n"))
36
+ end
37
+ end
38
+
39
+ it 'registers an offence for lower case' do
40
+ inspect_source(cop, ['# fixme: does not work'])
41
+ expect(cop.offences.size).to eq(1)
42
+ end
43
+
44
+ it 'registers an offence for capitalized annotation keyword' do
45
+ inspect_source(cop, ['# Optimize: does not work'])
46
+ expect(cop.offences.size).to eq(1)
47
+ end
48
+
49
+ it 'registers an offence for upper case with colon but no note' do
50
+ inspect_source(cop, ['# HACK:'])
51
+ expect(cop.offences.size).to eq(1)
52
+ end
53
+
54
+ it 'accepts upper case keyword with colon, space and note' do
55
+ inspect_source(cop, ['# REVIEW: not sure about this'])
56
+ expect(cop.offences).to be_empty
57
+ end
58
+
59
+ it 'accepts upper case keyword alone' do
60
+ inspect_source(cop, ['# OPTIMIZE'])
61
+ expect(cop.offences).to be_empty
62
+ end
63
+
64
+ it 'accepts a comment that is obviously a code example' do
65
+ inspect_source(cop, ['# Todo.destroy(1)'])
66
+ expect(cop.offences).to be_empty
67
+ end
68
+
69
+ it 'accepts a keyword that is just the beginning of a sentence' do
70
+ inspect_source(cop,
71
+ ["# Optimize if you want. I wouldn't recommend it.",
72
+ '# Hack is a fun game.'])
73
+ expect(cop.offences).to be_empty
74
+ end
75
+
76
+ context 'when a keyword is not in the configuration' do
77
+ let(:cop_config) do
78
+ { 'Keywords' => %w(FIXME OPTIMIZE HACK REVIEW) }
79
+ end
80
+
81
+ it 'accepts the word without colon' do
82
+ inspect_source(cop, ['# TODO make better'])
83
+ expect(cop.offences).to be_empty
90
84
  end
91
85
  end
92
86
  end