rubocop 0.18.1 → 0.19.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 (398) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +65 -1
  4. data/Gemfile +0 -3
  5. data/LICENSE.txt +1 -1
  6. data/README.md +179 -77
  7. data/Rakefile +8 -0
  8. data/config/default.yml +151 -14
  9. data/config/enabled.yml +65 -8
  10. data/lib/rubocop.rb +19 -4
  11. data/lib/rubocop/cli.rb +2 -1
  12. data/lib/rubocop/comment_config.rb +97 -0
  13. data/lib/rubocop/config.rb +1 -1
  14. data/lib/rubocop/config_loader.rb +3 -2
  15. data/lib/rubocop/config_store.rb +6 -2
  16. data/lib/rubocop/cop/commissioner.rb +2 -2
  17. data/lib/rubocop/cop/cop.rb +22 -26
  18. data/lib/rubocop/cop/lint/ambiguous_operator.rb +2 -2
  19. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
  20. data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
  21. data/lib/rubocop/cop/lint/block_alignment.rb +6 -6
  22. data/lib/rubocop/cop/lint/condition_position.rb +1 -1
  23. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  24. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +60 -0
  25. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  26. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
  27. data/lib/rubocop/cop/lint/end_alignment.rb +14 -12
  28. data/lib/rubocop/cop/lint/end_in_method.rb +1 -1
  29. data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
  30. data/lib/rubocop/cop/lint/eval.rb +1 -1
  31. data/lib/rubocop/cop/lint/handle_exceptions.rb +1 -1
  32. data/lib/rubocop/cop/lint/literal_in_condition.rb +13 -2
  33. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +28 -0
  34. data/lib/rubocop/cop/lint/loop.rb +4 -4
  35. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
  36. data/lib/rubocop/cop/lint/require_parentheses.rb +6 -6
  37. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  38. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +2 -2
  39. data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +30 -0
  40. data/lib/rubocop/cop/lint/syntax.rb +5 -5
  41. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  42. data/lib/rubocop/cop/lint/useless_assignment.rb +5 -5
  43. data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
  44. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
  45. data/lib/rubocop/cop/lint/void.rb +5 -5
  46. data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +8 -5
  47. data/lib/rubocop/cop/mixin/code_length.rb +2 -2
  48. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +7 -7
  49. data/lib/rubocop/cop/mixin/configurable_max.rb +1 -1
  50. data/lib/rubocop/cop/mixin/configurable_naming.rb +1 -1
  51. data/lib/rubocop/cop/mixin/if_then_else.rb +1 -1
  52. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -1
  53. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +2 -2
  54. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +3 -2
  55. data/lib/rubocop/cop/mixin/space_inside.rb +1 -1
  56. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -0
  57. data/lib/rubocop/cop/mixin/string_help.rb +4 -4
  58. data/lib/rubocop/cop/{offence.rb → offense.rb} +7 -7
  59. data/lib/rubocop/cop/rails/action_filter.rb +73 -0
  60. data/lib/rubocop/cop/rails/default_scope.rb +1 -1
  61. data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +1 -1
  62. data/lib/rubocop/cop/rails/output.rb +1 -10
  63. data/lib/rubocop/cop/rails/read_attribute.rb +1 -1
  64. data/lib/rubocop/cop/rails/scope_args.rb +33 -0
  65. data/lib/rubocop/cop/rails/validation.rb +1 -1
  66. data/lib/rubocop/cop/style/access_modifier_indentation.rb +1 -1
  67. data/lib/rubocop/cop/style/accessor_method_name.rb +2 -2
  68. data/lib/rubocop/cop/style/alias.rb +2 -2
  69. data/lib/rubocop/cop/style/align_array.rb +1 -1
  70. data/lib/rubocop/cop/style/align_hash.rb +29 -2
  71. data/lib/rubocop/cop/style/align_parameters.rb +16 -2
  72. data/lib/rubocop/cop/style/and_or.rb +2 -2
  73. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  74. data/lib/rubocop/cop/style/ascii_identifiers.rb +1 -1
  75. data/lib/rubocop/cop/style/attr.rb +1 -1
  76. data/lib/rubocop/cop/style/begin_block.rb +1 -1
  77. data/lib/rubocop/cop/style/block_comments.rb +1 -1
  78. data/lib/rubocop/cop/style/block_nesting.rb +1 -1
  79. data/lib/rubocop/cop/style/blocks.rb +2 -2
  80. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +2 -2
  81. data/lib/rubocop/cop/style/case_equality.rb +1 -1
  82. data/lib/rubocop/cop/style/case_indentation.rb +2 -2
  83. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  84. data/lib/rubocop/cop/style/class_and_module_camel_case.rb +1 -1
  85. data/lib/rubocop/cop/style/class_and_module_children.rb +69 -0
  86. data/lib/rubocop/cop/style/class_methods.rb +1 -1
  87. data/lib/rubocop/cop/style/class_vars.rb +3 -3
  88. data/lib/rubocop/cop/style/collection_methods.rb +4 -4
  89. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  90. data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
  91. data/lib/rubocop/cop/style/constant_name.rb +1 -1
  92. data/lib/rubocop/cop/style/cyclomatic_complexity.rb +2 -2
  93. data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
  94. data/lib/rubocop/cop/style/documentation.rb +1 -1
  95. data/lib/rubocop/cop/style/dot_position.rb +10 -11
  96. data/lib/rubocop/cop/style/double_negation.rb +40 -0
  97. data/lib/rubocop/cop/style/empty_line_between_defs.rb +8 -1
  98. data/lib/rubocop/cop/style/empty_lines.rb +3 -2
  99. data/lib/rubocop/cop/style/empty_lines_around_access_modifier.rb +1 -1
  100. data/lib/rubocop/cop/style/empty_lines_around_body.rb +1 -1
  101. data/lib/rubocop/cop/style/empty_literal.rb +3 -3
  102. data/lib/rubocop/cop/style/encoding.rb +1 -1
  103. data/lib/rubocop/cop/style/end_block.rb +1 -1
  104. data/lib/rubocop/cop/style/end_of_line.rb +2 -2
  105. data/lib/rubocop/cop/style/even_odd.rb +2 -2
  106. data/lib/rubocop/cop/style/favor_join.rb +1 -1
  107. data/lib/rubocop/cop/style/file_name.rb +29 -0
  108. data/lib/rubocop/cop/style/final_newline.rb +1 -1
  109. data/lib/rubocop/cop/style/flip_flop.rb +2 -2
  110. data/lib/rubocop/cop/style/for.rb +2 -2
  111. data/lib/rubocop/cop/style/format_string.rb +66 -0
  112. data/lib/rubocop/cop/style/global_vars.rb +2 -2
  113. data/lib/rubocop/cop/style/hash_methods.rb +1 -1
  114. data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
  115. data/lib/rubocop/cop/style/if_unless_modifier.rb +2 -1
  116. data/lib/rubocop/cop/style/indent_array.rb +41 -0
  117. data/lib/rubocop/cop/style/indent_hash.rb +119 -0
  118. data/lib/rubocop/cop/style/indentation_consistency.rb +3 -11
  119. data/lib/rubocop/cop/style/indentation_width.rb +44 -23
  120. data/lib/rubocop/cop/style/lambda.rb +2 -2
  121. data/lib/rubocop/cop/style/lambda_call.rb +3 -3
  122. data/lib/rubocop/cop/style/leading_comment_space.rb +1 -1
  123. data/lib/rubocop/cop/style/line_end_concatenation.rb +7 -3
  124. data/lib/rubocop/cop/style/line_length.rb +2 -2
  125. data/lib/rubocop/cop/style/method_call_parentheses.rb +2 -2
  126. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -2
  127. data/lib/rubocop/cop/style/method_def_parentheses.rb +9 -7
  128. data/lib/rubocop/cop/style/module_function.rb +1 -1
  129. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
  130. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -1
  131. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -2
  132. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  133. data/lib/rubocop/cop/style/not.rb +1 -1
  134. data/lib/rubocop/cop/style/numeric_literals.rb +5 -5
  135. data/lib/rubocop/cop/style/op_method.rb +2 -2
  136. data/lib/rubocop/cop/style/parameter_lists.rb +1 -1
  137. data/lib/rubocop/cop/style/parentheses_around_condition.rb +5 -4
  138. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +143 -0
  139. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  140. data/lib/rubocop/cop/style/predicate_name.rb +1 -1
  141. data/lib/rubocop/cop/style/proc.rb +1 -1
  142. data/lib/rubocop/cop/style/raise_args.rb +2 -2
  143. data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
  144. data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
  145. data/lib/rubocop/cop/style/redundant_return.rb +1 -1
  146. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  147. data/lib/rubocop/cop/style/regexp_literal.rb +45 -19
  148. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  149. data/lib/rubocop/cop/style/self_assignment.rb +73 -0
  150. data/lib/rubocop/cop/style/semicolon.rb +12 -8
  151. data/lib/rubocop/cop/style/signal_exception.rb +2 -2
  152. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  153. data/lib/rubocop/cop/style/single_line_methods.rb +38 -1
  154. data/lib/rubocop/cop/style/space_after_colon.rb +3 -3
  155. data/lib/rubocop/cop/style/space_after_comma.rb +1 -1
  156. data/lib/rubocop/cop/style/space_after_control_keyword.rb +1 -1
  157. data/lib/rubocop/cop/style/space_after_method_name.rb +11 -3
  158. data/lib/rubocop/cop/style/space_after_not.rb +1 -1
  159. data/lib/rubocop/cop/style/space_after_semicolon.rb +1 -1
  160. data/lib/rubocop/cop/style/space_around_equals_in_parameter_default.rb +41 -6
  161. data/lib/rubocop/cop/style/space_around_operators.rb +4 -4
  162. data/lib/rubocop/cop/style/space_before_block_braces.rb +63 -0
  163. data/lib/rubocop/cop/style/space_before_modifier_keyword.rb +1 -1
  164. data/lib/rubocop/cop/style/{space_around_block_braces.rb → space_inside_block_braces.rb} +15 -24
  165. data/lib/rubocop/cop/style/space_inside_hash_literal_braces.rb +14 -7
  166. data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
  167. data/lib/rubocop/cop/style/string_literals.rb +1 -1
  168. data/lib/rubocop/cop/style/symbol_array.rb +1 -1
  169. data/lib/rubocop/cop/style/tab.rb +1 -1
  170. data/lib/rubocop/cop/style/trailing_blank_lines.rb +2 -2
  171. data/lib/rubocop/cop/style/trailing_comma.rb +4 -4
  172. data/lib/rubocop/cop/style/trailing_whitespace.rb +1 -1
  173. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -2
  174. data/lib/rubocop/cop/style/unless_else.rb +1 -1
  175. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  176. data/lib/rubocop/cop/style/when_then.rb +1 -1
  177. data/lib/rubocop/cop/style/while_until_do.rb +1 -1
  178. data/lib/rubocop/cop/style/while_until_modifier.rb +2 -1
  179. data/lib/rubocop/cop/style/word_array.rb +2 -2
  180. data/lib/rubocop/cop/team.rb +24 -7
  181. data/lib/rubocop/cop/util.rb +3 -3
  182. data/lib/rubocop/cop/variable_inspector.rb +25 -13
  183. data/lib/rubocop/cop/variable_inspector/assignment.rb +1 -1
  184. data/lib/rubocop/cop/variable_inspector/reference.rb +1 -1
  185. data/lib/rubocop/cop/variable_inspector/scope.rb +1 -1
  186. data/lib/rubocop/cop/variable_inspector/variable.rb +2 -2
  187. data/lib/rubocop/cop/variable_inspector/variable_table.rb +1 -1
  188. data/lib/rubocop/file_inspector.rb +12 -13
  189. data/lib/rubocop/formatter/base_formatter.rb +4 -4
  190. data/lib/rubocop/formatter/clang_style_formatter.rb +2 -2
  191. data/lib/rubocop/formatter/disabled_config_formatter.rb +12 -12
  192. data/lib/rubocop/formatter/emacs_style_formatter.rb +3 -2
  193. data/lib/rubocop/formatter/file_list_formatter.rb +4 -4
  194. data/lib/rubocop/formatter/formatter_set.rb +2 -1
  195. data/lib/rubocop/formatter/fuubar_style_formatter.rb +76 -0
  196. data/lib/rubocop/formatter/json_formatter.rb +17 -16
  197. data/lib/rubocop/formatter/offense_count_formatter.rb +54 -0
  198. data/lib/rubocop/formatter/progress_formatter.rb +16 -16
  199. data/lib/rubocop/formatter/simple_text_formatter.rb +25 -25
  200. data/lib/rubocop/options.rb +8 -7
  201. data/lib/rubocop/processed_source.rb +3 -2
  202. data/lib/rubocop/source_parser.rb +1 -59
  203. data/lib/rubocop/version.rb +3 -3
  204. data/relnotes/0.19.0.md +70 -0
  205. data/rubocop-todo.yml +6 -6
  206. data/rubocop.gemspec +2 -1
  207. data/spec/rubocop/cli_spec.rb +431 -268
  208. data/spec/rubocop/comment_config_spec.rb +103 -0
  209. data/spec/rubocop/config_loader_spec.rb +4 -4
  210. data/spec/rubocop/cop/commissioner_spec.rb +7 -7
  211. data/spec/rubocop/cop/cop_spec.rb +17 -17
  212. data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +16 -16
  213. data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +5 -5
  214. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +19 -19
  215. data/spec/rubocop/cop/lint/block_alignment_spec.rb +52 -52
  216. data/spec/rubocop/cop/lint/condition_position_spec.rb +7 -7
  217. data/spec/rubocop/cop/lint/debugger_spec.rb +10 -10
  218. data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +33 -0
  219. data/spec/rubocop/cop/lint/else_layout_spec.rb +7 -7
  220. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +4 -4
  221. data/spec/rubocop/cop/lint/end_alignment_spec.rb +33 -34
  222. data/spec/rubocop/cop/lint/end_in_method_spec.rb +5 -5
  223. data/spec/rubocop/cop/lint/ensure_return_spec.rb +4 -4
  224. data/spec/rubocop/cop/lint/eval_spec.rb +8 -8
  225. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +4 -4
  226. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +3 -3
  227. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +65 -10
  228. data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +21 -0
  229. data/spec/rubocop/cop/lint/loop_spec.rb +6 -6
  230. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +14 -14
  231. data/spec/rubocop/cop/lint/require_parentheses_spec.rb +15 -15
  232. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +21 -21
  233. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +16 -16
  234. data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +27 -0
  235. data/spec/rubocop/cop/lint/syntax_spec.rb +11 -11
  236. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +8 -8
  237. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +207 -169
  238. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +5 -5
  239. data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +4 -4
  240. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +17 -17
  241. data/spec/rubocop/cop/lint/void_spec.rb +8 -8
  242. data/spec/rubocop/cop/{offence_spec.rb → offense_spec.rb} +17 -17
  243. data/spec/rubocop/cop/rails/action_filter_spec.rb +69 -0
  244. data/spec/rubocop/cop/rails/default_scope_spec.rb +9 -9
  245. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +2 -2
  246. data/spec/rubocop/cop/rails/output_spec.rb +8 -18
  247. data/spec/rubocop/cop/rails/read_attribute_spec.rb +2 -2
  248. data/spec/rubocop/cop/rails/scope_args_spec.rb +25 -0
  249. data/spec/rubocop/cop/rails/validation_spec.rb +3 -3
  250. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +38 -38
  251. data/spec/rubocop/cop/style/accessor_method_name_spec.rb +14 -14
  252. data/spec/rubocop/cop/style/alias_spec.rb +11 -11
  253. data/spec/rubocop/cop/style/align_array_spec.rb +23 -7
  254. data/spec/rubocop/cop/style/align_hash_spec.rb +111 -30
  255. data/spec/rubocop/cop/style/align_parameters_spec.rb +260 -187
  256. data/spec/rubocop/cop/style/and_or_spec.rb +6 -6
  257. data/spec/rubocop/cop/style/ascii_comments_spec.rb +3 -3
  258. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +5 -5
  259. data/spec/rubocop/cop/style/attr_spec.rb +2 -2
  260. data/spec/rubocop/cop/style/begin_block_spec.rb +2 -2
  261. data/spec/rubocop/cop/style/block_comments_spec.rb +3 -3
  262. data/spec/rubocop/cop/style/block_nesting_spec.rb +26 -26
  263. data/spec/rubocop/cop/style/blocks_spec.rb +8 -8
  264. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +8 -8
  265. data/spec/rubocop/cop/style/case_equality_spec.rb +2 -2
  266. data/spec/rubocop/cop/style/case_indentation_spec.rb +21 -21
  267. data/spec/rubocop/cop/style/character_literal_spec.rb +6 -6
  268. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +4 -4
  269. data/spec/rubocop/cop/style/class_and_module_children_spec.rb +129 -0
  270. data/spec/rubocop/cop/style/class_length_spec.rb +9 -9
  271. data/spec/rubocop/cop/style/class_methods_spec.rb +8 -8
  272. data/spec/rubocop/cop/style/class_vars_spec.rb +4 -4
  273. data/spec/rubocop/cop/style/collection_methods_spec.rb +6 -6
  274. data/spec/rubocop/cop/style/colon_method_call_spec.rb +16 -16
  275. data/spec/rubocop/cop/style/comment_annotation_spec.rb +16 -16
  276. data/spec/rubocop/cop/style/constant_name_spec.rb +12 -12
  277. data/spec/rubocop/cop/style/cyclomatic_complexity_spec.rb +16 -16
  278. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +6 -6
  279. data/spec/rubocop/cop/style/documentation_spec.rb +14 -14
  280. data/spec/rubocop/cop/style/dot_position_spec.rb +23 -26
  281. data/spec/rubocop/cop/style/double_negation_spec.rb +22 -0
  282. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +22 -14
  283. data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +4 -4
  284. data/spec/rubocop/cop/style/empty_lines_around_body_spec.rb +20 -20
  285. data/spec/rubocop/cop/style/empty_lines_spec.rb +17 -6
  286. data/spec/rubocop/cop/style/empty_literal_spec.rb +20 -20
  287. data/spec/rubocop/cop/style/encoding_spec.rb +5 -5
  288. data/spec/rubocop/cop/style/end_block_spec.rb +2 -2
  289. data/spec/rubocop/cop/style/end_of_line_spec.rb +4 -4
  290. data/spec/rubocop/cop/style/even_odd_spec.rb +18 -18
  291. data/spec/rubocop/cop/style/favor_join_spec.rb +7 -7
  292. data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +7 -7
  293. data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +3 -3
  294. data/spec/rubocop/cop/style/file_name_spec.rb +71 -0
  295. data/spec/rubocop/cop/style/final_newline_spec.rb +4 -4
  296. data/spec/rubocop/cop/style/flip_flop_spec.rb +4 -4
  297. data/spec/rubocop/cop/style/for_spec.rb +13 -13
  298. data/spec/rubocop/cop/style/format_string_spec.rb +136 -0
  299. data/spec/rubocop/cop/style/global_vars_spec.rb +7 -7
  300. data/spec/rubocop/cop/style/hash_methods_spec.rb +6 -6
  301. data/spec/rubocop/cop/style/hash_syntax_spec.rb +11 -11
  302. data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +29 -11
  303. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +1 -1
  304. data/spec/rubocop/cop/style/indent_array_spec.rb +136 -0
  305. data/spec/rubocop/cop/style/indent_hash_spec.rb +238 -0
  306. data/spec/rubocop/cop/style/indentation_consistency_spec.rb +69 -49
  307. data/spec/rubocop/cop/style/indentation_width_spec.rb +264 -128
  308. data/spec/rubocop/cop/style/lambda_call_spec.rb +14 -14
  309. data/spec/rubocop/cop/style/lambda_spec.rb +7 -7
  310. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +15 -15
  311. data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +11 -4
  312. data/spec/rubocop/cop/style/line_length_spec.rb +5 -5
  313. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +5 -5
  314. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +9 -9
  315. data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +19 -19
  316. data/spec/rubocop/cop/style/method_length_spec.rb +17 -17
  317. data/spec/rubocop/cop/style/method_name_spec.rb +21 -21
  318. data/spec/rubocop/cop/style/module_function_spec.rb +3 -3
  319. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +13 -13
  320. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +10 -10
  321. data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +3 -3
  322. data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +3 -3
  323. data/spec/rubocop/cop/style/nil_comparison_spec.rb +7 -7
  324. data/spec/rubocop/cop/style/not_spec.rb +6 -11
  325. data/spec/rubocop/cop/style/numeric_literals_spec.rb +8 -8
  326. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +1 -1
  327. data/spec/rubocop/cop/style/op_method_spec.rb +13 -13
  328. data/spec/rubocop/cop/style/parameter_lists_spec.rb +6 -6
  329. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +11 -10
  330. data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +250 -0
  331. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +2 -2
  332. data/spec/rubocop/cop/style/predicate_name_spec.rb +3 -3
  333. data/spec/rubocop/cop/style/proc_spec.rb +4 -4
  334. data/spec/rubocop/cop/style/raise_args_spec.rb +20 -20
  335. data/spec/rubocop/cop/style/redundant_begin_spec.rb +6 -6
  336. data/spec/rubocop/cop/style/redundant_exception_spec.rb +6 -6
  337. data/spec/rubocop/cop/style/redundant_return_spec.rb +22 -22
  338. data/spec/rubocop/cop/style/redundant_self_spec.rb +14 -14
  339. data/spec/rubocop/cop/style/regexp_literal_spec.rb +88 -67
  340. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +17 -17
  341. data/spec/rubocop/cop/style/self_assignment_spec.rb +43 -0
  342. data/spec/rubocop/cop/style/semicolon_spec.rb +31 -17
  343. data/spec/rubocop/cop/style/signal_exception_spec.rb +29 -29
  344. data/spec/rubocop/cop/style/single_line_block_params_spec.rb +6 -6
  345. data/spec/rubocop/cop/style/single_line_methods_spec.rb +44 -6
  346. data/spec/rubocop/cop/style/space_after_colon_spec.rb +1 -1
  347. data/spec/rubocop/cop/style/space_after_comma_spec.rb +3 -3
  348. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +12 -12
  349. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +8 -8
  350. data/spec/rubocop/cop/style/space_after_not_spec.rb +3 -3
  351. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +1 -1
  352. data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +63 -21
  353. data/spec/rubocop/cop/style/space_around_operators_spec.rb +24 -24
  354. data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +72 -0
  355. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +4 -4
  356. data/spec/rubocop/cop/style/{space_around_block_braces_spec.rb → space_inside_block_braces_spec.rb} +39 -41
  357. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +1 -1
  358. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +15 -15
  359. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +1 -1
  360. data/spec/rubocop/cop/style/special_global_vars_spec.rb +10 -10
  361. data/spec/rubocop/cop/style/string_literals_spec.rb +31 -31
  362. data/spec/rubocop/cop/style/symbol_array_spec.rb +9 -9
  363. data/spec/rubocop/cop/style/tab_spec.rb +3 -3
  364. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +3 -3
  365. data/spec/rubocop/cop/style/trailing_comma_spec.rb +32 -32
  366. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +5 -5
  367. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +39 -39
  368. data/spec/rubocop/cop/style/unless_else_spec.rb +1 -1
  369. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +12 -12
  370. data/spec/rubocop/cop/style/variable_name_spec.rb +21 -21
  371. data/spec/rubocop/cop/style/when_then_spec.rb +1 -1
  372. data/spec/rubocop/cop/style/while_until_do_spec.rb +8 -8
  373. data/spec/rubocop/cop/style/while_until_modifier_spec.rb +25 -7
  374. data/spec/rubocop/cop/style/word_array_spec.rb +23 -23
  375. data/spec/rubocop/cop/team_spec.rb +14 -14
  376. data/spec/rubocop/file_inspector_spec.rb +14 -12
  377. data/spec/rubocop/formatter/base_formatter_spec.rb +19 -19
  378. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +14 -14
  379. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +7 -7
  380. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +7 -7
  381. data/spec/rubocop/formatter/file_list_formatter_spec.rb +4 -4
  382. data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +129 -0
  383. data/spec/rubocop/formatter/json_formatter_spec.rb +23 -19
  384. data/spec/rubocop/formatter/offense_count_formatter_spec.rb +77 -0
  385. data/spec/rubocop/formatter/progress_formatter_spec.rb +27 -27
  386. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +16 -16
  387. data/spec/rubocop/options_spec.rb +7 -8
  388. data/spec/rubocop/source_parser_spec.rb +0 -54
  389. data/spec/spec_helper.rb +11 -7
  390. data/spec/support/file_helper.rb +1 -1
  391. data/spec/support/mri_syntax_checker.rb +4 -4
  392. data/spec/support/shared_examples.rb +6 -6
  393. data/spec/support/statement_modifier_helper.rb +3 -3
  394. metadata +76 -16
  395. data/lib/rubocop/cop/style/favor_sprintf.rb +0 -26
  396. data/lib/rubocop/formatter/offence_count_formatter.rb +0 -49
  397. data/spec/rubocop/cop/style/favor_sprintf_spec.rb +0 -47
  398. data/spec/rubocop/formatter/offence_count_formatter_spec.rb +0 -52
