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,28 +2,46 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe LambdaCall do
9
- subject(:cop) { described_class.new }
10
-
11
- it 'registers an offence for x.()' do
12
- inspect_source(cop,
13
- ['x.(a, b)'])
14
- expect(cop.offences.size).to eq(1)
15
- end
16
-
17
- it 'accepts x.call()' do
18
- inspect_source(cop, ['x.call(a, b)'])
19
- expect(cop.offences).to be_empty
20
- end
21
-
22
- it 'auto-corrects x.() to x.call()' do
23
- new_source = autocorrect_source(cop, ['a.(x)'])
24
- expect(new_source).to eq('a.call(x)')
25
- end
26
- end
5
+ describe Rubocop::Cop::Style::LambdaCall, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+
8
+ context 'when style is set to call' do
9
+ let(:cop_config) { { 'EnforcedStyle' => 'call' } }
10
+
11
+ it 'registers an offence for x.()' do
12
+ inspect_source(cop,
13
+ ['x.(a, b)'])
14
+ expect(cop.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'accepts x.call()' do
18
+ inspect_source(cop, ['x.call(a, b)'])
19
+ expect(cop.offences).to be_empty
20
+ end
21
+
22
+ it 'auto-corrects x.() to x.call()' do
23
+ new_source = autocorrect_source(cop, ['a.(x)'])
24
+ expect(new_source).to eq('a.call(x)')
25
+ end
26
+ end
27
+
28
+ context 'when style is set to braces' do
29
+ let(:cop_config) { { 'EnforcedStyle' => 'braces' } }
30
+
31
+ it 'registers an offence for x.call()' do
32
+ inspect_source(cop,
33
+ ['x.call(a, b)'])
34
+ expect(cop.offences.size).to eq(1)
35
+ end
36
+
37
+ it 'accepts x.()' do
38
+ inspect_source(cop, ['x.(a, b)'])
39
+ expect(cop.offences).to be_empty
40
+ end
41
+
42
+ it 'auto-corrects x.call() to x.()' do
43
+ new_source = autocorrect_source(cop, ['a.call(x)'])
44
+ expect(new_source).to eq('a.(x)')
27
45
  end
28
46
  end
29
47
  end
@@ -2,44 +2,40 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe Lambda do
9
- subject(:lambda) { Lambda.new }
5
+ describe Rubocop::Cop::Style::Lambda do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for an old single-line lambda call' do
12
- inspect_source(lambda, ['f = lambda { |x| x }'])
13
- expect(lambda.offences.size).to eq(1)
14
- expect(lambda.messages).to eq([Lambda::SINGLE_MSG])
15
- end
8
+ it 'registers an offence for an old single-line lambda call' do
9
+ inspect_source(cop, ['f = lambda { |x| x }'])
10
+ expect(cop.offences.size).to eq(1)
11
+ expect(cop.messages)
12
+ .to eq(['Use the new lambda literal syntax ->(params) {...}.'])
13
+ end
16
14
 
17
- it 'accepts the new lambda literal with single-line body' do
18
- inspect_source(lambda, ['lambda = ->(x) { x }',
19
- 'lambda.(1)'])
20
- expect(lambda.offences).to be_empty
21
- end
15
+ it 'accepts the new lambda literal with single-line body' do
16
+ inspect_source(cop, ['lambda = ->(x) { x }',
17
+ 'lambda.(1)'])
18
+ expect(cop.offences).to be_empty
19
+ end
22
20
 
23
- it 'registers an offence for a new multi-line lambda call' do
24
- inspect_source(lambda, ['f = ->(x) do',
25
- ' x',
26
- 'end'])
27
- expect(lambda.offences.size).to eq(1)
28
- expect(lambda.messages).to eq([Lambda::MULTI_MSG])
29
- end
21
+ it 'registers an offence for a new multi-line lambda call' do
22
+ inspect_source(cop, ['f = ->(x) do',
23
+ ' x',
24
+ 'end'])
25
+ expect(cop.offences.size).to eq(1)
26
+ expect(cop.messages)
27
+ .to eq(['Use the lambda method for multi-line lambdas.'])
28
+ end
30
29
 
31
- it 'accepts the old lambda syntax with multi-line body' do
32
- inspect_source(lambda, ['l = lambda do |x|',
33
- ' x',
34
- 'end'])
35
- expect(lambda.offences).to be_empty
36
- end
30
+ it 'accepts the old lambda syntax with multi-line body' do
31
+ inspect_source(cop, ['l = lambda do |x|',
32
+ ' x',
33
+ 'end'])
34
+ expect(cop.offences).to be_empty
35
+ end
37
36
 
38
- it 'accepts the lambda call outside of block' do
39
- inspect_source(lambda, ['l = lambda.test'])
40
- expect(lambda.offences).to be_empty
41
- end
42
- end
43
- end
37
+ it 'accepts the lambda call outside of block' do
38
+ inspect_source(cop, ['l = lambda.test'])
39
+ expect(cop.offences).to be_empty
44
40
  end
45
41
  end
@@ -2,64 +2,58 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe LeadingCommentSpace do
9
- subject(:lcs) { LeadingCommentSpace.new }
5
+ describe Rubocop::Cop::Style::LeadingCommentSpace do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for comment without leading space' do
12
- inspect_source(lcs,
13
- ['#missing space'])
14
- expect(lcs.offences.size).to eq(1)
15
- end
8
+ it 'registers an offence for comment without leading space' do
9
+ inspect_source(cop,
10
+ ['#missing space'])
11
+ expect(cop.offences.size).to eq(1)
12
+ end
16
13
 
17
- it 'does not register an offence for # followed by no text' do
18
- inspect_source(lcs,
19
- ['#'])
20
- expect(lcs.offences).to be_empty
21
- end
14
+ it 'does not register an offence for # followed by no text' do
15
+ inspect_source(cop,
16
+ ['#'])
17
+ expect(cop.offences).to be_empty
18
+ end
22
19
 
23
- it 'does not register an offence for more than one space' do
24
- inspect_source(lcs,
25
- ['# heavily indented'])
26
- expect(lcs.offences).to be_empty
27
- end
20
+ it 'does not register an offence for more than one space' do
21
+ inspect_source(cop,
22
+ ['# heavily indented'])
23
+ expect(cop.offences).to be_empty
24
+ end
28
25
 
29
- it 'does not register an offence for more than one #' do
30
- inspect_source(lcs,
31
- ['###### heavily indented'])
32
- expect(lcs.offences).to be_empty
33
- end
26
+ it 'does not register an offence for more than one #' do
27
+ inspect_source(cop,
28
+ ['###### heavily indented'])
29
+ expect(cop.offences).to be_empty
30
+ end
34
31
 
35
- it 'does not register an offence for only #s' do
36
- inspect_source(lcs,
37
- ['######'])
38
- expect(lcs.offences).to be_empty
39
- end
32
+ it 'does not register an offence for only #s' do
33
+ inspect_source(cop,
34
+ ['######'])
35
+ expect(cop.offences).to be_empty
36
+ end
40
37
 
41
- it 'does not register an offence for #! on first line' do
42
- inspect_source(lcs,
43
- ['#!/usr/bin/ruby',
44
- 'test'])
45
- expect(lcs.offences).to be_empty
46
- end
38
+ it 'does not register an offence for #! on first line' do
39
+ inspect_source(cop,
40
+ ['#!/usr/bin/ruby',
41
+ 'test'])
42
+ expect(cop.offences).to be_empty
43
+ end
47
44
 
48
- it 'registers an offence for #! after the first line' do
49
- inspect_source(lcs,
50
- ['test', '#!/usr/bin/ruby'])
51
- expect(lcs.offences.size).to eq(1)
52
- end
45
+ it 'registers an offence for #! after the first line' do
46
+ inspect_source(cop,
47
+ ['test', '#!/usr/bin/ruby'])
48
+ expect(cop.offences.size).to eq(1)
49
+ end
53
50
 
54
- it 'accepts rdoc syntax' do
55
- inspect_source(lcs,
56
- ['#++',
57
- '#--',
58
- '#:nodoc:'])
51
+ it 'accepts rdoc syntax' do
52
+ inspect_source(cop,
53
+ ['#++',
54
+ '#--',
55
+ '#:nodoc:'])
59
56
 
60
- expect(lcs.offences).to be_empty
61
- end
62
- end
63
- end
57
+ expect(cop.offences).to be_empty
64
58
  end
65
59
  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 LineLength, :config do
9
- subject(:ll) { LineLength.new(config) }
10
- let(:cop_config) { { 'Max' => 79 } }
5
+ describe Rubocop::Cop::Style::LineLength, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) { { 'Max' => 79 } }
11
8
 
