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 PerlBackrefs do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::PerlBackrefs do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for $1' do
12
- inspect_source(cop, ['puts $1'])
13
- expect(cop.offences.size).to eq(1)
14
- end
8
+ it 'registers an offence for $1' do
9
+ inspect_source(cop, ['puts $1'])
10
+ expect(cop.offences.size).to eq(1)
11
+ end
15
12
 
16
- it 'auto-corrects $1 to Regexp.last_match[1]' do
17
- new_source = autocorrect_source(cop, '$1')
18
- expect(new_source).to eq('Regexp.last_match[1]')
19
- end
20
- end
21
- end
13
+ it 'auto-corrects $1 to Regexp.last_match[1]' do
14
+ new_source = autocorrect_source(cop, '$1')
15
+ expect(new_source).to eq('Regexp.last_match[1]')
22
16
  end
23
17
  end
@@ -2,27 +2,21 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe Proc do
9
- subject(:proc) { Proc.new }
5
+ describe Rubocop::Cop::Style::Proc do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for a Proc.new call' do
12
- inspect_source(proc, ['f = Proc.new { |x| puts x }'])
13
- expect(proc.offences.size).to eq(1)
14
- end
8
+ it 'registers an offence for a Proc.new call' do
9
+ inspect_source(cop, ['f = Proc.new { |x| puts x }'])
10
+ expect(cop.offences.size).to eq(1)
11
+ end
15
12
 
16
- it 'accepts the proc method' do
17
- inspect_source(proc, ['f = proc { |x| puts x }'])
18
- expect(proc.offences).to be_empty
19
- end
13
+ it 'accepts the proc method' do
14
+ inspect_source(cop, ['f = proc { |x| puts x }'])
15
+ expect(cop.offences).to be_empty
16
+ end
20
17
 
21
- it 'accepts the Proc.new call outside of block' do
22
- inspect_source(proc, ['p = Proc.new'])
23
- expect(proc.offences).to be_empty
24
- end
25
- end
26
- end
18
+ it 'accepts the Proc.new call outside of block' do
19
+ inspect_source(cop, ['p = Proc.new'])
20
+ expect(cop.offences).to be_empty
27
21
  end
28
22
  end
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::RaiseArgs, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+
8
+ context 'when enforced style is compact' do
9
+ let(:cop_config) { { 'EnforcedStyle' => 'compact' } }
10
+
11
+ it 'reports an offence for a raise with 2 args' do
12
+ inspect_source(cop, ['raise RuntimeError, msg'])
13
+ expect(cop.offences.size).to eq(1)
14
+ end
15
+
16
+ it 'reports an offence for a raise with 3 args' do
17
+ inspect_source(cop, ['raise RuntimeError, msg, caller'])
18
+ expect(cop.offences.size).to eq(1)
19
+ end
20
+
21
+ it 'accepts a raise with msg argument' do
22
+ inspect_source(cop, ['raise msg'])
23
+ expect(cop.offences).to be_empty
24
+ end
25
+
26
+ it 'accepts a raise with an exception argument' do
27
+ inspect_source(cop, ['raise Ex.new(msg)'])
28
+ expect(cop.offences).to be_empty
29
+ end
30
+ end
31
+
32
+ context 'when enforced style is exploded' do
33
+ let(:cop_config) { { 'EnforcedStyle' => 'exploded' } }
34
+
35
+ it 'reports an offence for a raise with exception object' do
36
+ inspect_source(cop, ['raise Ex.new(msg)'])
37
+ expect(cop.offences.size).to eq(1)
38
+ end
39
+
40
+ it 'accepts a raise with 3 args' do
41
+ inspect_source(cop, ['raise RuntimeError, msg, caller'])
42
+ expect(cop.offences).to be_empty
43
+ end
44
+
45
+ it 'accepts a raise with 2 args' do
46
+ inspect_source(cop, ['raise RuntimeError, msg'])
47
+ expect(cop.offences).to be_empty
48
+ end
49
+
50
+ it 'accepts a raise with msg argument' do
51
+ inspect_source(cop, ['raise msg'])
52
+ expect(cop.offences).to be_empty
53
+ end
54
+ end
55
+ 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 ReduceArguments do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::ReduceArguments do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'find wrong argument names in calls with different syntax' do
12
- inspect_source(cop,
13
- ['def m',
14
- ' [0, 1].reduce { |c, d| c + d }',
15
- ' [0, 1].reduce{ |c, d| c + d }',
16
- ' [0, 1].reduce(5) { |c, d| c + d }',
17
- ' [0, 1].reduce(5){ |c, d| c + d }',
18
- ' [0, 1].reduce (5) { |c, d| c + d }',
19
- ' [0, 1].reduce(5) { |c, d| c + d }',
20
- 'end'])
21
- expect(cop.offences.size).to eq(6)
22
- expect(cop.offences.map(&:line).sort).to eq((2..7).to_a)
23
- end
8
+ it 'find wrong argument names in calls with different syntax' do
9
+ inspect_source(cop,
10
+ ['def m',
11
+ ' [0, 1].reduce { |c, d| c + d }',
12
+ ' [0, 1].reduce{ |c, d| c + d }',
13
+ ' [0, 1].reduce(5) { |c, d| c + d }',
14
+ ' [0, 1].reduce(5){ |c, d| c + d }',
15
+ ' [0, 1].reduce (5) { |c, d| c + d }',
16
+ ' [0, 1].reduce(5) { |c, d| c + d }',
17
+ 'end'])
18
+ expect(cop.offences.size).to eq(6)
19
+ expect(cop.offences.map(&:line).sort).to eq((2..7).to_a)
20
+ end
24
21
 