@@ -5,7 +5,7 @@ require 'spec_helper'
5
5
  describe Rubocop::Cop::Style::OneLineConditional do
6
6
  subject(:cop) { described_class.new }
7
7
 
8
- it 'registers an offence for one line if/then/end' do
8
+ it 'registers an offense for one line if/then/end' do
9
9
  inspect_source(cop, ['if cond then run else dont end'])
10
10
  expect(cop.messages).to eq(['Favor the ternary operator (?:)' \
11
11
  ' over if/then/else/end constructs.'])
@@ -5,12 +5,12 @@ require 'spec_helper'
5
5
  describe Rubocop::Cop::Style::OpMethod do
6
6
  subject(:cop) { described_class.new }
7
7
 
8
- it 'registers an offence for arg not named other' do
8
+ it 'registers an offense for arg not named other' do
9
9
  inspect_source(cop,
10
10
  ['def +(another)',
11
11
  ' another',
12
12
  'end'])
13
- expect(cop.offences.size).to eq(1)
13
+ expect(cop.offenses.size).to eq(1)
14
14
  expect(cop.messages)
15
15
  .to eq(['When defining the + operator, name its argument *other*.'])
16
16
  end
@@ -20,44 +20,44 @@ describe Rubocop::Cop::Style::OpMethod do
20
20
  ['def + another',
21
21
  ' another',
22
22
  'end'])
