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
@@ -2,22 +2,16 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe Tab do
9
- subject(:tab) { Tab.new }
5
+ describe Rubocop::Cop::Style::Tab do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for a line indented with tab' do
12
- inspect_source(tab, ["\tx = 0"])
13
- expect(tab.offences.size).to eq(1)
14
- end
8
+ it 'registers an offence for a line indented with tab' do
9
+ inspect_source(cop, ["\tx = 0"])
10
+ expect(cop.offences.size).to eq(1)
11
+ end
15
12
 
16
- it 'accepts a line with tab in a string' do
17
- inspect_source(tab, ["(x = \"\t\")"])
18
- expect(tab.offences).to be_empty
19
- end
20
- end
21
- end
13
+ it 'accepts a line with tab in a string' do
14
+ inspect_source(cop, ["(x = \"\t\")"])
15
+ expect(cop.offences).to be_empty
22
16
  end
23
17
  end
@@ -2,41 +2,35 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe MultilineTernaryOperator do
9
- subject(:op) { MultilineTernaryOperator.new }
5
+ describe Rubocop::Cop::Style::MultilineTernaryOperator do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers offence for a multiline ternary operator expression' do
12
- inspect_source(op, ['a = cond ?',
13
- ' b : c'])
14
- expect(op.offences.size).to eq(1)
15
- end
8
+ it 'registers offence for a multiline ternary operator expression' do
9
+ inspect_source(cop, ['a = cond ?',
10
+ ' b : c'])
11
+ expect(cop.offences.size).to eq(1)
12
+ end
16
13
 
17
- it 'accepts a single line ternary operator expression' do
18
- inspect_source(op, ['a = cond ? b : c'])
19
- expect(op.offences).to be_empty
20
- end
21
- end
14
+ it 'accepts a single line ternary operator expression' do
15
+ inspect_source(cop, ['a = cond ? b : c'])
16
+ expect(cop.offences).to be_empty
17
+ end
18
+ end
22
19
 
23
- describe NestedTernaryOperator do
24
- subject(:op) { NestedTernaryOperator.new }
20
+ describe Rubocop::Cop::Style::NestedTernaryOperator do
21
+ subject(:cop) { described_class.new }
25
22
 
26
- it 'registers an offence for a nested ternary operator expression' do
27
- inspect_source(op, ['a ? (b ? b1 : b2) : a2'])
28
- expect(op.offences.size).to eq(1)
29
- end
23
+ it 'registers an offence for a nested ternary operator expression' do
24
+ inspect_source(cop, ['a ? (b ? b1 : b2) : a2'])
25
+ expect(cop.offences.size).to eq(1)
26
+ end
30
27
 
31
- it 'accepts a non-nested ternary operator within an if' do
32
- inspect_source(op, ['a = if x',
33
- ' cond ? b : c',
34
- 'else',
35
- ' d',
36
- 'end'])
37
- expect(op.offences).to be_empty
38
- end
39
- end
40
- end
28
+ it 'accepts a non-nested ternary operator within an if' do
29
+ inspect_source(cop, ['a = if x',
30
+ ' cond ? b : c',
31
+ 'else',
32
+ ' d',
33
+ 'end'])
34
+ expect(cop.offences).to be_empty
41
35
  end
42
36
  end
@@ -2,23 +2,17 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe TrailingBlankLines do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::TrailingBlankLines do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'accepts final newline' do
12
- inspect_source(cop, ['x = 0', ''])
13
- expect(cop.offences).to be_empty
14
- end
8
+ it 'accepts final newline' do
9
+ inspect_source(cop, ['x = 0', ''])
10
+ expect(cop.offences).to be_empty
11
+ end
15
12
 