12
- it "registers an offence for a line that's 80 characters wide" do
13
- inspect_source(ll, ['#' * 80])
14
- expect(ll.offences.size).to eq(1)
15
- expect(ll.offences.first.message).to eq('Line is too long. [80/79]')
16
- end
9
+ it "registers an offence for a line that's 80 characters wide" do
10
+ inspect_source(cop, ['#' * 80])
11
+ expect(cop.offences.size).to eq(1)
12
+ expect(cop.offences.first.message).to eq('Line is too long. [80/79]')
13
+ end
17
14
 
18
- it "accepts a line that's 79 characters wide" do
19
- inspect_source(ll, ['#' * 79])
20
- expect(ll.offences).to be_empty
21
- end
22
- end
23
- end
15
+ it "accepts a line that's 79 characters wide" do
16
+ inspect_source(cop, ['#' * 79])
17
+ expect(cop.offences).to be_empty
24
18
  end
25
19
  end
@@ -2,29 +2,23 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe MethodCallParentheses do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::MethodCallParentheses do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for parens in method call without args' do
12
- inspect_source(cop, ['top.test()'])
13
- end
8
+ it 'registers an offence for parens in method call without args' do
9
+ inspect_source(cop, ['top.test()'])
10
+ end
14
11
 
15
- it 'it accepts no parens in method call without args' do
16
- inspect_source(cop, ['top.test'])
17
- end
12
+ it 'it accepts no parens in method call without args' do
13
+ inspect_source(cop, ['top.test'])
14
+ end
18
15
 