23
- expect(cop.offences.size).to eq(1)
23
+ expect(cop.offenses.size).to eq(1)
24
24
  expect(cop.messages)
25
25
  .to eq(['When defining the + operator, name its argument *other*.'])
26
26
  end
27
27
 
28
- it 'does not register an offence for arg named other' do
28
+ it 'does not register an offense for arg named other' do
29
29
  inspect_source(cop,
30
30
  ['def +(other)',
31
31
  ' other',
32
32
  'end'])
33
- expect(cop.offences).to be_empty
33
+ expect(cop.offenses).to be_empty
34
34
  end
35
35
 
36
- it 'does not register an offence for []' do
36
+ it 'does not register an offense for []' do
37
37
  inspect_source(cop,
38
38
  ['def [](index)',
39
39
  ' other',
40
40
  'end'])
41
- expect(cop.offences).to be_empty
41
+ expect(cop.offenses).to be_empty
42
42
  end
43
43
 
44
- it 'does not register an offence for []=' do
44
+ it 'does not register an offense for []=' do
45
45
  inspect_source(cop,
46
46
  ['def []=(index, value)',
47
47
  ' other',
48
48
  'end'])
49
- expect(cop.offences).to be_empty
49
+ expect(cop.offenses).to be_empty
50
50
  end