16
- it 'registers an offence for multiple trailing blank lines' do
17
- inspect_source(cop, ['x = 0', '', '', '', ''])
18
- expect(cop.offences.size).to eq(1)
19
- expect(cop.messages).to eq(['3 trailing blank lines detected.'])
20
- end
21
- end
22
- end
13
+ it 'registers an offence for multiple trailing blank lines' do
14
+ inspect_source(cop, ['x = 0', '', '', '', ''])
15
+ expect(cop.offences.size).to eq(1)
16
+ expect(cop.messages).to eq(['3 trailing blank lines detected.'])
23
17
  end
24
18
  end
@@ -2,28 +2,22 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe TrailingWhitespace do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::TrailingWhitespace do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for a line ending with space' do
12
- source = ['x = 0 ']
13
- inspect_source(cop, source)
14
- expect(cop.offences.size).to eq(1)
15
- end
8
+ it 'registers an offence for a line ending with space' do
9
+ source = ['x = 0 ']
10
+ inspect_source(cop, source)
11
+ expect(cop.offences.size).to eq(1)
12
+ end
16
13
 
17
- it 'registers an offence for a line ending with tab' do
18
- inspect_source(cop, ["x = 0\t"])
19
- expect(cop.offences.size).to eq(1)
20
- end
14
+ it 'registers an offence for a line ending with tab' do
15
+ inspect_source(cop, ["x = 0\t"])
16
+ expect(cop.offences.size).to eq(1)
17
+ end
21
18
 
22
- it 'accepts a line without trailing whitespace' do
23
- inspect_source(cop, ["x = 0\n"])
24
- expect(cop.offences).to be_empty
25
- end
26
- end
27
- end
19
+ it 'accepts a line without trailing whitespace' do
20
+ inspect_source(cop, ["x = 0\n"])
21
+ expect(cop.offences).to be_empty
28
22
  end
29
23
  end
@@ -2,412 +2,406 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe TrivialAccessors, :config do
9
- subject(:cop) { described_class.new(config) }
10
- let(:cop_config) { {} }
5
+ describe Rubocop::Cop::Style::TrivialAccessors, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) { {} }
11
8
 
12
- it 'finds trivial reader' do
13
- inspect_source(cop,
14
- ['def foo',
15
- ' @foo',
16
- 'end',
17
- '',
18
- 'def Foo',
19
- ' @Foo',
20
- 'end'])
21
- expect(cop.offences.size).to eq(2)
22
- expect(cop.offences
23
- .map(&:line).sort).to eq([1, 5])
24
- end
9
+ it 'finds trivial reader' do
10
+ inspect_source(cop,
11
+ ['def foo',
12
+ ' @foo',
13
+ 'end',
14
+ '',
15
+ 'def Foo',
16
+ ' @Foo',
17
+ 'end'])
18
+ expect(cop.offences.size).to eq(2)
19
+ expect(cop.offences
20
+ .map(&:line).sort).to eq([1, 5])
21
+ end
25
22
 
26
- it 'finds trivial reader in a class' do
27
- inspect_source(cop,
28
- ['class TrivialFoo',
29
- ' def foo',
30
- ' @foo',
31
- ' end',
32
- ' def bar',
33
- ' !foo',
34
- ' end',
35
- 'end'])
36
- expect(cop.offences.size).to eq(1)
37
- expect(cop.offences
38
- .map(&:line).sort).to eq([2])
39
- end
23
+ it 'finds trivial reader in a class' do
24
+ inspect_source(cop,
25
+ ['class TrivialFoo',
26
+ ' def foo',
27
+ ' @foo',
28
+ ' end',
29
+ ' def bar',
30
+ ' !foo',
31
+ ' end',
32
+ 'end'])
33
+ expect(cop.offences.size).to eq(1)
34
+ expect(cop.offences
35
+ .map(&:line).sort).to eq([2])
36
+ end
40
37
 