19
- it 'it accepts parens in method call with args' do
20
- inspect_source(cop, ['top.test(a)'])
21
- end
16
+ it 'it accepts parens in method call with args' do
17
+ inspect_source(cop, ['top.test(a)'])
18
+ end
22
19
 
23
- it 'auto-corrects by removing unneeded braces' do
24
- new_source = autocorrect_source(cop, 'test()')
25
- expect(new_source).to eq('test')
26
- end
27
- end
28
- end
20
+ it 'auto-corrects by removing unneeded braces' do
21
+ new_source = autocorrect_source(cop, 'test()')
22
+ expect(new_source).to eq('test')
29
23
  end
30
24
  end
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::MethodCalledOnDoEndBlock do
6
+ subject(:cop) { described_class.new }
7
+
8
+ context 'with a multi-line do..end block' do
9
+ it 'registers an offence for a chained call' do
10
+ inspect_source(cop, ['a do',
11
+ ' b',
12
+ 'end.c'])
13
+ expect(cop.offences).to have(1).item
14
+ expect(cop.highlights).to eq(['end.c'])
15
+ end
16
+
17
+ it 'accepts it if there is no chained call' do
18
+ inspect_source(cop, ['a do',
19
+ ' b',
20
+ 'end'])
21
+ expect(cop.offences).to be_empty
22
+ end
23
+
24
+ it 'accepts a chained block' do
25
+ inspect_source(cop, ['a do',
26
+ ' b',
27
+ 'end.c do',
28
+ ' d',
29
+ 'end'])
30
+ expect(cop.offences).to be_empty
31
+ end
32
+ end
33
+
34
+ context 'with a single-line do..end block' do
35
+ it 'registers an offence for a chained call' do
36
+ inspect_source(cop, ['a do b end.c'])
37
+ expect(cop.offences).to have(1).item
38
+ expect(cop.highlights).to eq(['end.c'])
39
+ end
40
+
41
+ it 'accepts a single-line do..end block with a chained block' do
42
+ inspect_source(cop, ['a do b end.c do d end'])
43
+ expect(cop.offences).to be_empty
44
+ end
45
+ end
46
+
47
+ context 'with a {} block' do
48
+ it 'accepts a multi-line block with a chained call' do
49
+ inspect_source(cop, ['a {',
50
+ ' b',
51
+ '}.c'])
52
+ expect(cop.offences).to be_empty
53
+ end
54
+
55
+ it 'accepts a single-line block with a chained call' do
56
+ inspect_source(cop, ['a { b }.c'])
57
+ expect(cop.offences).to be_empty
58
+ end
59
+ end
60
+ end
@@ -2,151 +2,145 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe MethodLength, :config do
9
- subject(:method_length) { MethodLength.new(config) }
10
- let(:cop_config) { { 'Max' => 5, 'CountComments' => false } }
5
+ describe Rubocop::Cop::Style::MethodLength, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) { { 'Max' => 5, 'CountComments' => false } }
11
8
 