51
51
 
52
- it 'does not register an offence for <<' do
52
+ it 'does not register an offense for <<' do
53
53
  inspect_source(cop,
54
54
  ['def <<(cop)',
55
55
  ' other',
56
56
  'end'])
57
- expect(cop.offences).to be_empty
57
+ expect(cop.offenses).to be_empty
58
58
  end
59
59
 
60
- it 'does not register an offence for non binary operators' do
60
+ it 'does not register an offense for non binary operators' do
61
61
  inspect_source(cop,
62
62
  ['def -@', # Unary minus
63
63
  'end',
@@ -69,6 +69,6 @@ describe Rubocop::Cop::Style::OpMethod do
69
69
  '',
70
70
  'def *(a, b)', # Quite strange, but legal ruby.
71
71
  'end'])
72
- expect(cop.offences).to be_empty
72
+ expect(cop.offenses).to be_empty
73
73
  end
74
74
  end
@@ -11,24 +11,24 @@ describe Rubocop::Cop::Style::ParameterLists, :config do
11
11
  }
12
12
  end
13
13
 
14
- it 'registers an offence for a method def with 5 parameters' do
14
+ it 'registers an offense for a method def with 5 parameters' do
15
15
  inspect_source(cop, ['def meth(a, b, c, d, e)',
16
16
  'end'])