41
- it 'finds trivial reader in a class method' do
42
- inspect_source(cop,
43
- ['class TrivialFoo',
44
- ' def self.foo',
45
- ' @foo',
46
- ' end',
47
- ' def bar',
48
- ' !foo',
49
- ' end',
50
- 'end'])
51
- expect(cop.offences.size).to eq(1)
52
- expect(cop.offences
53
- .map(&:line).sort).to eq([2])
54
- end
38
+ it 'finds trivial reader in a class method' do
39
+ inspect_source(cop,
40
+ ['class TrivialFoo',
41
+ ' def self.foo',
42
+ ' @foo',
43
+ ' end',
44
+ ' def bar',
45
+ ' !foo',
46
+ ' end',
47
+ 'end'])
48
+ expect(cop.offences.size).to eq(1)
49
+ expect(cop.offences
50
+ .map(&:line).sort).to eq([2])
51
+ end
55
52
 
56
- it 'finds trivial reader in a nested class' do
57
- inspect_source(cop,
58
- ['class TrivialFoo',
59
- ' class Nested',
60
- ' def foo',
61
- ' @foo',
62
- ' end',
63
- ' end',
64
- 'end'])
65
- expect(cop.offences.size).to eq(1)
66
- expect(cop.offences
67
- .map(&:line).sort).to eq([3])
68
- end
53
+ it 'finds trivial reader in a nested class' do
54
+ inspect_source(cop,
55
+ ['class TrivialFoo',
56
+ ' class Nested',
57
+ ' def foo',
58
+ ' @foo',
59
+ ' end',
60
+ ' end',
61
+ 'end'])
62
+ expect(cop.offences.size).to eq(1)
63
+ expect(cop.offences
64
+ .map(&:line).sort).to eq([3])
65
+ end
69
66
 
70
- it 'finds trivial readers in a little less trivial class' do
71
- inspect_source(cop,
72
- ['class TrivialFoo',
73
- ' def foo',
74
- ' @foo',
75
- ' end',
76
- ' def foo_and_bar',
77
- ' @foo_bar = @foo + @bar',
78
- ' end',
79
- ' def foo_bar',
80
- ' @foo_bar',
81
- ' end',
82
- ' def foo?',
83
- ' foo.present?',
84
- ' end',
85
- ' def bar?',
86
- ' !bar',
87
- ' end',
88
- ' def foobar',
89
- ' foo? ? foo.value : "bar"',
90
- ' end',
91
- ' def bar',
92
- ' foo.bar',
93
- ' end',
94
- ' def foo_required?',
95
- ' super && !bar_required?',
96
- ' end',
97
- ' def self.from_omniauth(auth)',
98
- ' foobars.each do |f|',
99
- ' # do stuff',
100
- ' end',
101
- ' end',
102
- ' def regex',
103
- ' %r{\A#{visit node}\Z}',
104
- ' end',
105
- ' def array',
106
- ' [foo, bar].join',
107
- ' end',
108
- ' def string',
109
- ' "string"',
110
- ' end',
111
- ' def class',
112
- ' Foo.class',
113
- ' end',
114
- ' def with_return',
115
- ' return foo',
116
- ' end',
117
- ' def captures',
118
- ' (length - 1).times.map { |i| self[i + 1] }',
119
- ' end',
120
- ' def foo val',
121
- ' super',
122
- ' @val',
123
- ' end',
124
- 'end'])
125
- expect(cop.offences.size).to eq(2)
126
- expect(cop.offences
127
- .map(&:line).sort).to eq([2, 8])
128
- end
67
+ it 'finds trivial readers in a little less trivial class' do
68
+ inspect_source(cop,
69
+ ['class TrivialFoo',
70
+ ' def foo',
71
+ ' @foo',
72
+ ' end',
73
+ ' def foo_and_bar',
74
+ ' @foo_bar = @foo + @bar',
75
+ ' end',
76
+ ' def foo_bar',
77
+ ' @foo_bar',
78
+ ' end',
79
+ ' def foo?',
80
+ ' foo.present?',
81
+ ' end',
82
+ ' def bar?',
83
+ ' !bar',
84
+ ' end',
85
+ ' def foobar',
86
+ ' foo? ? foo.value : "bar"',
87
+ ' end',
88
+ ' def bar',
89
+ ' foo.bar',
90
+ ' end',
91
+ ' def foo_required?',
92
+ ' super && !bar_required?',
93
+ ' end',
94
+ ' def self.from_omniauth(auth)',
95
+ ' foobars.each do |f|',
96
+ ' # do stuff',
97
+ ' end',
98
+ ' end',
99
+ ' def regex',
100
+ ' %r{\A#{visit node}\Z}',
101
+ ' end',
102
+ ' def array',
103
+ ' [foo, bar].join',
104
+ ' end',
105
+ ' def string',
106
+ ' "string"',
107
+ ' end',
108
+ ' def class',
109
+ ' Foo.class',
110
+ ' end',
111
+ ' def with_return',
112
+ ' return foo',
113
+ ' end',
114
+ ' def captures',
115
+ ' (length - 1).times.map { |i| self[i + 1] }',
116
+ ' end',
117
+ ' def foo val',
118
+ ' super',
119
+ ' @val',
120
+ ' end',
121
+ 'end'])
122
+ expect(cop.offences.size).to eq(2)
123
+ expect(cop.offences
124
+ .map(&:line).sort).to eq([2, 8])
125
+ end
129
126
 