25
- it 'allows calls with proper argument names' do
26
- inspect_source(cop,
27
- ['def m',
28
- ' [0, 1].reduce { |a, e| a + e }',
29
- ' [0, 1].reduce{ |a, e| a + e }',
30
- ' [0, 1].reduce(5) { |a, e| a + e }',
31
- ' [0, 1].reduce(5){ |a, e| a + e }',
32
- ' [0, 1].reduce (5) { |a, e| a + e }',
33
- ' [0, 1].reduce(5) { |a, e| a + e }',
34
- 'end'])
35
- expect(cop.offences).to be_empty
36
- end
22
+ it 'allows calls with proper argument names' do
23
+ inspect_source(cop,
24
+ ['def m',
25
+ ' [0, 1].reduce { |a, e| a + e }',
26
+ ' [0, 1].reduce{ |a, e| a + e }',
27
+ ' [0, 1].reduce(5) { |a, e| a + e }',
28
+ ' [0, 1].reduce(5){ |a, e| a + e }',
29
+ ' [0, 1].reduce (5) { |a, e| a + e }',
30
+ ' [0, 1].reduce(5) { |a, e| a + e }',
31
+ 'end'])
32
+ expect(cop.offences).to be_empty
33
+ end
37
34
 
38
- it 'ignores do..end blocks' do
39
- inspect_source(cop,
40
- ['def m',
41
- ' [0, 1].reduce do |c, d|',
42
- ' c + d',
43
- ' end',
44
- 'end'])
45
- expect(cop.offences).to be_empty
46
- end
35
+ it 'ignores do..end blocks' do
36
+ inspect_source(cop,
37
+ ['def m',
38
+ ' [0, 1].reduce do |c, d|',
39
+ ' c + d',
40
+ ' end',
41
+ 'end'])
42
+ expect(cop.offences).to be_empty
43
+ end
47
44
 
48
- it 'ignores :reduce symbols' do
49
- inspect_source(cop,
50
- ['def m',
51
- ' call_method(:reduce) { |a, b| a + b}',
52
- 'end'])
53
- expect(cop.offences).to be_empty
54
- end
45
+ it 'ignores :reduce symbols' do
46
+ inspect_source(cop,
47
+ ['def m',
48
+ ' call_method(:reduce) { |a, b| a + b}',
49
+ 'end'])
50
+ expect(cop.offences).to be_empty
51
+ end
55
52
 