17
- expect(cop.offences.size).to eq(1)
18
- expect(cop.config_to_allow_offences).to eq('Max' => 5)
17
+ expect(cop.offenses.size).to eq(1)
18
+ expect(cop.config_to_allow_offenses).to eq('Max' => 5)
19
19
  end
20
20
 
21
21
  it 'accepts a method def with 4 parameters' do
22
22
  inspect_source(cop, ['def meth(a, b, c, d)',
23
23
  'end'])
24
- expect(cop.offences).to be_empty
24
+ expect(cop.offenses).to be_empty
25
25
  end
26
26
 
27
27
  context 'When CountKeywordArgs is true' do
28
28
  it 'counts keyword arguments as well', ruby: 2.0 do
29
29
  inspect_source(cop, ['def meth(a, b, c, d: 1, e: 2)',
30
30
  'end'])
31
- expect(cop.offences.size).to eq(1)
31
+ expect(cop.offenses.size).to eq(1)
32
32
  end
33
33
  end
34
34
 
@@ -38,7 +38,7 @@ describe Rubocop::Cop::Style::ParameterLists, :config do
38
38
  it 'it does not count keyword arguments', ruby: 2.0 do
39
39
  inspect_source(cop, ['def meth(a, b, c, d: 1, e: 2)',
40
40
  'end'])