130
- it 'finds trivial reader with braces' do
131
- inspect_source(cop,
132
- ['class Test',
133
- ' # trivial reader with braces',
134
- ' def name()',
135
- ' @name',
136
- ' end',
137
- 'end'])
138
- expect(cop.offences.size).to eq(1)
139
- expect(cop.offences
140
- .map(&:line).sort).to eq([3])
141
- end
127
+ it 'finds trivial reader with braces' do
128
+ inspect_source(cop,
129
+ ['class Test',
130
+ ' # trivial reader with braces',
131
+ ' def name()',
132
+ ' @name',
133
+ ' end',
134
+ 'end'])
135
+ expect(cop.offences.size).to eq(1)
136
+ expect(cop.offences
137
+ .map(&:line).sort).to eq([3])
138
+ end
142
139
 
143
- it 'finds trivial writer without braces' do
144
- inspect_source(cop,
145
- ['class Test',
146
- ' # trivial writer without braces',
147
- ' def name= name',
148
- ' @name = name',
149
- ' end',
150
- 'end'])
151
- expect(cop.offences.size).to eq(1)
152
- expect(cop.offences
153
- .map(&:line).sort).to eq([3])
154
- end
140
+ it 'finds trivial writer without braces' do
141
+ inspect_source(cop,
142
+ ['class Test',
143
+ ' # trivial writer without braces',
144
+ ' def name= name',
145
+ ' @name = name',
146
+ ' end',
147
+ 'end'])
148
+ expect(cop.offences.size).to eq(1)
149
+ expect(cop.offences
150
+ .map(&:line).sort).to eq([3])
151
+ end
155
152
 
156
- it 'does not find trivial writer with function calls' do
157
- inspect_source(cop,
158
- ['class TrivialTest',
159
- ' def test=(val)',
160
- ' @test = val',
161
- ' some_function_call',
162
- ' or_more_of_them',
163
- ' end',
164
- 'end'])
165
- expect(cop.offences).to be_empty
166
- end
153
+ it 'does not find trivial writer with function calls' do
154
+ inspect_source(cop,
155
+ ['class TrivialTest',
156
+ ' def test=(val)',
157
+ ' @test = val',
158
+ ' some_function_call',
159
+ ' or_more_of_them',
160
+ ' end',
161
+ 'end'])
162
+ expect(cop.offences).to be_empty
163
+ end
167
164
 