56
- it 'does not report when destructuring is used' do
57
- inspect_source(cop,
58
- ['def m',
59
- ' test.reduce { |a, (id, _)| a + id}',
60
- 'end'])
61
- expect(cop.offences).to be_empty
62
- end
63
- end
64
- end
53
+ it 'does not report when destructuring is used' do
54
+ inspect_source(cop,
55
+ ['def m',
56
+ ' test.reduce { |a, (id, _)| a + id}',
57
+ 'end'])
58
+ expect(cop.offences).to be_empty
65
59
  end
66
60
  end
@@ -2,62 +2,56 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe RedundantBegin do
9
- subject(:cop) { RedundantBegin.new }
5
+ describe Rubocop::Cop::Style::RedundantBegin do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'reports an offence for def with redundant begin block' do
12
- src = ['def func',
13
- ' begin',
14
- ' ala',
15
- ' rescue => e',
16
- ' bala',
17
- ' end',
18
- 'end']
19
- inspect_source(cop, src)
20
- expect(cop.offences.size).to eq(1)
21
- end
8
+ it 'reports an offence for def with redundant begin block' do
9
+ src = ['def func',
10
+ ' begin',
11
+ ' ala',
12
+ ' rescue => e',
13
+ ' bala',
14
+ ' end',
15
+ 'end']
16
+ inspect_source(cop, src)
17
+ expect(cop.offences.size).to eq(1)
18
+ end
22
19
 
23
- it 'reports an offence for defs with redundant begin block' do
24
- src = ['def Test.func',
25
- ' begin',
26
- ' ala',
27
- ' rescue => e',
28
- ' bala',
29
- ' end',
30
- 'end']
31
- inspect_source(cop, src)
32
- expect(cop.offences.size).to eq(1)
33
- end
20
+ it 'reports an offence for defs with redundant begin block' do
21
+ src = ['def Test.func',
22
+ ' begin',
23
+ ' ala',
24
+ ' rescue => e',
25
+ ' bala',
26
+ ' end',
27
+ 'end']
28
+ inspect_source(cop, src)
29
+ expect(cop.offences.size).to eq(1)
30
+ end
34
31
 
35
- it 'accepts a def with required begin block' do
36
- src = ['def func',
37
- ' begin',
38
- ' ala',
39
- ' rescue => e',
40
- ' bala',
41
- ' end',
42
- ' something',
43
- 'end']
44
- inspect_source(cop, src)
45
- expect(cop.offences).to be_empty
46
- end
32
+ it 'accepts a def with required begin block' do
33
+ src = ['def func',
34
+ ' begin',
35
+ ' ala',
36
+ ' rescue => e',
37
+ ' bala',
38
+ ' end',
39
+ ' something',
40
+ 'end']
41
+ inspect_source(cop, src)
42
+ expect(cop.offences).to be_empty
43
+ end
47
44
 
48
- it 'accepts a defs with required begin block' do
49
- src = ['def Test.func',
50
- ' begin',
51
- ' ala',
52
- ' rescue => e',
53
- ' bala',
54
- ' end',
55
- ' something',
56
- 'end']
57
- inspect_source(cop, src)
58
- expect(cop.offences).to be_empty
59
- end
60
- end
61
- end
45
+ it 'accepts a defs with required begin block' do
46
+ src = ['def Test.func',
47
+ ' begin',
48
+ ' ala',
49
+ ' rescue => e',
50
+ ' bala',
51
+ ' end',
52
+ ' something',
53
+ 'end']
54
+ inspect_source(cop, src)
55
+ expect(cop.offences).to be_empty
62
56
  end
63
57
  end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::RedundantException do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'reports an offence for a raise with RuntimeError' do