41
- expect(cop.offences).to be_empty
41
+ expect(cop.offenses).to be_empty
42
42
  end
43
43
  end
44
44
  end
@@ -6,7 +6,7 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
6
6
  subject(:cop) { described_class.new(config) }
7
7
  let(:cop_config) { { 'AllowSafeAssignment' => true } }
8
8
 
9
- it 'registers an offence for parentheses around condition' do
9
+ it 'registers an offense for parentheses around condition' do
10
10
  inspect_source(cop, ['if (x > 10)',
11
11
  'elsif (x < 3)',
12
12
  'end',
@@ -21,7 +21,7 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
21
21
  'x += 1 until (x < 10)',
22
22
  'x += 1 while (x < 10)'
23
23
  ])
24
- expect(cop.offences.size).to eq(9)
24
+ expect(cop.offenses.size).to eq(9)
25
25
  expect(cop.messages.first)
26
26
  .to eq("Don't use parentheses around the condition of an if.")
27
27
  expect(cop.messages.last)
@@ -29,8 +29,9 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
29
29
  end
30
30
 
31
31
  it 'accepts parentheses if there is no space between the keyword and (.' do
32
- inspect_source(cop, ['if(x > 5) then something end'])
33
- expect(cop.offences).to be_empty
32
+ inspect_source(cop, ['if(x > 5) then something end',
33
+ 'do_something until(x > 5)'])
34
+ expect(cop.offenses).to be_empty
34
35
  end
35
36
 
36
37
  it 'auto-corrects parentheses around condition' do
@@ -78,23 +79,23 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
78
79
  'x += 1 while x < 10',
79
80
  'x += 1 until x < 10'
80
81
  ])
81
- expect(cop.offences).to be_empty
82
+ expect(cop.offenses).to be_empty
82
83
  end