168
- it 'finds trivials with less peculiar methods' do
169
- inspect_source(cop,
170
- ['class NilStats',
171
- 'def most_traded_pair',
172
- 'end',
173
- 'def win_ratio',
174
- 'end',
175
- 'def win_ratio_percentage()',
176
- 'end',
177
- 'def pips_won',
178
- ' 0.0',
179
- 'end',
180
- 'def gain_at(date)',
181
- ' 1',
182
- 'end',
183
- 'def gain_percentage',
184
- ' 0',
185
- 'end',
186
- 'def gain_breakdown(options = {})',
187
- ' []',
188
- 'end',
189
- 'def copy_to_all_ratio',
190
- ' nil',
191
- 'end',
192
- 'def trade_population',
193
- ' {}',
194
- 'end',
195
- 'def average_leverage',
196
- ' 1',
197
- 'end',
198
- 'def with_yield',
199
- ' yield',
200
- 'rescue Error => e',
201
- ' #do stuff',
202
- 'end',
203
- 'end'])
204
- expect(cop.offences).to be_empty
205
- end
165
+ it 'finds trivials with less peculiar methods' do
166
+ inspect_source(cop,
167
+ ['class NilStats',
168
+ 'def most_traded_pair',
169
+ 'end',
170
+ 'def win_ratio',
171
+ 'end',
172
+ 'def win_ratio_percentage()',
173
+ 'end',
174
+ 'def pips_won',
175
+ ' 0.0',
176
+ 'end',
177
+ 'def gain_at(date)',
178
+ ' 1',
179
+ 'end',
180
+ 'def gain_percentage',
181
+ ' 0',
182
+ 'end',
183
+ 'def gain_breakdown(options = {})',
184
+ ' []',
185
+ 'end',
186
+ 'def copy_to_all_ratio',
187
+ ' nil',
188
+ 'end',
189
+ 'def trade_population',
190
+ ' {}',
191
+ 'end',
192
+ 'def average_leverage',
193
+ ' 1',
194
+ 'end',
195
+ 'def with_yield',
196
+ ' yield',
197
+ 'rescue Error => e',
198
+ ' #do stuff',
199
+ 'end',
200
+ 'end'])
201
+ expect(cop.offences).to be_empty
202
+ end
206
203
 
207
- it 'finds oneliner trivials' do
208
- inspect_source(cop,
209
- ['class Oneliner',
210
- ' def foo; @foo; end',
211
- ' def foo= foo; @foo = foo; end',
212
- 'end'])
213
- expect(cop.offences.size).to eq(2)
214
- expect(cop.offences
215
- .map(&:line).sort).to eq([2, 3])
216
- end
204
+ it 'finds oneliner trivials' do
205
+ inspect_source(cop,
206
+ ['class Oneliner',
207
+ ' def foo; @foo; end',
208
+ ' def foo= foo; @foo = foo; end',
209
+ 'end'])
210
+ expect(cop.offences.size).to eq(2)
211
+ expect(cop.offences
212
+ .map(&:line).sort).to eq([2, 3])
213
+ end
217
214
 
218
- it 'does not find a trivial reader' do
219
- inspect_source(cop,
220
- ['def bar',
221
- ' @bar + foo',
222
- 'end'])
223
- expect(cop.offences).to be_empty
224
- end
215
+ it 'does not find a trivial reader' do
216
+ inspect_source(cop,
217
+ ['def bar',
218
+ ' @bar + foo',
219
+ 'end'])
220
+ expect(cop.offences).to be_empty
221
+ end
225
222
 
226
- it 'finds trivial writer' do
227
- inspect_source(cop,
228
- ['def foo=(val)',
229
- ' @foo = val',
230
- 'end'])
231
- expect(cop.offences.size).to eq(1)
232
- expect(cop.offences
233
- .map(&:line).sort).to eq([1])
234
- end
223
+ it 'finds trivial writer' do
224
+ inspect_source(cop,
225
+ ['def foo=(val)',
226
+ ' @foo = val',
227
+ 'end'])
228
+ expect(cop.offences.size).to eq(1)
229
+ expect(cop.offences
230
+ .map(&:line).sort).to eq([1])
231
+ end
235
232
 