9
+ inspect_source(cop, ['raise RuntimeError, msg'])
10
+ expect(cop.offences.size).to eq(1)
11
+ end
12
+
13
+ it 'reports an offence for a fail with RuntimeError' do
14
+ inspect_source(cop, ['fail RuntimeError, msg'])
15
+ expect(cop.offences.size).to eq(1)
16
+ end
17
+
18
+ it 'accepts a raise with RuntimeError if it does not have 2 args' do
19
+ inspect_source(cop, ['raise RuntimeError, msg, caller'])
20
+ expect(cop.offences).to be_empty
21
+ end
22
+
23
+ it 'accepts a fail with RuntimeError if it does not have 2 args' do
24
+ inspect_source(cop, ['fail RuntimeError, msg, caller'])
25
+ expect(cop.offences).to be_empty
26
+ end
27
+ end
@@ -2,78 +2,170 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe RedundantReturn do
9
- subject(:cop) { described_class.new }
10
-
11
- it 'reports an offence for def with only a return' do
12
- src = ['def func',
13
- ' return something',
14
- 'end']
15
- inspect_source(cop, src)
16
- expect(cop.offences.size).to eq(1)
17
- end
18
-
19
- it 'reports an offence for defs with only a return' do
20
- src = ['def Test.func',
21
- ' return something',
22
- 'end']
23
- inspect_source(cop, src)
24
- expect(cop.offences.size).to eq(1)
25
- end
26
-
27
- it 'reports an offence for def ending with return' do
28
- src = ['def func',
29
- ' one',
30
- ' two',
31
- ' return something',
32
- 'end']
33
- inspect_source(cop, src)
34
- expect(cop.offences.size).to eq(1)
35
- end
36
-
37
- it 'reports an offence for defs ending with return' do
38
- src = ['def func',
39
- ' one',
40
- ' two',
41
- ' return something',
42
- 'end']
43
- inspect_source(cop, src)
44
- expect(cop.offences.size).to eq(1)
45
- end
46
-
47
- it 'accepts return in a non-final position' do
48
- src = ['def func',
49
- ' return something if something_else',
50
- 'end']
51
- inspect_source(cop, src)
52
- expect(cop.offences).to be_empty
53
- end
54
-
55
- it 'does not blow up on empty method body' do
56
- src = ['def func',
57
- 'end']
58
- inspect_source(cop, src)
59
- expect(cop.offences).to be_empty
60
- end
61
-
62
- it 'auto-corrects by removing redundant returns' do
63
- src = ['def func',
64
- ' one',
65
- ' two',
66
- ' return something',
67
- 'end'].join("\n")
68
- result_src = ['def func',
69
- ' one',
70
- ' two',
71
- ' something',
72
- 'end'].join("\n")
73
- new_source = autocorrect_source(cop, src)
74
- expect(new_source).to eq(result_src)
75
- end
76
- end
5
+ describe Rubocop::Cop::Style::RedundantReturn, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) { { 'AllowMultipleReturnValues' => false } }
8
+
9
+ it 'reports an offence for def with only a return' do
10
+ src = ['def func',
11
+ ' return something',
12
+ 'end']
13
+ inspect_source(cop, src)
14
+ expect(cop.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'reports an offence for defs with only a return' do
18
+ src = ['def Test.func',
19
+ ' return something',
20
+ 'end']
21
+ inspect_source(cop, src)
22
+ expect(cop.offences.size).to eq(1)
23
+ end
24
+
25
+ it 'reports an offence for def ending with return' do
26
+ src = ['def func',
27
+ ' one',
28
+ ' two',
29
+ ' return something',
30
+ 'end']
31
+ inspect_source(cop, src)
32
+ expect(cop.offences.size).to eq(1)
33
+ end
34
+
35
+ it 'reports an offence for defs ending with return' do
36
+ src = ['def func',
37
+ ' one',
38
+ ' two',
39
+ ' return something',
40
+ 'end']
41
+ inspect_source(cop, src)
42
+ expect(cop.offences.size).to eq(1)
43
+ end
44
+
45
+ it 'accepts return in a non-final position' do
46
+ src = ['def func',
47
+ ' return something if something_else',
48
+ 'end']
49
+ inspect_source(cop, src)
50
+ expect(cop.offences).to be_empty
51
+ end
52
+
53
+ it 'does not blow up on empty method body' do
54
+ src = ['def func',
55
+ 'end']
56
+ inspect_source(cop, src)
57
+ expect(cop.offences).to be_empty
58
+ end
59
+
60
+ it 'auto-corrects by removing redundant returns' do
61
+ src = ['def func',
62
+ ' one',
63
+ ' two',
64
+ ' return something',
65
+ 'end'].join("\n")
66
+ result_src = ['def func',
67
+ ' one',
68
+ ' two',
69
+ ' something',
70
+ 'end'].join("\n")
71
+ new_source = autocorrect_source(cop, src)
72
+ expect(new_source).to eq(result_src)
73
+ end
74
+
75
+ context 'when multi-value returns are not allowed' do
76
+ it 'reports an offence for def with only a return' do
77
+ src = ['def func',
78
+ ' return something, test',
79
+ 'end']
80
+ inspect_source(cop, src)
81
+ expect(cop.offences.size).to eq(1)
82
+ end
83
+
84
+ it 'reports an offence for defs with only a return' do
85
+ src = ['def Test.func',
86
+ ' return something, test',
87
+ 'end']
88
+ inspect_source(cop, src)
89
+ expect(cop.offences.size).to eq(1)
90
+ end
91
+
92
+ it 'reports an offence for def ending with return' do
93
+ src = ['def func',
94
+ ' one',
95
+ ' two',
96
+ ' return something, test',
97
+ 'end']
98
+ inspect_source(cop, src)
99
+ expect(cop.offences.size).to eq(1)
100
+ end
101
+
102
+ it 'reports an offence for defs ending with return' do
103
+ src = ['def func',
104
+ ' one',
105
+ ' two',
106
+ ' return something, test',
107
+ 'end']
108
+ inspect_source(cop, src)
109
+ expect(cop.offences.size).to eq(1)
110
+ end
111
+
112
+ it 'auto-corrects by making implicit arrays explicit' do
113
+ src = ['def func',
114
+ ' return 1, 2',
115
+ 'end'].join("\n")
116
+ result_src = ['def func',
117
+ ' [1, 2]', # Just 1, 2 is not valid Ruby.
118
+ 'end'].join("\n")
119
+ new_source = autocorrect_source(cop, src)
120
+ expect(new_source).to eq(result_src)
121
+ end
122
+ end
123
+
124
+ context 'when multi-value returns are allowed' do
125
+ let(:cop_config) { { 'AllowMultipleReturnValues' => true } }
126
+
127
+ it 'accepts def with only a return' do
128
+ src = ['def func',
129
+ ' return something, test',
130
+ 'end']
131
+ inspect_source(cop, src)
132
+ expect(cop.offences).to be_empty
133
+ end
134
+
135
+ it 'accepts defs with only a return' do
136
+ src = ['def Test.func',
137
+ ' return something, test',
138
+ 'end']
139
+ inspect_source(cop, src)
140
+ expect(cop.offences).to be_empty
141
+ end
142
+
143
+ it 'accepts def ending with return' do
144
+ src = ['def func',
145
+ ' one',
146
+ ' two',
147
+ ' return something, test',
148
+ 'end']
149
+ inspect_source(cop, src)
150
+ expect(cop.offences).to be_empty
151
+ end
152
+
153
+ it 'accepts defs ending with return' do
154
+ src = ['def func',
155
+ ' one',
156
+ ' two',
157
+ ' return something, test',
158
+ 'end']
159
+ inspect_source(cop, src)
160
+ expect(cop.offences).to be_empty
161
+ end
162
+
163
+ it 'does not auto-correct' do
164
+ src = ['def func',
165
+ ' return 1, 2',
166
+ 'end'].join("\n")
167
+ new_source = autocorrect_source(cop, src)
168
+ expect(new_source).to eq(src)
77
169
  end
78
170
  end
79
171
  end