83
84
 
84
85
  it 'accepts parentheses around condition in a ternary' do
85
86
  inspect_source(cop, '(a == 0) ? b : a')
86
- expect(cop.offences).to be_empty
87
+ expect(cop.offenses).to be_empty
87
88
  end
88
89
 
89
90
  it 'is not confused by leading parenthesis in subexpression' do
90
91
  inspect_source(cop, ['(a > b) && other ? one : two'])
91
- expect(cop.offences).to be_empty
92
+ expect(cop.offenses).to be_empty
92
93
  end
93
94
 
94
95
  it 'is not confused by unbalanced parentheses' do
95
96
  inspect_source(cop, ['if (a + b).c()',
96
97
  'end'])
97
- expect(cop.offences).to be_empty
98
+ expect(cop.offenses).to be_empty
98
99
  end
99
100
 
100
101
  context 'safe assignment is allowed' do
@@ -103,7 +104,7 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
103
104
  ['if (test = 10)',
104
105
  'end'
105
106
  ])
106
- expect(cop.offences).to be_empty
107
+ expect(cop.offenses).to be_empty
107
108
  end
108
109
 
109
110
  end
@@ -116,7 +117,7 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
116
117
  ['if (test = 10)',
117
118
  'end'
118
119
  ])
119
- expect(cop.offences.size).to eq(1)
120
+ expect(cop.offenses.size).to eq(1)
120
121
  end
121
122
  end
122
123
  end