236
- it 'finds trivial writer in a class' do
237
- inspect_source(cop,
238
- ['class TrivialFoo',
239
- ' def foo=(val)',
240
- ' @foo = val',
241
- ' end',
242
- ' def void(no_value)',
243
- ' end',
244
- ' def inspect(sexp)',
245
- ' each(:def, sexp) do |item|',
246
- ' #do stuff',
247
- ' end',
248
- ' end',
249
- ' def if_method(foo)',
250
- ' if true',
251
- ' unless false',
252
- ' #do stuff',
253
- ' end',
254
- ' end',
255
- ' end',
256
- 'end'])
257
- expect(cop.offences.size).to eq(1)
258
- expect(cop.offences
259
- .map(&:line).sort).to eq([2])
260
- end
233
+ it 'finds trivial writer in a class' do
234
+ inspect_source(cop,
235
+ ['class TrivialFoo',
236
+ ' def foo=(val)',
237
+ ' @foo = val',
238
+ ' end',
239
+ ' def void(no_value)',
240
+ ' end',
241
+ ' def inspect(sexp)',
242
+ ' each(:def, sexp) do |item|',
243
+ ' #do stuff',
244
+ ' end',
245
+ ' end',
246
+ ' def if_method(foo)',
247
+ ' if true',
248
+ ' unless false',
249
+ ' #do stuff',
250
+ ' end',
251
+ ' end',
252
+ ' end',
253
+ 'end'])
254
+ expect(cop.offences.size).to eq(1)
255
+ expect(cop.offences
256
+ .map(&:line).sort).to eq([2])
257
+ end
261
258
 
262
- it 'finds trivial accessors in a little less trivial class' do
263
- inspect_source(cop,
264
- ['class TrivialFoo',
265
- ' def foo',
266
- ' @foo',
267
- ' end',
268
- ' def foo_and_bar',
269
- ' @foo_bar = @foo + @bar',
270
- ' end',
271
- ' def foo_bar',
272
- ' @foo_bar',
273
- ' end',
274
- ' def bar=(bar_value)',
275
- ' @bar = bar_value',
276
- ' end',
277
- 'end'])
278
- expect(cop.offences.size).to eq(3)
279
- expect(cop.offences
280
- .map(&:line).sort).to eq([2, 8, 11])
281
- end
259
+ it 'finds trivial accessors in a little less trivial class' do
260
+ inspect_source(cop,
261
+ ['class TrivialFoo',
262
+ ' def foo',
263
+ ' @foo',
264
+ ' end',
265
+ ' def foo_and_bar',
266
+ ' @foo_bar = @foo + @bar',
267
+ ' end',
268
+ ' def foo_bar',
269
+ ' @foo_bar',
270
+ ' end',
271
+ ' def bar=(bar_value)',
272
+ ' @bar = bar_value',
273
+ ' end',
274
+ 'end'])
275
+ expect(cop.offences.size).to eq(3)
276
+ expect(cop.offences
277
+ .map(&:line).sort).to eq([2, 8, 11])
278
+ end
282
279
 
283
- it 'does not find a trivial writer' do
284
- inspect_source(cop,
285
- ['def bar=(value)',
286
- ' @bar = value + 42',
287
- 'end'])
288
- expect(cop.offences).to be_empty
289
- end
280
+ it 'does not find a trivial writer' do
281
+ inspect_source(cop,
282
+ ['def bar=(value)',
283
+ ' @bar = value + 42',
284
+ 'end'])
285
+ expect(cop.offences).to be_empty
286
+ end
290
287
 
