rubocop 0.29.1 → 0.30.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 (341) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -1
  3. data/README.md +11 -2
  4. data/config/default.yml +194 -6
  5. data/config/disabled.yml +25 -1
  6. data/config/enabled.yml +74 -12
  7. data/lib/rubocop.rb +19 -2
  8. data/lib/rubocop/config.rb +23 -3
  9. data/lib/rubocop/config_loader.rb +9 -1
  10. data/lib/rubocop/cop/autocorrect_logic.rb +26 -0
  11. data/lib/rubocop/cop/cop.rb +33 -17
  12. data/lib/rubocop/cop/lint/assignment_in_condition.rb +16 -4
  13. data/lib/rubocop/cop/lint/block_alignment.rb +5 -14
  14. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  15. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +61 -0
  16. data/lib/rubocop/cop/lint/void.rb +11 -3
  17. data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +17 -0
  18. data/lib/rubocop/cop/performance/detect.rb +72 -0
  19. data/lib/rubocop/cop/performance/flat_map.rb +64 -0
  20. data/lib/rubocop/cop/performance/reverse_each.rb +43 -0
  21. data/lib/rubocop/cop/performance/sample.rb +58 -0
  22. data/lib/rubocop/cop/performance/size.rb +64 -0
  23. data/lib/rubocop/cop/rails/date.rb +121 -0
  24. data/lib/rubocop/cop/rails/find_by.rb +52 -0
  25. data/lib/rubocop/cop/rails/find_each.rb +41 -0
  26. data/lib/rubocop/cop/rails/time_zone.rb +93 -0
  27. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +45 -0
  28. data/lib/rubocop/cop/style/block_delimiters.rb +186 -0
  29. data/lib/rubocop/cop/style/closing_parenthesis_indentation.rb +76 -0
  30. data/lib/rubocop/cop/style/command_literal.rb +120 -0
  31. data/lib/rubocop/cop/style/copyright.rb +87 -0
  32. data/lib/rubocop/cop/style/documentation.rb +32 -0
  33. data/lib/rubocop/cop/style/empty_else.rb +85 -16
  34. data/lib/rubocop/cop/style/encoding.rb +14 -2
  35. data/lib/rubocop/cop/style/end_of_line.rb +5 -0
  36. data/lib/rubocop/cop/style/hash_syntax.rb +86 -23
  37. data/lib/rubocop/cop/style/if_unless_modifier.rb +15 -0
  38. data/lib/rubocop/cop/style/indentation_consistency.rb +13 -6
  39. data/lib/rubocop/cop/style/indentation_width.rb +34 -10
  40. data/lib/rubocop/cop/style/lambda.rb +32 -17
  41. data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -0
  42. data/lib/rubocop/cop/style/missing_else.rb +72 -0
  43. data/lib/rubocop/cop/style/regexp_literal.rb +89 -58
  44. data/lib/rubocop/cop/style/space_around_operators.rb +13 -2
  45. data/lib/rubocop/cop/style/space_before_block_braces.rb +3 -3
  46. data/lib/rubocop/cop/style/space_inside_block_braces.rb +9 -5
  47. data/lib/rubocop/cop/style/symbol_literal.rb +36 -0
  48. data/lib/rubocop/cop/style/trailing_blank_lines.rb +7 -0
  49. data/lib/rubocop/cop/style/trailing_comma.rb +21 -7
  50. data/lib/rubocop/cop/style/trivial_accessors.rb +17 -3
  51. data/lib/rubocop/cop/style/unneeded_capital_w.rb +4 -6
  52. data/lib/rubocop/cop/style/while_until_modifier.rb +10 -0
  53. data/lib/rubocop/cop/util.rb +24 -19
  54. data/lib/rubocop/cop/variable_force.rb +14 -0
  55. data/lib/rubocop/cop/variable_force/reference.rb +10 -4
  56. data/lib/rubocop/formatter/html_formatter.rb +10 -4
  57. data/lib/rubocop/formatter/text_util.rb +5 -7
  58. data/lib/rubocop/options.rb +47 -45
  59. data/lib/rubocop/path_util.rb +12 -8
  60. data/lib/rubocop/processed_source.rb +12 -1
  61. data/lib/rubocop/rake_task.rb +2 -2
  62. data/lib/rubocop/version.rb +1 -1
  63. data/relnotes/v0.30.0.md +145 -0
  64. data/rubocop.gemspec +15 -3
  65. metadata +22 -545
  66. data/.gitignore +0 -54
  67. data/.rspec +0 -1
  68. data/.rubocop.yml +0 -11
  69. data/.rubocop_todo.yml +0 -28
  70. data/.travis.yml +0 -22
  71. data/Gemfile +0 -15
  72. data/Rakefile +0 -41
  73. data/lib/rubocop/cop/style/blocks.rb +0 -80
  74. data/lib/rubocop/cop/style/unneeded_percent_x.rb +0 -25
  75. data/logo/rubocop-final-logo.eps +0 -0
  76. data/spec/.rubocop.yml +0 -5
  77. data/spec/fixtures/html_formatter/expected.html +0 -495
  78. data/spec/fixtures/html_formatter/project/app/controllers/application_controller.rb +0 -5
  79. data/spec/fixtures/html_formatter/project/app/controllers/books_controller.rb +0 -74
  80. data/spec/fixtures/html_formatter/project/app/models/book.rb +0 -5
  81. data/spec/isolated_environment_spec.rb +0 -24
  82. data/spec/project_spec.rb +0 -119
  83. data/spec/rubocop/cli_spec.rb +0 -2740
  84. data/spec/rubocop/comment_config_spec.rb +0 -105
  85. data/spec/rubocop/config_loader_spec.rb +0 -377
  86. data/spec/rubocop/config_spec.rb +0 -235
  87. data/spec/rubocop/config_store_spec.rb +0 -53
  88. data/spec/rubocop/cop/commissioner_spec.rb +0 -85
  89. data/spec/rubocop/cop/cop_spec.rb +0 -135
  90. data/spec/rubocop/cop/corrector_spec.rb +0 -59
  91. data/spec/rubocop/cop/force_spec.rb +0 -29
  92. data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +0 -113
  93. data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +0 -35
  94. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +0 -130
  95. data/spec/rubocop/cop/lint/block_alignment_spec.rb +0 -533
  96. data/spec/rubocop/cop/lint/condition_position_spec.rb +0 -51
  97. data/spec/rubocop/cop/lint/debugger_spec.rb +0 -73
  98. data/spec/rubocop/cop/lint/def_end_alignment_spec.rb +0 -108
  99. data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +0 -38
  100. data/spec/rubocop/cop/lint/duplicate_methods_spec.rb +0 -189
  101. data/spec/rubocop/cop/lint/else_layout_spec.rb +0 -65
  102. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +0 -27
  103. data/spec/rubocop/cop/lint/empty_interpolation_spec.rb +0 -18
  104. data/spec/rubocop/cop/lint/end_alignment_spec.rb +0 -91
  105. data/spec/rubocop/cop/lint/end_in_method_spec.rb +0 -29
  106. data/spec/rubocop/cop/lint/ensure_return_spec.rb +0 -39
  107. data/spec/rubocop/cop/lint/eval_spec.rb +0 -33
  108. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +0 -30
  109. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +0 -33
  110. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +0 -172
  111. data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +0 -31
  112. data/spec/rubocop/cop/lint/loop_spec.rb +0 -27
  113. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +0 -57
  114. data/spec/rubocop/cop/lint/require_parentheses_spec.rb +0 -82
  115. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +0 -123
  116. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +0 -237
  117. data/spec/rubocop/cop/lint/space_before_first_arg_spec.rb +0 -66
  118. data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +0 -51
  119. data/spec/rubocop/cop/lint/syntax_spec.rb +0 -34
  120. data/spec/rubocop/cop/lint/underscore_prefixed_variable_name_spec.rb +0 -179
  121. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +0 -63
  122. data/spec/rubocop/cop/lint/unused_block_argument_spec.rb +0 -231
  123. data/spec/rubocop/cop/lint/unused_method_argument_spec.rb +0 -278
  124. data/spec/rubocop/cop/lint/useless_access_modifier_spec.rb +0 -192
  125. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +0 -1778
  126. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +0 -30
  127. data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +0 -48
  128. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +0 -211
  129. data/spec/rubocop/cop/lint/void_spec.rb +0 -64
  130. data/spec/rubocop/cop/metrics/abc_size_spec.rb +0 -109
  131. data/spec/rubocop/cop/metrics/block_nesting_spec.rb +0 -156
  132. data/spec/rubocop/cop/metrics/class_length_spec.rb +0 -131
  133. data/spec/rubocop/cop/metrics/cyclomatic_complexity_spec.rb +0 -204
  134. data/spec/rubocop/cop/metrics/line_length_spec.rb +0 -136
  135. data/spec/rubocop/cop/metrics/method_length_spec.rb +0 -147
  136. data/spec/rubocop/cop/metrics/parameter_lists_spec.rb +0 -44
  137. data/spec/rubocop/cop/metrics/perceived_complexity_spec.rb +0 -222
  138. data/spec/rubocop/cop/offense_spec.rb +0 -133
  139. data/spec/rubocop/cop/rails/action_filter_spec.rb +0 -64
  140. data/spec/rubocop/cop/rails/default_scope_spec.rb +0 -37
  141. data/spec/rubocop/cop/rails/delegate_spec.rb +0 -177
  142. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +0 -13
  143. data/spec/rubocop/cop/rails/output_spec.rb +0 -37
  144. data/spec/rubocop/cop/rails/read_write_attribute_spec.rb +0 -130
  145. data/spec/rubocop/cop/rails/scope_args_spec.rb +0 -25
  146. data/spec/rubocop/cop/rails/validation_spec.rb +0 -28
  147. data/spec/rubocop/cop/severity_spec.rb +0 -113
  148. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +0 -421
  149. data/spec/rubocop/cop/style/accessor_method_name_spec.rb +0 -81
  150. data/spec/rubocop/cop/style/alias_spec.rb +0 -59
  151. data/spec/rubocop/cop/style/align_array_spec.rb +0 -123
  152. data/spec/rubocop/cop/style/align_hash_spec.rb +0 -411
  153. data/spec/rubocop/cop/style/align_parameters_spec.rb +0 -431
  154. data/spec/rubocop/cop/style/and_or_spec.rb +0 -235
  155. data/spec/rubocop/cop/style/array_join_spec.rb +0 -29
  156. data/spec/rubocop/cop/style/ascii_comments_spec.rb +0 -21
  157. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +0 -36
  158. data/spec/rubocop/cop/style/attr_spec.rb +0 -29
  159. data/spec/rubocop/cop/style/bare_percent_literals_spec.rb +0 -132
  160. data/spec/rubocop/cop/style/begin_block_spec.rb +0 -13
  161. data/spec/rubocop/cop/style/block_comments_spec.rb +0 -45
  162. data/spec/rubocop/cop/style/block_end_newline_spec.rb +0 -61
  163. data/spec/rubocop/cop/style/blocks_spec.rb +0 -121
  164. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +0 -288
  165. data/spec/rubocop/cop/style/case_equality_spec.rb +0 -13
  166. data/spec/rubocop/cop/style/case_indentation_spec.rb +0 -293
  167. data/spec/rubocop/cop/style/character_literal_spec.rb +0 -37
  168. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +0 -40
  169. data/spec/rubocop/cop/style/class_and_module_children_spec.rb +0 -133
  170. data/spec/rubocop/cop/style/class_check_spec.rb +0 -41
  171. data/spec/rubocop/cop/style/class_methods_spec.rb +0 -80
  172. data/spec/rubocop/cop/style/class_vars_spec.rb +0 -19
  173. data/spec/rubocop/cop/style/collection_methods_spec.rb +0 -48
  174. data/spec/rubocop/cop/style/colon_method_call_spec.rb +0 -65
  175. data/spec/rubocop/cop/style/comment_annotation_spec.rb +0 -86
  176. data/spec/rubocop/cop/style/comment_indentation_spec.rb +0 -179
  177. data/spec/rubocop/cop/style/constant_name_spec.rb +0 -65
  178. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +0 -43
  179. data/spec/rubocop/cop/style/deprecated_hash_methods_spec.rb +0 -45
  180. data/spec/rubocop/cop/style/documentation_spec.rb +0 -146
  181. data/spec/rubocop/cop/style/dot_position_spec.rb +0 -132
  182. data/spec/rubocop/cop/style/double_negation_spec.rb +0 -22
  183. data/spec/rubocop/cop/style/each_with_object_spec.rb +0 -73
  184. data/spec/rubocop/cop/style/else_alignment_spec.rb +0 -506
  185. data/spec/rubocop/cop/style/empty_else_spec.rb +0 -100
  186. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +0 -135
  187. data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +0 -178
  188. data/spec/rubocop/cop/style/empty_lines_around_block_body_spec.rb +0 -103
  189. data/spec/rubocop/cop/style/empty_lines_around_class_body_spec.rb +0 -135
  190. data/spec/rubocop/cop/style/empty_lines_around_method_body_spec.rb +0 -90
  191. data/spec/rubocop/cop/style/empty_lines_around_module_body_spec.rb +0 -79
  192. data/spec/rubocop/cop/style/empty_lines_spec.rb +0 -51
  193. data/spec/rubocop/cop/style/empty_literal_spec.rb +0 -117
  194. data/spec/rubocop/cop/style/encoding_spec.rb +0 -139
  195. data/spec/rubocop/cop/style/end_block_spec.rb +0 -13
  196. data/spec/rubocop/cop/style/end_of_line_spec.rb +0 -65
  197. data/spec/rubocop/cop/style/even_odd_spec.rb +0 -164
  198. data/spec/rubocop/cop/style/extra_spacing_spec.rb +0 -68
  199. data/spec/rubocop/cop/style/file_name_spec.rb +0 -84
  200. data/spec/rubocop/cop/style/first_parameter_indentation_spec.rb +0 -304
  201. data/spec/rubocop/cop/style/flip_flop_spec.rb +0 -23
  202. data/spec/rubocop/cop/style/for_spec.rb +0 -105
  203. data/spec/rubocop/cop/style/format_string_spec.rb +0 -184
  204. data/spec/rubocop/cop/style/global_vars_spec.rb +0 -34
  205. data/spec/rubocop/cop/style/guard_clause_spec.rb +0 -172
  206. data/spec/rubocop/cop/style/hash_syntax_spec.rb +0 -137
  207. data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +0 -146
  208. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +0 -24
  209. data/spec/rubocop/cop/style/indent_array_spec.rb +0 -173
  210. data/spec/rubocop/cop/style/indent_hash_spec.rb +0 -367
  211. data/spec/rubocop/cop/style/indentation_consistency_spec.rb +0 -509
  212. data/spec/rubocop/cop/style/indentation_width_spec.rb +0 -885
  213. data/spec/rubocop/cop/style/infinite_loop_spec.rb +0 -48
  214. data/spec/rubocop/cop/style/inline_comment_spec.rb +0 -13
  215. data/spec/rubocop/cop/style/lambda_call_spec.rb +0 -65
  216. data/spec/rubocop/cop/style/lambda_spec.rb +0 -76
  217. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +0 -64
  218. data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +0 -184
  219. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +0 -59
  220. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +0 -60
  221. data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +0 -108
  222. data/spec/rubocop/cop/style/method_name_spec.rb +0 -125
  223. data/spec/rubocop/cop/style/module_function_spec.rb +0 -24
  224. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +0 -78
  225. data/spec/rubocop/cop/style/multiline_block_layout_spec.rb +0 -199
  226. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +0 -134
  227. data/spec/rubocop/cop/style/multiline_operation_indentation_spec.rb +0 -464
  228. data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +0 -18
  229. data/spec/rubocop/cop/style/negated_if_spec.rb +0 -102
  230. data/spec/rubocop/cop/style/negated_while_spec.rb +0 -64
  231. data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +0 -21
  232. data/spec/rubocop/cop/style/next_spec.rb +0 -301
  233. data/spec/rubocop/cop/style/nil_comparison_spec.rb +0 -29
  234. data/spec/rubocop/cop/style/non_nil_check_spec.rb +0 -132
  235. data/spec/rubocop/cop/style/not_spec.rb +0 -28
  236. data/spec/rubocop/cop/style/numeric_literals_spec.rb +0 -80
  237. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +0 -13
  238. data/spec/rubocop/cop/style/op_method_spec.rb +0 -85
  239. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +0 -161
  240. data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +0 -316
  241. data/spec/rubocop/cop/style/percent_q_literals_spec.rb +0 -122
  242. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +0 -22
  243. data/spec/rubocop/cop/style/predicate_name_spec.rb +0 -57
  244. data/spec/rubocop/cop/style/proc_spec.rb +0 -27
  245. data/spec/rubocop/cop/style/raise_args_spec.rb +0 -87
  246. data/spec/rubocop/cop/style/redundant_begin_spec.rb +0 -121
  247. data/spec/rubocop/cop/style/redundant_exception_spec.rb +0 -59
  248. data/spec/rubocop/cop/style/redundant_return_spec.rb +0 -171
  249. data/spec/rubocop/cop/style/redundant_self_spec.rb +0 -186
  250. data/spec/rubocop/cop/style/regexp_literal_spec.rb +0 -188
  251. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +0 -116
  252. data/spec/rubocop/cop/style/self_assignment_spec.rb +0 -49
  253. data/spec/rubocop/cop/style/semicolon_spec.rb +0 -114
  254. data/spec/rubocop/cop/style/signal_exception_spec.rb +0 -289
  255. data/spec/rubocop/cop/style/single_line_block_params_spec.rb +0 -82
  256. data/spec/rubocop/cop/style/single_line_methods_spec.rb +0 -94
  257. data/spec/rubocop/cop/style/single_space_before_first_arg_spec.rb +0 -63
  258. data/spec/rubocop/cop/style/space_after_colon_spec.rb +0 -55
  259. data/spec/rubocop/cop/style/space_after_comma_spec.rb +0 -30
  260. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +0 -84
  261. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +0 -70
  262. data/spec/rubocop/cop/style/space_after_not_spec.rb +0 -22
  263. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +0 -23
  264. data/spec/rubocop/cop/style/space_around_block_parameters_spec.rb +0 -155
  265. data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +0 -95
  266. data/spec/rubocop/cop/style/space_around_operators_spec.rb +0 -330
  267. data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +0 -73
  268. data/spec/rubocop/cop/style/space_before_comma_spec.rb +0 -42
  269. data/spec/rubocop/cop/style/space_before_comment_spec.rb +0 -34
  270. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +0 -70
  271. data/spec/rubocop/cop/style/space_before_semicolon_spec.rb +0 -28
  272. data/spec/rubocop/cop/style/space_inside_block_braces_spec.rb +0 -317
  273. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +0 -83
  274. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +0 -147
  275. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +0 -44
  276. data/spec/rubocop/cop/style/space_inside_range_literal_spec.rb +0 -64
  277. data/spec/rubocop/cop/style/special_global_vars_spec.rb +0 -62
  278. data/spec/rubocop/cop/style/string_literals_in_interpolation_spec.rb +0 -99
  279. data/spec/rubocop/cop/style/string_literals_spec.rb +0 -228
  280. data/spec/rubocop/cop/style/struct_inheritance_spec.rb +0 -44
  281. data/spec/rubocop/cop/style/symbol_array_spec.rb +0 -37
  282. data/spec/rubocop/cop/style/symbol_proc_spec.rb +0 -100
  283. data/spec/rubocop/cop/style/tab_spec.rb +0 -47
  284. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +0 -83
  285. data/spec/rubocop/cop/style/trailing_comma_spec.rb +0 -390
  286. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +0 -31
  287. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +0 -558
  288. data/spec/rubocop/cop/style/unless_else_spec.rb +0 -23
  289. data/spec/rubocop/cop/style/unneeded_capital_w_spec.rb +0 -90
  290. data/spec/rubocop/cop/style/unneeded_percent_q_spec.rb +0 -127
  291. data/spec/rubocop/cop/style/unneeded_percent_x_spec.rb +0 -34
  292. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +0 -76
  293. data/spec/rubocop/cop/style/variable_name_spec.rb +0 -107
  294. data/spec/rubocop/cop/style/when_then_spec.rb +0 -42
  295. data/spec/rubocop/cop/style/while_until_do_spec.rb +0 -55
  296. data/spec/rubocop/cop/style/while_until_modifier_spec.rb +0 -93
  297. data/spec/rubocop/cop/style/word_array_spec.rb +0 -117
  298. data/spec/rubocop/cop/team_spec.rb +0 -190
  299. data/spec/rubocop/cop/util_spec.rb +0 -102
  300. data/spec/rubocop/cop/variable_force/assignment_spec.rb +0 -200
  301. data/spec/rubocop/cop/variable_force/locatable_spec.rb +0 -699
  302. data/spec/rubocop/cop/variable_force/reference_spec.rb +0 -19
  303. data/spec/rubocop/cop/variable_force/scope_spec.rb +0 -319
  304. data/spec/rubocop/cop/variable_force/variable_spec.rb +0 -59
  305. data/spec/rubocop/cop/variable_force/variable_table_spec.rb +0 -276
  306. data/spec/rubocop/cop/variable_force_spec.rb +0 -26
  307. data/spec/rubocop/formatter/base_formatter_spec.rb +0 -191
  308. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +0 -114
  309. data/spec/rubocop/formatter/colorizable_spec.rb +0 -107
  310. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +0 -50
  311. data/spec/rubocop/formatter/disabled_lines_formatter_spec.rb +0 -67
  312. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +0 -63
  313. data/spec/rubocop/formatter/file_list_formatter_spec.rb +0 -33
  314. data/spec/rubocop/formatter/formatter_set_spec.rb +0 -141
  315. data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +0 -129
  316. data/spec/rubocop/formatter/html_formatter_spec.rb +0 -48
  317. data/spec/rubocop/formatter/json_formatter_spec.rb +0 -152
  318. data/spec/rubocop/formatter/offense_count_formatter_spec.rb +0 -75
  319. data/spec/rubocop/formatter/progress_formatter_spec.rb +0 -182
  320. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +0 -135
  321. data/spec/rubocop/formatter/text_util_spec.rb +0 -55
  322. data/spec/rubocop/options_spec.rb +0 -181
  323. data/spec/rubocop/path_util_spec.rb +0 -77
  324. data/spec/rubocop/processed_source_spec.rb +0 -184
  325. data/spec/rubocop/rake_task_spec.rb +0 -122
  326. data/spec/rubocop/runner_spec.rb +0 -99
  327. data/spec/rubocop/string_util_spec.rb +0 -46
  328. data/spec/rubocop/target_finder_spec.rb +0 -245
  329. data/spec/rubocop/token_spec.rb +0 -29
  330. data/spec/spec_helper.rb +0 -39
  331. data/spec/support/cop_helper.rb +0 -75
  332. data/spec/support/cops/class_must_be_a_module_cop.rb +0 -19
  333. data/spec/support/cops/module_must_be_a_class_cop.rb +0 -19
  334. data/spec/support/coverage.rb +0 -15
  335. data/spec/support/custom_matchers.rb +0 -58
  336. data/spec/support/file_helper.rb +0 -23
  337. data/spec/support/jruby_workaround.rb +0 -15
  338. data/spec/support/mri_syntax_checker.rb +0 -73
  339. data/spec/support/shared_contexts.rb +0 -53
  340. data/spec/support/shared_examples.rb +0 -55
  341. data/spec/support/statement_modifier_helper.rb +0 -41