@@ -0,0 +1,250 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::PercentLiteralDelimiters, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+
8
+ let(:cop_config) do
9
+ {
10
+ 'PreferredDelimiters' => {
11
+ '%' => '[]',
12
+ '%i' => '[]',
13
+ '%q' => '[]',
14
+ '%Q' => '[]',
15
+ '%r' => '[]',
16
+ '%s' => '[]',
17
+ '%w' => '[]',
18
+ '%W' => '[]',
19
+ '%x' => '[]'
20
+ }
21
+ }
22
+ end
23
+
24
+ context '`%` interpolated string' do
25
+ it 'does not register an offense for preferred delimiters' do
26
+ inspect_source(cop, ['%[string]'])
27
+ expect(cop.offenses).to be_empty
28
+ end
29
+
30
+ it 'registers an offense for other delimiters' do
31
+ inspect_source(cop, ['%(string)'])
32
+ expect(cop.messages).to eq([
33
+ '`%`-literals should be delimited by `[` and `]`'
34
+ ])
35
+ end
36
+
37
+ it 'does not register an offense for other delimiters ' \
38
+ 'when containing preferred delimiter characters' do
39
+ inspect_source(cop, ['%([string])'])
40
+ expect(cop.offenses).to be_empty
41
+ end
42
+
43
+ it 'registers an offense for other delimiters ' \
44
+ 'when containing preferred delimiter characters in interpolation' do
45
+ inspect_source(cop, ['%(#{[1].first})'])
46
+ expect(cop.messages.size).to eq(1)
47
+ end
48
+ end
49
+
50
+ context '`%q` string' do
51
+ it 'does not register an offense for preferred delimiters' do
52
+ inspect_source(cop, ['%q[string]'])
53
+ expect(cop.offenses).to be_empty
54
+ end
55
+
56
+ it 'registers an offense for other delimiters' do
57
+ inspect_source(cop, ['%q(string)'])
58
+ expect(cop.messages).to eq([
59
+ '`%q`-literals should be delimited by `[` and `]`'
60
+ ])
61
+ end
62
+
63
+ it 'does not register an offense for other delimiters ' \
64
+ 'when containing preferred delimiter characters' do
65
+ inspect_source(cop, ['%q([string])'])
66
+ expect(cop.offenses).to be_empty
67
+ end
68
+ end
69
+
70
+ context '`%Q` interpolated string' do
71
+ it 'does not register an offense for preferred delimiters' do
72
+ inspect_source(cop, ['%Q[string]'])
73
+ expect(cop.offenses).to be_empty
74
+ end
75
+
76
+ it 'registers an offense for other delimiters' do
77
+ inspect_source(cop, ['%Q(string)'])
78
+ expect(cop.messages).to eq([
79
+ '`%Q`-literals should be delimited by `[` and `]`'
80
+ ])
81
+ end
82
+
83
+ it 'does not register an offense for other delimiters ' \
84
+ 'when containing preferred delimiter characters' do
85
+ inspect_source(cop, ['%Q([string])'])
86
+ expect(cop.offenses).to be_empty
87
+ end
88
+
89
+ it 'registers an offense for other delimiters ' \
90
+ 'when containing preferred delimiter characters in interpolation' do
91
+ inspect_source(cop, ['%Q(#{[1].first})'])
92
+ expect(cop.messages.size).to eq(1)
93
+ end
94
+ end
95
+
96
+ context '`%w` string array' do
97
+ it 'does not register an offense for preferred delimiters' do
98
+ inspect_source(cop, ['%w[some words]'])
99
+ expect(cop.offenses).to be_empty
100
+ end
101
+
102
+ it 'registers an offense for other delimiters' do
103
+ inspect_source(cop, ['%w(some words)'])
104
+ expect(cop.messages).to eq([
105
+ '`%w`-literals should be delimited by `[` and `]`'
106
+ ])
107
+ end
108
+
109
+ it 'does not register an offense for other delimiters ' \
110
+ 'when containing preferred delimiter characters' do
111
+ inspect_source(cop, ['%w([some] [words])'])
112
+ expect(cop.offenses).to be_empty
113
+ end
114
+ end
115
+
116
+ context '`%W` interpolated string array' do
117
+ it 'does not register an offense for preferred delimiters' do
118
+ inspect_source(cop, ['%W[some words]'])
119
+ expect(cop.offenses).to be_empty
120
+ end
121
+
122
+ it 'registers an offense for other delimiters' do
123
+ inspect_source(cop, ['%W(some words)'])
124
+ expect(cop.messages).to eq([
125
+ '`%W`-literals should be delimited by `[` and `]`'
126
+ ])
127
+ end
128
+
129
+ it 'does not register an offense for other delimiters ' \
130
+ 'when containing preferred delimiter characters' do
131
+ inspect_source(cop, ['%W([some] [words])'])
132
+ expect(cop.offenses).to be_empty
133
+ end
134
+
135
+ it 'registers an offense for other delimiters ' \
136
+ 'when containing preferred delimiter characters in interpolation' do
137
+ inspect_source(cop, ['%W(#{[1].first})'])
138
+ expect(cop.messages.size).to eq(1)
139
+ end
140
+ end
141
+
142
+ context '`%r` interpolated regular expression' do
143
+ it 'does not register an offense for preferred delimiters' do
144
+ inspect_source(cop, ['%r[regexp]'])
145
+ expect(cop.offenses).to be_empty
146
+ end
147
+
148
+ it 'registers an offense for other delimiters' do
149
+ inspect_source(cop, ['%r(regexp)'])
150
+ expect(cop.messages).to eq([
151
+ '`%r`-literals should be delimited by `[` and `]`'
152
+ ])
153
+ end
154
+
155
+ it 'does not register an offense for other delimiters ' \
156
+ 'when containing preferred delimiter characters' do
157
+ inspect_source(cop, ['%r([regexp])'])
158
+ expect(cop.offenses).to be_empty
159
+ end
160
+
161
+ it 'registers an offense for other delimiters ' \
162
+ 'when containing preferred delimiter characters in interpolation' do
163
+ inspect_source(cop, ['%r(#{[1].first})'])
164
+ expect(cop.messages.size).to eq(1)
165
+ end
166
+ end
167
+
168
+ context '`%i` symbol array', ruby: 2.0 do
169
+ it 'does not register an offense for preferred delimiters' do
170
+ inspect_source(cop, ['%i[some symbols]'])
171
+ expect(cop.offenses).to be_empty
172
+ end
173
+
174
+ it 'registers an offense for other delimiters' do
175
+ inspect_source(cop, ['%i(some symbols)'])
176
+ expect(cop.messages).to eq([
177
+ '`%i`-literals should be delimited by `[` and `]`'
178
+ ])
179
+ end
180
+ end
181
+
182
+ context '`%s` symbol' do
183
+ it 'does not register an offense for preferred delimiters' do
184
+ inspect_source(cop, ['%s[symbol]'])
185
+ expect(cop.offenses).to be_empty
186
+ end
187
+
188
+ it 'registers an offense for other delimiters' do
189
+ inspect_source(cop, ['%s(symbol)'])
190
+ expect(cop.messages).to eq([
191
+ '`%s`-literals should be delimited by `[` and `]`'
192
+ ])
193
+ end
194
+ end
195
+
196
+ context '`%x` interpolated system call' do
197
+ it 'does not register an offense for preferred delimiters' do
198
+ inspect_source(cop, ['%x[command]'])
199
+ expect(cop.offenses).to be_empty
200
+ end
201
+
202
+ it 'registers an offense for other delimiters' do
203
+ inspect_source(cop, ['%x(command)'])
204
+ expect(cop.messages).to eq([
205
+ '`%x`-literals should be delimited by `[` and `]`'
206
+ ])
207
+ end
208
+
209
+ it 'does not register an offense for other delimiters ' \
210
+ 'when containing preferred delimiter characters' do
211
+ inspect_source(cop, ['%x([command])'])
212
+ expect(cop.offenses).to be_empty
213
+ end
214
+
215
+ it 'registers an offense for other delimiters ' \
216
+ 'when containing preferred delimiter characters in interpolation' do
217
+ inspect_source(cop, ['%x(#{[1].first})'])
218
+ expect(cop.messages.size).to eq(1)
219
+ end
220
+ end
221
+
222
+ context 'auto-correct' do
223
+ it 'fixes a string' do
224
+ new_source = autocorrect_source(cop, '%(string)')
225
+ expect(new_source).to eq('%[string]')
226
+ end
227
+
228
+ it 'fixes a string array' do
229
+ new_source = autocorrect_source(cop, '%w(some words)')
230
+ expect(new_source).to eq('%w[some words]')
231
+ end
232
+
233
+ it 'fixes a regular expression' do
234
+ original_source = '%r(.*)'
235
+ new_source = autocorrect_source(cop, original_source)
236
+ expect(new_source).to eq('%r[.*]')
237
+ end
238
+
239
+ it 'fixes a regular expression with option' do
240
+ original_source = '%r(.*)i'
241
+ new_source = autocorrect_source(cop, original_source)
242
+ expect(new_source).to eq('%r[.*]i')
243
+ end
244
+
245
+ it 'preserves line breaks when fixing a multiline array' do
246
+ new_source = autocorrect_source(cop, ['%w(', 'some', 'words', ')'])
247
+ expect(new_source).to eq("%w[\nsome\nwords\n]")
248
+ end
249
+ end
250
+ end