291
- it 'finds trivial writers in a little less trivial class' do
292
- inspect_source(cop,
293
- ['class TrivialFoo',
294
- ' def foo_bar=(foo, bar)',
295
- ' @foo_bar = foo + bar',
296
- ' end',
297
- ' def universal=(answer=42)',
298
- ' @universal = answer',
299
- ' end',
300
- ' def bar=(bar_value)',
301
- ' @bar = bar_value',
302
- ' end',
303
- 'end'])
304
- expect(cop.offences.size).to eq(2)
305
- expect(cop.offences
306
- .map(&:line).sort).to eq([5, 8])
307
- end
288
+ it 'finds trivial writers in a little less trivial class' do
289
+ inspect_source(cop,
290
+ ['class TrivialFoo',
291
+ ' def foo_bar=(foo, bar)',
292
+ ' @foo_bar = foo + bar',
293
+ ' end',
294
+ ' def universal=(answer=42)',
295
+ ' @universal = answer',
296
+ ' end',
297
+ ' def bar=(bar_value)',
298
+ ' @bar = bar_value',
299
+ ' end',
300
+ 'end'])
301
+ expect(cop.offences.size).to eq(2)
302
+ expect(cop.offences
303
+ .map(&:line).sort).to eq([5, 8])
304
+ end
308
305
 
309
- it 'does not find trivial accessors with method calls' do
310
- inspect_source(cop,
311
- ['class TrivialFoo',
312
- ' def foo_bar(foo)',
313
- ' foo_bar = foo + 42',
314
- ' end',
315
- ' def foo(value)',
316
- ' foo = []',
317
- ' # do stuff',
318
- ' foo',
319
- ' end',
320
- ' def bar',
321
- ' foo_method',
322
- ' end',
323
- 'end'])
324
- expect(cop.offences).to be_empty
325
- end
306
+ it 'does not find trivial accessors with method calls' do
307
+ inspect_source(cop,
308
+ ['class TrivialFoo',
309
+ ' def foo_bar(foo)',
310
+ ' foo_bar = foo + 42',
311
+ ' end',
312
+ ' def foo(value)',
313
+ ' foo = []',
314
+ ' # do stuff',
315
+ ' foo',
316
+ ' end',
317
+ ' def bar',
318
+ ' foo_method',
319
+ ' end',
320
+ 'end'])
321
+ expect(cop.offences).to be_empty
322
+ end
326
323
 
327
- it 'does not find trivial writer with exceptions' do
328
- inspect_source(cop,
329
- [' def expiration_formatted=(value)',
330
- ' begin',
331
- ' @expiration = foo_stuff',
332
- ' rescue ArgumentError',
333
- ' @expiration = nil',
334
- ' end',
335
- ' self[:expiration] = @expiration',
336
- ' end'])
337
- expect(cop.offences).to be_empty
338
- end
324
+ it 'does not find trivial writer with exceptions' do
325
+ inspect_source(cop,
326
+ [' def expiration_formatted=(value)',
327
+ ' begin',
328
+ ' @expiration = foo_stuff',
329
+ ' rescue ArgumentError',
330
+ ' @expiration = nil',
331
+ ' end',
332
+ ' self[:expiration] = @expiration',
333
+ ' end'])
334
+ expect(cop.offences).to be_empty
335
+ end
339
336
 
340
- it 'accepts an initialize method looking like a writer' do
341
- inspect_source(cop,
342
- [' def initialize(value)',
343
- ' @top = value',
344
- ' end'])
345
- expect(cop.offences).to be_empty
346
- end
337
+ it 'accepts an initialize method looking like a writer' do
338
+ inspect_source(cop,
339
+ [' def initialize(value)',
340
+ ' @top = value',
341
+ ' end'])
342
+ expect(cop.offences).to be_empty
343
+ end
347
344
 
348
- context 'exact name match required' do
349
- let(:cop_config) { { 'ExactNameMatch' => true } }
345
+ context 'exact name match required' do
346
+ let(:cop_config) { { 'ExactNameMatch' => true } }
350
347
 