@@ -1,132 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::DotPosition, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'Leading dots style' do
9
- let(:cop_config) { { 'EnforcedStyle' => 'leading' } }
10
-
11
- it 'registers an offense for trailing dot in multi-line call' do
12
- inspect_source(cop, ['something.',
13
- ' method_name'])
14
- expect(cop.offenses.size).to eq(1)
15
- expect(cop.highlights).to eq(['.'])
16
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'trailing')
17
- end
18
-
19
- it 'registers an offense for correct + opposite' do
20
- inspect_source(cop, ['something',
21
- ' .method_name',
22
- 'something.',
23
- ' method_name'])
24
- expect(cop.offenses.size).to eq(1)
25
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
26
- end
27
-
28
- it 'accepts leading do in multi-line method call' do
29
- inspect_source(cop, ['something',
30
- ' .method_name'])
31
- expect(cop.offenses).to be_empty
32
- end
33
-
34
- it 'does not err on method call with no dots' do
35
- inspect_source(cop, 'puts something')
36
- expect(cop.offenses).to be_empty
37
- end
38
-
39
- it 'does not err on method call without a method name' do
40
- inspect_source(cop, ['l.',
41
- '(1)'])
42
- expect(cop.offenses.size).to eq(1)
43
- end
44
-
45
- it 'does not err on method call on same line' do
46
- inspect_source(cop, 'something.method_name')
47
- expect(cop.offenses).to be_empty
48
- end
49
-
50
- it 'auto-corrects trailing dot in multi-line call' do
51
- new_source = autocorrect_source(cop, ['something.',
52
- ' method_name'])
53
- expect(new_source).to eq(['something',
54
- ' .method_name'].join("\n"))
55
- end
56
-
57
- it 'auto-corrects trailing dot in multi-line call without selector' do
58
- new_source = autocorrect_source(cop, ['something.',
59
- ' (1)'])
60
- expect(new_source).to eq(['something',
61
- ' .(1)'].join("\n"))
62
- end
63
-
64
- it 'auto-corrects correct + opposite style' do
65
- new_source = autocorrect_source(cop, ['something',
66
- ' .method_name',
67
- 'something.',
68
- ' method_name'])
69
- expect(new_source).to eq(['something',
70
- ' .method_name',
71
- 'something',
72
- ' .method_name'].join("\n"))
73
- end
74
- end
75
-
76
- context 'Trailing dots style' do
77
- let(:cop_config) { { 'EnforcedStyle' => 'trailing' } }
78
-
79
- it 'registers an offense for leading dot in multi-line call' do
80
- inspect_source(cop, ['something',
81
- ' .method_name'])
82
- expect(cop.messages)
83
- .to eq(['Place the . on the previous line, together with the method ' \
84
- 'call receiver.'])
85
- expect(cop.highlights).to eq(['.'])
86
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'leading')
87
- end
88
-
89
- it 'accepts trailing dot in multi-line method call' do
90
- inspect_source(cop, ['something.',
91
- ' method_name'])
92
- expect(cop.offenses).to be_empty
93
- end
94
-
95
- it 'does not err on method call with no dots' do
96
- inspect_source(cop, 'puts something')
97
- expect(cop.offenses).to be_empty
98
- end
99
-
100
- it 'does not err on method call without a method name' do
101
- inspect_source(cop, ['l',
102
- '.(1)'])
103
- expect(cop.offenses.size).to eq(1)
104
- end
105
-
106
- it 'does not err on method call on same line' do
107
- inspect_source(cop, 'something.method_name')
108
- expect(cop.offenses).to be_empty
109
- end
110
-
111
- it 'does not get confused by several lines of chained methods' do
112
- inspect_source(cop, ['File.new(something).',
113
- 'readlines.map.',
114
- 'compact.join("\n")'])
115
- expect(cop.offenses).to be_empty
116
- end
117
-
118
- it 'auto-corrects leading dot in multi-line call' do
119
- new_source = autocorrect_source(cop, ['something',
120
- ' .method_name'])
121
- expect(new_source).to eq(['something.',
122
- ' method_name'].join("\n"))
123
- end
124
-
125
- it 'auto-corrects leading dot in multi-line call without selector' do
126
- new_source = autocorrect_source(cop, ['something',
127
- ' .(1)'])
128
- expect(new_source).to eq(['something.',
129
- ' (1)'].join("\n"))
130
- end
131
- end
132
- end
@@ -1,22 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::DoubleNegation do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for !!' do
9
- inspect_source(cop, '!!test.something')
10
- expect(cop.offenses.size).to eq(1)
11
- end
12
-
13
- it 'does not register an offense for !' do
14
- inspect_source(cop, '!test.something')
15
- expect(cop.offenses).to be_empty
16
- end
17
-
18
- it 'does not register an offense for not not' do
19
- inspect_source(cop, 'not not test.something')
20
- expect(cop.offenses).to be_empty
21
- end
22
- end
@@ -1,73 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::EachWithObject do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'finds inject and reduce with passed in and returned hash' do
9
- inspect_source(cop,
10
- ['[].inject({}) { |a, e| a }',
11
- '',
12
- '[].reduce({}) do |a, e|',
13
- ' a[e] = 1',
14
- ' a[e] = 1',
15
- ' a',
16
- 'end'])
17
- expect(cop.offenses.size).to eq(2)
18
- expect(cop.offenses.map(&:line).sort).to eq([1, 3])
19
- expect(cop.messages)
20
- .to eq(['Use `each_with_object` instead of `inject`.',
21
- 'Use `each_with_object` instead of `reduce`.'])
22
- expect(cop.highlights).to eq(%w(inject reduce))
23
- end
24
-
25
- it 'ignores inject and reduce with passed in, but not returned hash' do
26
- inspect_source(cop,
27
- ['[].inject({}) do |a, e|',
28
- ' a + e',
29
- 'end',
30
- '',
31
- '[].reduce({}) do |a, e|',
32
- ' my_method e, a',
33
- 'end'])
34
- expect(cop.offenses).to be_empty
35
- end
36
-
37
- it 'ignores inject and reduce with empty body' do
38
- inspect_source(cop,
39
- ['[].inject({}) do |a, e|',
40
- 'end',
41
- '',
42
- '[].reduce({}) { |a, e| }'])
43
- expect(cop.offenses).to be_empty
44
- end
45
-
46
- it 'ignores inject and reduce with condition as body' do
47
- inspect_source(cop,
48
- ['[].inject({}) do |a, e|',
49
- ' a = e if e',
50
- 'end',
51
- '',
52
- '[].inject({}) do |a, e|',
53
- ' if e',
54
- ' a = e',
55
- ' end',
56
- 'end',
57
- '',
58
- '[].reduce({}) do |a, e|',
59
- ' a = e ? e : 2',
60
- 'end'])
61
- expect(cop.offenses).to be_empty
62
- end
63
-
64
- it 'ignores inject and reduce passed in symbol' do
65
- inspect_source(cop, '[].inject(:+)', '[].reduce(:+)')
66
- expect(cop.offenses).to be_empty
67
- end
68
-
69
- it 'does not blow up for reduce with no arguments' do
70
- inspect_source(cop, '[1, 2, 3].inject { |a, e| a + e }')
71
- expect(cop.offenses).to be_empty
72
- end
73
- end
@@ -1,506 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::ElseAlignment do
6
- subject(:cop) { described_class.new(config) }
7
- let(:config) do
8
- RuboCop::Config.new('Lint/EndAlignment' => end_alignment_config)
9
- end
10
- let(:end_alignment_config) do
11
- { 'Enabled' => true, 'AlignWith' => 'variable' }
12
- end
13
-
14
- it 'accepts a ternary if' do
15
- inspect_source(cop, 'cond ? func1 : func2')
16
- expect(cop.offenses).to be_empty
17
- end
18
-
19
- context 'with if statement' do
20
- it 'registers an offense for misaligned else' do
21
- inspect_source(cop,
22
- ['if cond',
23
- ' func1',
24
- ' else',
25
- ' func2',
26
- 'end'])
27
- expect(cop.messages).to eq(['Align `else` with `if`.'])
28
- expect(cop.highlights).to eq(['else'])
29
- end
30
-
31
- it 'registers an offense for misaligned elsif' do
32
- inspect_source(cop,
33
- [' if a1',
34
- ' b1',
35
- 'elsif a2',
36
- ' b2',
37
- ' end'])
38
- expect(cop.messages).to eq(['Align `elsif` with `if`.'])
39
- expect(cop.highlights).to eq(['elsif'])
40
- end
41
-
42
- describe '#autocorrect' do
43
- it 'corrects bad alignment' do
44
- corrected = autocorrect_source(cop,
45
- [' if a1',
46
- ' b1',
47
- ' elsif a2',
48
- ' b2',
49
- 'else',
50
- ' c',
51
- ' end'])
52
- expect(cop.messages).to eq(['Align `elsif` with `if`.',
53
- 'Align `else` with `if`.'])
54
- expect(corrected)
55
- .to eq [' if a1',
56
- ' b1',
57
- ' elsif a2',
58
- ' b2',
59
- ' else',
60
- ' c',
61
- ' end'].join("\n")
62
- end
63
- end
64
-
65
- it 'accepts a one line if statement' do
66
- inspect_source(cop, 'if cond then func1 else func2 end')
67
- expect(cop.offenses).to be_empty
68
- end
69
-
70
- it 'accepts a correctly aligned if/elsif/else/end' do
71
- inspect_source(cop,
72
- ['if a1',
73
- ' b1',
74
- 'elsif a2',
75
- ' b2',
76
- 'else',
77
- ' c',
78
- 'end'])
79
- expect(cop.offenses).to be_empty
80
- end
81
-
82
- context 'with assignment' do
83
- context 'when alignment style is variable' do
84
- context 'and end is aligned with variable' do
85
- it 'accepts an if-else with end aligned with setter' do
86
- inspect_source(cop,
87
- ['foo.bar = if baz',
88
- ' derp1',
89
- 'else',
90
- ' derp2',
91
- 'end'])
92
- expect(cop.offenses).to be_empty
93
- end
94
-
95
- it 'accepts an if-elsif-else with end aligned with setter' do
96
- inspect_source(cop,
97
- ['foo.bar = if baz',
98
- ' derp1',
99
- 'elsif meh',
100
- ' derp2',
101
- 'else',
102
- ' derp3',
103
- 'end'])
104
- expect(cop.offenses).to be_empty
105
- end
106
-
107
- it 'accepts an if with end aligned with element assignment' do
108
- inspect_source(cop,
109
- ['foo[bar] = if baz',
110
- ' derp',
111
- 'end'])
112
- expect(cop.offenses).to be_empty
113
- end
114
-
115
- it 'accepts an if/else' do
116
- inspect_source(cop,
117
- ['var = if a',
118
- ' 0',
119
- 'else',
120
- ' 1',
121
- 'end'])
122
- expect(cop.offenses).to be_empty
123
- end
124
-
125
- it 'accepts an if/else with chaining after the end' do
126
- inspect_source(cop,
127
- ['var = if a',
128
- ' 0',
129
- 'else',
130
- ' 1',
131
- 'end.abc.join("")'])
132
- expect(cop.offenses).to be_empty
133
- end
134
-
135
- it 'accepts an if/else with chaining with a block after the end' do
136
- inspect_source(cop,
137
- ['var = if a',
138
- ' 0',
139
- 'else',
140
- ' 1',
141
- 'end.abc.tap {}'])
142
- expect(cop.offenses).to be_empty
143
- end
144
- end
145
-
146
- context 'and end is aligned with keyword' do
147
- it 'registers offenses for an if with setter' do
148
- inspect_source(cop,
149
- ['foo.bar = if baz',
150
- ' derp1',
151
- ' elsif meh',
152
- ' derp2',
153
- ' else',
154
- ' derp3',
155
- ' end'])
156
- expect(cop.messages).to eq(['Align `elsif` with `foo.bar`.',
157
- 'Align `else` with `foo.bar`.'])
158
- end
159
-
160
- it 'registers an offense for an if with element assignment' do
161
- inspect_source(cop,
162
- ['foo[bar] = if baz',
163
- ' derp1',
164
- ' else',
165
- ' derp2',
166
- ' end'])
167
- expect(cop.messages).to eq(['Align `else` with `foo[bar]`.'])
168
- end
169
-
170
- it 'registers an offense for an if' do
171
- inspect_source(cop,
172
- ['var = if a',
173
- ' 0',
174
- ' else',
175
- ' 1',
176
- ' end'])
177
- expect(cop.messages).to eq(['Align `else` with `var`.'])
178
- end
179
- end
180
- end
181
-
182
- shared_examples 'assignment and if with keyword alignment' do
183
- context 'and end is aligned with variable' do
184
- it 'registers an offense for an if' do
185
- inspect_source(cop,
186
- ['var = if a',
187
- ' 0',
188
- 'elsif b',
189
- ' 1',
190
- 'end'])
191
- expect(cop.messages).to eq(['Align `elsif` with `if`.'])
192
- end
193
-
194
- it 'autocorrects bad alignment' do
195
- corrected = autocorrect_source(cop,
196
- ['var = if a',
197
- ' b1',
198
- 'else',
199
- ' b2',
200
- 'end'])
201
- expect(corrected).to eq ['var = if a',
202
- ' b1',
203
- ' else',
204
- ' b2',
205
- 'end'].join("\n")
206
- end
207
- end
208
-
209
- context 'and end is aligned with keyword' do
210
- it 'accepts an if in assignment' do
211
- inspect_source(cop,
212
- ['var = if a',
213
- ' 0',
214
- ' end'])
215
- expect(cop.offenses).to be_empty
216
- end
217
-
218
- it 'accepts an if/else in assignment' do
219
- inspect_source(cop,
220
- ['var = if a',
221
- ' 0',
222
- ' else',
223
- ' 1',
224
- ' end'])
225
- expect(cop.offenses).to be_empty
226
- end
227
-
228
- it 'accepts an if/else in assignment on next line' do
229
- inspect_source(cop,
230
- ['var =',
231
- ' if a',
232
- ' 0',
233
- ' else',
234
- ' 1',
235
- ' end'])
236
- expect(cop.offenses).to be_empty
237
- end
238
-
239
- it 'accepts a while in assignment' do
240
- inspect_source(cop,
241
- ['var = while a',
242
- ' b',
243
- ' end'])
244
- expect(cop.offenses).to be_empty
245
- end
246
-
247
- it 'accepts an until in assignment' do
248
- inspect_source(cop,
249
- ['var = until a',
250
- ' b',
251
- ' end'])
252
- expect(cop.offenses).to be_empty
253
- end
254
- end
255
- end
256
-
257
- context 'when alignment style is keyword by choice' do
258
- let(:end_alignment_config) do
259
- { 'Enabled' => true, 'AlignWith' => 'keyword' }
260
- end
261
-
262
- include_examples 'assignment and if with keyword alignment'
263
- end
264
-
265
- context 'when alignment style is keyword by default' do
266
- let(:end_alignment_config) do
267
- { 'Enabled' => false, 'AlignWith' => 'variable' }
268
- end
269
-
270
- include_examples 'assignment and if with keyword alignment'
271
- end
272
- end
273
-
274
- it 'accepts an if/else branches with rescue clauses' do
275
- # Because of how the rescue clauses come out of Parser, these are
276
- # special and need to be tested.
277
- inspect_source(cop,
278
- ['if a',
279
- ' a rescue nil',
280
- 'else',
281
- ' a rescue nil',
282
- 'end'])
283
- expect(cop.offenses).to be_empty
284
- end
285
- end
286
-
287
- context 'with unless' do
288
- it 'registers an offense for misaligned else' do
289
- inspect_source(cop,
290
- ['unless cond',
291
- ' func1',
292
- ' else',
293
- ' func2',
294
- 'end'])
295
- expect(cop.messages).to eq(['Align `else` with `unless`.'])
296
- end
297
-
298
- it 'accepts a correctly aligned else in an otherwise empty unless' do
299
- inspect_source(cop,
300
- ['unless a',
301
- 'else',
302
- 'end'])
303
- expect(cop.offenses).to be_empty
304
- end
305
-
306
- it 'accepts an empty unless' do
307
- inspect_source(cop,
308
- ['unless a',
309
- 'end'])
310
- expect(cop.offenses).to be_empty
311
- end
312
- end
313
-
314
- context 'with case' do
315
- it 'registers an offense for misaligned else' do
316
- inspect_source(cop,
317
- ['case a',
318
- 'when b',
319
- ' c',
320
- 'when d',
321
- ' e',
322
- ' else',
323
- ' f',
324
- 'end'])
325
- expect(cop.messages).to eq(['Align `else` with `when`.'])
326
- end
327
-
328
- it 'accepts correctly aligned case/when/else' do
329
- inspect_source(cop,
330
- ['case a',
331
- 'when b',
332
- ' c',
333
- ' c',
334
- 'when d',
335
- 'else',
336
- ' f',
337
- 'end'])
338
- expect(cop.offenses).to be_empty
339
- end
340
-
341
- it 'accepts case without else' do
342
- inspect_source(cop,
343
- ['case superclass',
344
- 'when /\A(#{NAMESPACEMATCH})(?:\s|\Z)/',
345
- ' $1',
346
- 'when "self"',
347
- ' namespace.path',
348
- 'end'])
349
- expect(cop.offenses).to be_empty
350
- end
351
-
352
- it 'accepts else aligned with when but not with case' do
353
- # "Indent when as deep as case" is the job of another cop, and this is
354
- # one of the possible styles supported by configuration.
355
- inspect_source(cop,
356
- ['case code_type',
357
- " when 'ruby', 'sql', 'plain'",
358
- ' code_type',
359
- " when 'erb'",
360
- " 'ruby; html-script: true'",
361
- ' when "html"',
362
- " 'xml'",
363
- ' else',
364
- " 'plain'",
365
- 'end'])
366
- expect(cop.offenses).to be_empty
367
- end
368
- end
369
-
370
- context 'with def/defs' do
371
- it 'accepts an empty def body' do
372
- inspect_source(cop,
373
- ['def test',
374
- 'end'])
375
- expect(cop.offenses).to be_empty
376
- end
377
-
378
- it 'accepts an empty defs body' do
379
- inspect_source(cop,
380
- ['def self.test',
381
- 'end'])
382
- expect(cop.offenses).to be_empty
383
- end
384
-
385
- if RUBY_VERSION >= '2.1'
386
- context 'when modifier and def are on the same line' do
387
- it 'accepts a correctly aligned body' do
388
- inspect_source(cop,
389
- ['private def test',
390
- ' something',
391
- 'rescue',
392
- ' handling',
393
- 'else',
394
- ' something_else',
395
- 'end'])
396
- expect(cop.offenses).to be_empty
397
- end
398
-
399
- it 'registers an offense for else not aligned with private' do
400
- inspect_source(cop,
401
- ['private def test',
402
- ' something',
403
- ' rescue',
404
- ' handling',
405
- ' else',
406
- ' something_else',
407
- ' end'])
408
- expect(cop.messages).to eq(['Align `else` with `private`.'])
409
- end
410
- end
411
- end
412
- end
413
-
414
- context 'with begin/rescue/else/ensure/end' do
415
- it 'registers an offense for misaligned else' do
416
- inspect_source(cop,
417
- ['def my_func',
418
- " puts 'do something outside block'",
419
- ' begin',
420
- " puts 'do something error prone'",
421
- ' rescue SomeException, SomeOther => e',
422
- " puts 'wrongly intended error handling'",
423
- ' rescue',
424
- " puts 'wrongly intended error handling'",
425
- 'else',
426
- " puts 'wrongly intended normal case handling'",
427
- ' ensure',
428
- " puts 'wrongly intended common handling'",
429
- ' end',
430
- 'end'])
431
- expect(cop.messages).to eq(['Align `else` with `begin`.'])
432
- end
433
-
434
- it 'accepts a correctly aligned else' do
435
- inspect_source(cop,
436
- ['begin',
437
- " raise StandardError.new('Fail') if rand(2).odd?",
438
- 'rescue StandardError => error',
439
- ' $stderr.puts error.message',
440
- 'else',
441
- " $stdout.puts 'Lucky you!'",
442
- 'end'])
443
- expect(cop.offenses).to be_empty
444
- end
445
- end
446
-
447
- context 'with def/rescue/else/ensure/end' do
448
- it 'accepts a correctly aligned else' do
449
- inspect_source(cop,
450
- ['def my_func(string)',
451
- ' puts string',
452
- 'rescue => e',
453
- ' puts e',
454
- 'else',
455
- ' puts e',
456
- 'ensure',
457
- " puts 'I love methods that print'",
458
- 'end'])
459
- expect(cop.offenses).to be_empty
460
- end
461
-
462
- it 'registers an offense for misaligned else' do
463
- inspect_source(cop,
464
- ['def my_func(string)',
465
- ' puts string',
466
- 'rescue => e',
467
- ' puts e',
468
- ' else',
469
- ' puts e',
470
- 'ensure',
471
- " puts 'I love methods that print'",
472
- 'end'])
473
- expect(cop.messages).to eq(['Align `else` with `def`.'])
474
- end
475
- end
476
-
477
- context 'with def/rescue/else/end' do
478
- it 'accepts a correctly aligned else' do
479
- inspect_source(cop,
480
- ['def my_func',
481
- " puts 'do something error prone'",
482
- 'rescue SomeException',
483
- " puts 'error handling'",
484
- 'rescue',
485
- " puts 'error handling'",
486
- 'else',
487
- " puts 'normal handling'",
488
- 'end'])
489
- expect(cop.messages).to be_empty
490
- end
491
-
492
- it 'registers an offense for misaligned else' do
493
- inspect_source(cop,
494
- ['def my_func',
495
- " puts 'do something error prone'",
496
- 'rescue SomeException',
497
- " puts 'error handling'",
498
- 'rescue',
499
- " puts 'error handling'",
500
- ' else',
501
- " puts 'normal handling'",
502
- 'end'])
503
- expect(cop.messages).to eq(['Align `else` with `def`.'])
504
- end
505
- end
506
- end