12
- it 'rejects a method with more than 5 lines' do
13
- inspect_source(method_length, ['def m()',
14
- ' a = 1',
15
- ' a = 2',
16
- ' a = 3',
17
- ' a = 4',
18
- ' a = 5',
19
- ' a = 6',
20
- 'end'])
21
- expect(method_length.offences.size).to eq(1)
22
- expect(method_length.offences.map(&:line).sort).to eq([1])
23
- end
9
+ it 'rejects a method with more than 5 lines' do
10
+ inspect_source(cop, ['def m()',
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
+ expect(cop.offences.map(&:line).sort).to eq([1])
20
+ end
24
21
 
25
- it 'accepts a method with less than 5 lines' do
26
- inspect_source(method_length, ['def m()',
27
- ' a = 1',
28
- ' a = 2',
29
- ' a = 3',
30
- ' a = 4',
31
- 'end'])
32
- expect(method_length.offences).to be_empty
33
- end
22
+ it 'accepts a method with less than 5 lines' do
23
+ inspect_source(cop, ['def m()',
24
+ ' a = 1',
25
+ ' a = 2',
26
+ ' a = 3',
27
+ ' a = 4',
28
+ 'end'])
29
+ expect(cop.offences).to be_empty
30
+ end
34
31
 
35
- it 'does not count blank lines' do
36
- inspect_source(method_length, ['def m()',
37
- ' a = 1',
38
- ' a = 2',
39
- ' a = 3',
40
- ' a = 4',
41
- '',
42
- '',
43
- ' a = 7',
44
- 'end'])
45
- expect(method_length.offences).to be_empty
46
- end
32
+ it 'does not count blank lines' do
33
+ inspect_source(cop, ['def m()',
34
+ ' a = 1',
35
+ ' a = 2',
36
+ ' a = 3',
37
+ ' a = 4',
38
+ '',
39
+ '',
40
+ ' a = 7',
41
+ 'end'])
42
+ expect(cop.offences).to be_empty
43
+ end
47
44
 
48
- it 'accepts empty methods' do
49
- inspect_source(method_length, ['def m()',
50
- 'end'])
51
- expect(method_length.offences).to be_empty
52
- end
45
+ it 'accepts empty methods' do
46
+ inspect_source(cop, ['def m()',
47
+ 'end'])
48
+ expect(cop.offences).to be_empty
49
+ end
53
50
 
54
- it 'is not fooled by one-liner methods, syntax #1' do
55
- inspect_source(method_length, ['def one_line; 10 end',
56
- 'def self.m()',
57
- ' a = 1',
58
- ' a = 2',
59
- ' a = 4',
60
- ' a = 5',
61
- ' a = 6',
62
- 'end'])
63
- expect(method_length.offences).to be_empty
64
- end
51
+ it 'is not fooled by one-liner methods, syntax #1' do
52
+ inspect_source(cop, ['def one_line; 10 end',
53
+ 'def self.m()',
54
+ ' a = 1',
55
+ ' a = 2',
56
+ ' a = 4',
57
+ ' a = 5',
58
+ ' a = 6',
59
+ 'end'])
60
+ expect(cop.offences).to be_empty
61
+ end
65
62
 
66
- it 'is not fooled by one-liner methods, syntax #2' do
67
- inspect_source(method_length, ['def one_line(test) 10 end',
68
- 'def self.m()',
69
- ' a = 1',
70
- ' a = 2',
71
- ' a = 4',
72
- ' a = 5',
73
- ' a = 6',
74
- 'end'])
75
- expect(method_length.offences).to be_empty
76
- end
63
+ it 'is not fooled by one-liner methods, syntax #2' do
64
+ inspect_source(cop, ['def one_line(test) 10 end',
65
+ 'def self.m()',
66
+ ' a = 1',
67
+ ' a = 2',
68
+ ' a = 4',
69
+ ' a = 5',
70
+ ' a = 6',
71
+ 'end'])
72
+ expect(cop.offences).to be_empty
73
+ end
77
74
 
78
- it 'checks class methods, syntax #1' do
79
- inspect_source(method_length, ['def self.m()',
80
- ' a = 1',
81
- ' a = 2',
82
- ' a = 3',
83
- ' a = 4',
84
- ' a = 5',
85
- ' a = 6',
86
- 'end'])
87
- expect(method_length.offences.size).to eq(1)
88
- expect(method_length.offences.map(&:line).sort).to eq([1])
89
- end
75
+ it 'checks class methods, syntax #1' do
76
+ inspect_source(cop, ['def self.m()',
77
+ ' a = 1',
78
+ ' a = 2',
79
+ ' a = 3',
80
+ ' a = 4',
81
+ ' a = 5',
82
+ ' a = 6',
83
+ 'end'])
84
+ expect(cop.offences.size).to eq(1)
85
+ expect(cop.offences.map(&:line).sort).to eq([1])
86
+ end
90
87
 
91
- it 'checks class methods, syntax #2' do
92
- inspect_source(method_length, ['class K',
93
- ' class << self',
94
- ' def m()',
95
- ' a = 1',
96
- ' a = 2',
97
- ' a = 3',
98
- ' a = 4',
99
- ' a = 5',
100
- ' a = 6',
101
- ' end',
102
- ' end',
103
- 'end'])
104
- expect(method_length.offences.size).to eq(1)
105
- expect(method_length.offences.map(&:line).sort).to eq([3])
106
- end
88
+ it 'checks class methods, syntax #2' do
89
+ inspect_source(cop, ['class K',
90
+ ' class << self',
91
+ ' def m()',
92
+ ' a = 1',
93
+ ' a = 2',
94
+ ' a = 3',
95
+ ' a = 4',
96
+ ' a = 5',
97
+ ' a = 6',
98
+ ' end',
99
+ ' end',
100
+ 'end'])
101
+ expect(cop.offences.size).to eq(1)
102
+ expect(cop.offences.map(&:line).sort).to eq([3])
103
+ end
107
104
 
108
- it 'properly counts lines when method ends with block' do
109
- inspect_source(method_length, ['def m()',
110
- ' something do',
111
- ' a = 2',
112
- ' a = 3',
113
- ' a = 4',
114
- ' a = 5',
115
- ' end',
116
- 'end'])
117
- expect(method_length.offences.size).to eq(1)
118
- expect(method_length.offences.map(&:line).sort).to eq([1])
119
- end
105
+ it 'properly counts lines when method ends with block' do
106
+ inspect_source(cop, ['def m()',
107
+ ' something do',
108
+ ' a = 2',
109
+ ' a = 3',
110
+ ' a = 4',
111
+ ' a = 5',
112
+ ' end',
113
+ 'end'])
114
+ expect(cop.offences.size).to eq(1)
115
+ expect(cop.offences.map(&:line).sort).to eq([1])
116
+ end
120
117
 
121
- it 'does not count commented lines by default' do
122
- inspect_source(method_length, ['def m()',
123
- ' a = 1',
124
- ' #a = 2',
125
- ' a = 3',
126
- ' #a = 4',
127
- ' a = 5',
128
- ' a = 6',
129
- 'end'])
130
- expect(method_length.offences).to be_empty
131
- end
118
+ it 'does not count commented lines by default' do
119
+ inspect_source(cop, ['def m()',
120
+ ' a = 1',
121
+ ' #a = 2',
122
+ ' a = 3',
123
+ ' #a = 4',
124
+ ' a = 5',
125
+ ' a = 6',
126
+ 'end'])
127
+ expect(cop.offences).to be_empty
128
+ end
132
129
 
133
- context 'when CountComments is enabled' do
134
- before { cop_config['CountComments'] = true }
130
+ context 'when CountComments is enabled' do
131
+ before { cop_config['CountComments'] = true }
135
132
 
136
- it 'also counts commented lines' do
137
- inspect_source(method_length, ['def m()',
138
- ' a = 1',
139
- ' #a = 2',
140
- ' a = 3',
141
- ' #a = 4',
142
- ' a = 5',
143
- ' a = 6',
144
- 'end'])
145
- expect(method_length.offences.size).to eq(1)
146
- expect(method_length.offences.map(&:line).sort).to eq([1])
147
- end
148
- end
149
- end
133
+ it 'also counts commented lines' do
134
+ inspect_source(cop, ['def m()',
135
+ ' a = 1',
136
+ ' #a = 2',
137
+ ' a = 3',
138
+ ' #a = 4',
139
+ ' a = 5',
140
+ ' a = 6',
141
+ 'end'])
142
+ expect(cop.offences.size).to eq(1)
143
+ expect(cop.offences.map(&:line).sort).to eq([1])
150
144
  end
151
145
  end
152
146
  end