351
- it 'finds only 1 trivial reader' do
352
- inspect_source(cop,
353
- ['def foo',
354
- ' @foo',
355
- 'end',
356
- '',
357
- 'def bar',
358
- ' @barr',
359
- 'end'])
360
- expect(cop.offences.size).to eq(1)
361
- expect(cop.offences
362
- .map(&:line).sort).to eq([1])
363
- end
348
+ it 'finds only 1 trivial reader' do
349
+ inspect_source(cop,
350
+ ['def foo',
351
+ ' @foo',
352
+ 'end',
353
+ '',
354
+ 'def bar',
355
+ ' @barr',
356
+ 'end'])
357
+ expect(cop.offences.size).to eq(1)
358
+ expect(cop.offences
359
+ .map(&:line).sort).to eq([1])
360
+ end
364
361
 
365
- it 'finds only 1 trivial writer' do
366
- inspect_source(cop,
367
- ['def foo=(foo)',
368
- ' @foo = foo',
369
- 'end',
370
- '',
371
- 'def bar=(bar)',
372
- ' @barr = bar',
373
- 'end'])
374
- expect(cop.offences.size).to eq(1)
375
- expect(cop.offences
376
- .map(&:line).sort).to eq([1])
377
- end
378
- end
362
+ it 'finds only 1 trivial writer' do
363
+ inspect_source(cop,
364
+ ['def foo=(foo)',
365
+ ' @foo = foo',
366
+ 'end',
367
+ '',
368
+ 'def bar=(bar)',
369
+ ' @barr = bar',
370
+ 'end'])
371
+ expect(cop.offences.size).to eq(1)
372
+ expect(cop.offences
373
+ .map(&:line).sort).to eq([1])
374
+ end
375
+ end
379
376
 
380
- context 'with predicates allowed' do
381
- let(:cop_config) { { 'AllowPredicates' => true } }
377
+ context 'with predicates allowed' do
378
+ let(:cop_config) { { 'AllowPredicates' => true } }
382
379
 
383
- it 'ignores accessors ending with a question mark' do
384
- inspect_source(cop,
385
- [' def foo?',
386
- ' @foo',
387
- ' end'])
388
- expect(cop.offences).to be_empty
389
- end
390
- end
380
+ it 'ignores accessors ending with a question mark' do
381
+ inspect_source(cop,
382
+ [' def foo?',
383
+ ' @foo',
384
+ ' end'])
385
+ expect(cop.offences).to be_empty
386
+ end
387
+ end
391
388
 
392
- context 'with whitelist defined' do
393
- let(:cop_config) { { 'Whitelist' => ['to_foo', 'bar='] } }
389
+ context 'with whitelist defined' do
390
+ let(:cop_config) { { 'Whitelist' => ['to_foo', 'bar='] } }
394
391
 
395
- it 'ignores accessors in the whitelist' do
396
- inspect_source(cop,
397
- [' def to_foo',
398
- ' @foo',
399
- ' end'])
400
- expect(cop.offences).to be_empty
401
- end
402
- it 'ignores writers in the whitelist' do
403
- inspect_source(cop,
404
- [' def bar=(bar)',
405
- ' @bar = bar',
406
- ' end'])
407
- expect(cop.offences).to be_empty
408
- end
409
- end
410
- end
392
+ it 'ignores accessors in the whitelist' do
393
+ inspect_source(cop,
394
+ [' def to_foo',
395
+ ' @foo',
396
+ ' end'])
397
+ expect(cop.offences).to be_empty
398
+ end
399
+ it 'ignores writers in the whitelist' do
400
+ inspect_source(cop,
401
+ [' def bar=(bar)',
402
+ ' @bar = bar',
403
+ ' end'])
404
+ expect(cop.offences).to be_empty
411
405
  end
412
406
  end
413
407
  end