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
@@ -4,80 +4,101 @@ require 'spec_helper'
4
4
 
5
5
  describe Rubocop::Cop::Style::RegexpLiteral, :config do
6
6
  subject(:cop) { described_class.new(config) }
7
- let(:cop_config) { { 'MaxSlashes' => 1 } }
8
-
9
- context 'when a regexp uses // delimiters' do
10
- context 'when MaxSlashes is 1' do
11
- it 'registers an offence for two slashes in regexp' do
12
- inspect_source(cop, ['x =~ /home\/\//',
13
- 'y =~ /etc\/top\//'])
14
- expect(cop.messages)
15
- .to eq(['Use %r for regular expressions matching more ' \
16
- "than 1 '/' character."] * 2)
17
- expect(cop.config_to_allow_offences).to eq('MaxSlashes' => 2)
18
- end
19
-
20
- it 'accepts zero or one slash in regexp' do
21
- inspect_source(cop, ['x =~ /\/home/',
22
- 'y =~ /\//',
23
- 'w =~ /\//m',
24
- 'z =~ /a/'])
25
- expect(cop.offences).to be_empty
26
- end
7
+
8
+ context 'when MaxSlashes is -1' do
9
+ let(:cop_config) { { 'MaxSlashes' => -1 } }
10
+
11
+ it 'fails' do
12
+ expect { inspect_source(cop, ['x =~ /home/']) }
13
+ .to raise_error(RuntimeError)
27
14
  end
15
+ end
28
16
 
29
- context 'when MaxSlashes is 0' do
30
- let(:cop_config) { { 'MaxSlashes' => 0 } }
31
-
32
- it 'registers an offence for one slash in regexp' do
33
- inspect_source(cop, ['x =~ /home\//'])
34
- expect(cop.messages)
35
- .to eq(['Use %r for regular expressions matching more ' \
36
- "than 0 '/' characters."])
37
- expect(cop.config_to_allow_offences).to eq('MaxSlashes' => 1)
38
- end
39
-
40
- it 'accepts zero slashes in regexp' do
41
- inspect_source(cop, ['z =~ /a/'])
42
- expect(cop.offences).to be_empty
43
- end
44
-
45
- it 'registers an offence for zero slashes in regexp' do
46
- inspect_source(cop, ['y =~ %r(etc)'])
47
- expect(cop.messages)
48
- .to eq(['Use %r only for regular expressions matching more ' \
49
- "than 0 '/' characters."])
50
- expect(cop.config_to_allow_offences).to eq('MaxSlashes' => 1)
51
- end
52
-
53
- it 'accepts regexp with one slash' do
54
- inspect_source(cop, ['x =~ %r(/home)'])
55
- expect(cop.offences).to be_empty
56
- end
17
+ context 'when MaxSlashes is 0' do
18
+ let(:cop_config) { { 'MaxSlashes' => 0 } }
19
+
20
+ it 'registers an offense for one slash in // regexp' do
21
+ inspect_source(cop, ['x =~ /home\//'])
22
+ expect(cop.messages)
23
+ .to eq(['Use %r for regular expressions matching more ' \
24
+ "than 0 '/' characters."])
25
+ expect(cop.config_to_allow_offenses).to eq('MaxSlashes' => 1)
57
26
  end
58
27
 
59
- it 'ignores slashes do not belong regexp' do
60
- inspect_source(cop, ['x =~ /\s{#{x[/\s+/].length}}/'])
61
- expect(cop.offences).to be_empty
28
+ it 'accepts zero slashes in // regexp' do
29
+ inspect_source(cop, ['z =~ /a/'])
30
+ expect(cop.offenses).to be_empty
31
+ end
32
+
33
+ it 'registers an offense for zero slashes in %r regexp' do
34
+ inspect_source(cop, ['y =~ %r(etc)'])
35
+ expect(cop.messages)
36
+ .to eq(['Use %r only for regular expressions matching more ' \
37
+ "than 0 '/' characters."])
38
+ expect(cop.config_to_allow_offenses).to eq('MaxSlashes' => -1)
39
+ end
40
+
41
+ it 'accepts %r regexp with one slash' do
42
+ inspect_source(cop, ['x =~ %r(/home)'])
43
+ expect(cop.offenses).to be_empty
62
44
  end
63
45
  end
64
46
 
65
- context 'when a regexp uses %r delimiters' do
66
- context 'when MaxSlashes is 1' do
67
- it 'registers an offence for zero or one slash in regexp' do
68
- inspect_source(cop, ['x =~ %r(/home)',
69
- 'y =~ %r(etc)'])
70
- expect(cop.messages)
71
- .to eq(['Use %r only for regular expressions matching more ' \
72
- "than 1 '/' character."] * 2)
73
- expect(cop.config_to_allow_offences).to eq('MaxSlashes' => 2)
74
- end
75
-
76
- it 'accepts regexp with two or more slashes' do
77
- inspect_source(cop, ['x =~ %r(/home/)',
78
- 'y =~ %r(/////)'])
79
- expect(cop.offences).to be_empty
80
- end
47
+ context 'when MaxSlashes is 1' do
48
+ let(:cop_config) { { 'MaxSlashes' => 1 } }
49
+
50
+ it 'registers an offense for two slashes in // regexp' do
51
+ inspect_source(cop, ['x =~ /home\/\//',
52
+ 'y =~ /etc\/top\//'])
53
+ expect(cop.messages)
54
+ .to eq(['Use %r for regular expressions matching more ' \
55
+ "than 1 '/' character."] * 2)
56
+ expect(cop.config_to_allow_offenses).to eq('MaxSlashes' => 2)
57
+ end
58
+
59
+ it 'registers offenses for slashes with too many and %r with too few' do
60
+ inspect_source(cop, ['x =~ /home\/\//',
61
+ 'y =~ %r{home}'])
62
+ expect(cop.messages)
63
+ .to eq(['Use %r for regular expressions matching more ' \
64
+ "than 1 '/' character.",
65
+ 'Use %r only for regular expressions matching more ' \
66
+ "than 1 '/' character."])
67
+ expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
68
+ end
69
+
70
+ it 'registers offenses for %r with too few and slashes with too many' do
71
+ inspect_source(cop, ['y =~ %r{home}',
72
+ 'x =~ /home\/\//'])
73
+ expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
74
+ end
75
+
76
+ it 'accepts zero or one slash in // regexp' do
77
+ inspect_source(cop, ['x =~ /\/home/',
78
+ 'y =~ /\//',
79
+ 'w =~ /\//m',
80
+ 'z =~ /a/'])
81
+ expect(cop.offenses).to be_empty
82
+ end
83
+
84
+ it 'ignores slashes do not belong // regexp' do
85
+ inspect_source(cop, ['x =~ /\s{#{x[/\s+/].length}}/'])
86
+ expect(cop.offenses).to be_empty
87
+ end
88
+
89
+ it 'registers an offense for zero or one slash in %r regexp' do
90
+ inspect_source(cop, ['x =~ %r(/home)',
91
+ 'y =~ %r(etc)'])
92
+ expect(cop.messages)
93
+ .to eq(['Use %r only for regular expressions matching more ' \
94
+ "than 1 '/' character."] * 2)
95
+ expect(cop.config_to_allow_offenses).to eq('MaxSlashes' => -1)
96
+ end
97
+
98
+ it 'accepts %r regexp with two or more slashes' do
99
+ inspect_source(cop, ['x =~ %r(/home/)',
100
+ 'y =~ %r(/////)'])
101
+ expect(cop.offenses).to be_empty
81
102
  end
82
103
  end
83
104
  end
@@ -5,10 +5,10 @@ require 'spec_helper'
5
5
  describe Rubocop::Cop::Style::RescueModifier do
6
6
  subject(:cop) { described_class.new }
7
7
 
8
- it 'registers an offence for modifier rescue' do
8
+ it 'registers an offense for modifier rescue' do
9
9
  inspect_source(cop,
10
10
  ['method rescue handle'])
11
- expect(cop.offences.size).to eq(1)
11
+ expect(cop.offenses.size).to eq(1)
12
12
  expect(cop.messages)
13
13
  .to eq(['Avoid using rescue in its modifier form.'])
14
14
  end
@@ -16,7 +16,7 @@ describe Rubocop::Cop::Style::RescueModifier do
16
16
  it 'handles more complex expression with modifier rescue' do
17
17
  inspect_source(cop,
18
18
  ['method1 or method2 rescue handle'])
19
- expect(cop.offences.size).to eq(1)
19
+ expect(cop.offenses.size).to eq(1)
20
20
  expect(cop.messages)
21
21
  .to eq(['Avoid using rescue in its modifier form.'])
22
22
  end
@@ -28,21 +28,21 @@ describe Rubocop::Cop::Style::RescueModifier do
28
28
  'rescue',
29
29
  ' normal_handle',
30
30
  'end'])
31
- expect(cop.offences.size).to eq(1)
32
- expect(cop.offences.first.line).to eq(2)
31
+ expect(cop.offenses.size).to eq(1)
32
+ expect(cop.offenses.first.line).to eq(2)
33
33
  end
34
34
 
35
- it 'does not register an offence for normal rescue' do
35
+ it 'does not register an offense for normal rescue' do
36
36
  inspect_source(cop,
37
37
  ['begin',
38
38
  ' test',
39
39
  'rescue',
40
40
  ' handle',
41
41
  'end'])
42
- expect(cop.offences).to be_empty
42
+ expect(cop.offenses).to be_empty
43
43
  end
44
44
 
45
- it 'does not register an offence for normal rescue with ensure' do
45
+ it 'does not register an offense for normal rescue with ensure' do
46
46
  inspect_source(cop,
47
47
  ['begin',
48
48
  ' test',
@@ -51,10 +51,10 @@ describe Rubocop::Cop::Style::RescueModifier do
51
51
  'ensure',
52
52
  ' cleanup',
53
53
  'end'])
54
- expect(cop.offences).to be_empty
54
+ expect(cop.offenses).to be_empty
55
55
  end
56
56
 
57
- it 'does not register an offence for nested normal rescue' do
57
+ it 'does not register an offense for nested normal rescue' do
58
58
  inspect_source(cop,
59
59
  ['begin',
60
60
  ' begin',
@@ -65,7 +65,7 @@ describe Rubocop::Cop::Style::RescueModifier do
65
65
  'rescue',
66
66
  ' handle_outer',
67
67
  'end'])
68
- expect(cop.offences).to be_empty
68
+ expect(cop.offenses).to be_empty
69
69
  end
70
70
 
71
71
  context 'when an instance method has implicit begin' do
@@ -76,7 +76,7 @@ describe Rubocop::Cop::Style::RescueModifier do
76
76
  'rescue',
77
77
  ' handle',
78
78
  'end'])
79
- expect(cop.offences).to be_empty
79
+ expect(cop.offenses).to be_empty
80
80
  end
81
81
 
82
82
  it 'handles modifier rescue in body of implicit begin' do
@@ -86,8 +86,8 @@ describe Rubocop::Cop::Style::RescueModifier do
86
86
  'rescue',
87
87
  ' normal_handle',
88
88
  'end'])
89
- expect(cop.offences.size).to eq(1)
90
- expect(cop.offences.first.line).to eq(2)
89
+ expect(cop.offenses.size).to eq(1)
90
+ expect(cop.offenses.first.line).to eq(2)
91
91
  end
92
92
  end
93
93
 
@@ -99,7 +99,7 @@ describe Rubocop::Cop::Style::RescueModifier do
99
99
  'rescue',
100
100
  ' handle',
101
101
  'end'])
102
- expect(cop.offences).to be_empty
102
+ expect(cop.offenses).to be_empty
103
103
  end
104
104
 
105
105
  it 'handles modifier rescue in body of implicit begin' do
@@ -109,8 +109,8 @@ describe Rubocop::Cop::Style::RescueModifier do
109
109
  'rescue',
110
110
  ' normal_handle',
111
111
  'end'])
112
- expect(cop.offences.size).to eq(1)
113
- expect(cop.offences.first.line).to eq(2)
112
+ expect(cop.offenses.size).to eq(1)
113
+ expect(cop.offenses.first.line).to eq(2)
114
114
  end
115
115
  end
116
116
  end
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::SelfAssignment do
6
+ subject(:cop) { described_class.new }
7
+
8
+ described_class::OPS.product(['x', '@x', '@@x']).each do |op, var|
9
+ it "registers an offense for non-shorthand assignment #{op} and #{var}" do
10
+ inspect_source(cop,
11
+ ["#{var} = #{var} #{op} y"])
12
+ expect(cop.offenses.size).to eq(1)
13
+ expect(cop.messages)
14
+ .to eq(["Use self-assignment shorthand #{op}=."])
15
+ end
16
+
17
+ it "accepts shorthand assignment for #{op} and #{var}" do
18
+ inspect_source(cop,
19
+ ["#{var} = #{var} #{op} y"])
20
+ expect(cop.offenses.size).to eq(1)
21
+ expect(cop.messages)
22
+ .to eq(["Use self-assignment shorthand #{op}=."])
23
+ end
24
+ end
25
+
26
+ ['||', '&&'].product(['x', '@x', '@@x']).each do |op, var|
27
+ it "registers an offense for non-shorthand assignment #{op} and #{var}" do
28
+ inspect_source(cop,
29
+ ["#{var} = #{var} #{op} y"])
30
+ expect(cop.offenses.size).to eq(1)
31
+ expect(cop.messages)
32
+ .to eq(["Use self-assignment shorthand #{op}=."])
33
+ end
34
+
35
+ it "accepts shorthand assignment for #{op} and #{var}" do
36
+ inspect_source(cop,
37
+ ["#{var} = #{var} #{op} y"])
38
+ expect(cop.offenses.size).to eq(1)
39
+ expect(cop.messages)
40
+ .to eq(["Use self-assignment shorthand #{op}=."])
41
+ end
42
+ end
43
+ end
@@ -6,34 +6,34 @@ describe Rubocop::Cop::Style::Semicolon, :config do
6
6
  subject(:cop) { described_class.new(config) }
7
7
  let(:cop_config) { { 'AllowAsExpressionSeparator' => false } }
8
8
 
9
- it 'registers an offence for a single expression' do
9
+ it 'registers an offense for a single expression' do
10
10
  inspect_source(cop,
11
11
  ['puts "this is a test";'])
12
- expect(cop.offences.size).to eq(1)
12
+ expect(cop.offenses.size).to eq(1)
13
13
  end
14
14
 
15
- it 'registers an offence for several expressions' do
15
+ it 'registers an offense for several expressions' do
16
16
  inspect_source(cop,
17
17
  ['puts "this is a test"; puts "So is this"'])
18
- expect(cop.offences.size).to eq(1)
18
+ expect(cop.offenses.size).to eq(1)
19
19
  end
20
20
 
21
- it 'registers an offence for one line method with two statements' do
21
+ it 'registers an offense for one line method with two statements' do
22
22
  inspect_source(cop,
23
23
  ['def foo(a) x(1); y(2); z(3); end'])
24
- expect(cop.offences.size).to eq(1)
24
+ expect(cop.offenses.size).to eq(1)
25
25
  end
26
26
 
27
27
  it 'accepts semicolon before end if so configured' do
28
28
  inspect_source(cop,
29
29
  ['def foo(a) z(3); end'])
30
- expect(cop.offences).to be_empty
30
+ expect(cop.offenses).to be_empty
31
31
  end
32
32
 
33
33
  it 'accepts semicolon after params if so configured' do
34
34
  inspect_source(cop,
35
35
  ['def foo(a); z(3) end'])
36
- expect(cop.offences).to be_empty
36
+ expect(cop.offenses).to be_empty
37
37
  end
38
38
 
39
39
  it 'accepts one line method definitions' do
@@ -42,7 +42,7 @@ describe Rubocop::Cop::Style::Semicolon, :config do
42
42
  'def initialize(*_); end',
43
43
  'def foo2() x(3); end',
44
44
  'def foo3; x(3); end'])
45
- expect(cop.offences).to be_empty
45
+ expect(cop.offenses).to be_empty
46
46
  end
47
47
 
48
48
  it 'accepts one line empty class definitions' do
@@ -51,7 +51,7 @@ describe Rubocop::Cop::Style::Semicolon, :config do
51
51
  'class Foo < Exception; end',
52
52
  '',
53
53
  'class Bar; end'])
54
- expect(cop.offences).to be_empty
54
+ expect(cop.offenses).to be_empty
55
55
  end
56
56
 
57
57
  it 'accepts one line empty method definitions' do
@@ -60,26 +60,40 @@ describe Rubocop::Cop::Style::Semicolon, :config do
60
60
  'def no_op; end',
61
61
  '',
62
62
  'def foo; end'])
63
- expect(cop.offences).to be_empty
63
+ expect(cop.offenses).to be_empty
64
64
  end
65
65
 
66
66
  it 'accepts one line empty module definitions' do
67
67
  inspect_source(cop,
68
68
  ['module Foo; end'])
69
- expect(cop.offences).to be_empty
69
+ expect(cop.offenses).to be_empty
70
70
  end
71
71
 
72
- it 'registers an offence for semicolon at the end no matter what' do
72
+ it 'registers an offense for semicolon at the end no matter what' do
73
73
  inspect_source(cop,
74
74
  ['module Foo; end;'])
75
- expect(cop.offences.size).to eq(1)
75
+ expect(cop.offenses.size).to eq(1)
76
76
  end
77
77
 
78
78
  it 'accept semicolons inside strings' do
79
79
  inspect_source(cop,
80
80
  ['string = ";',
81
81
  'multi-line string"'])
82
- expect(cop.offences).to be_empty
82
+ expect(cop.offenses).to be_empty
83
+ end
84
+
85
+ it 'auto-corrects semicolons when syntactically possible' do
86
+ corrected =
87
+ autocorrect_source(cop,
88
+ ['module Foo; end;',
89
+ 'puts "this is a test";',
90
+ 'puts "this is a test"; puts "So is this"',
91
+ 'def foo(a) x(1); y(2); z(3); end'])
92
+ expect(corrected)
93
+ .to eq(['module Foo; end',
94
+ 'puts "this is a test"',
95
+ 'puts "this is a test"; puts "So is this"',
96
+ 'def foo(a) x(1); y(2); z(3); end'].join("\n"))
83
97
  end
84
98
 
85
99
  context 'when AllowAsExpressionSeparator is true' do
@@ -88,13 +102,13 @@ describe Rubocop::Cop::Style::Semicolon, :config do
88
102
  it 'accepts several expressions' do
89
103
  inspect_source(cop,
90
104
  ['puts "this is a test"; puts "So is this"'])
91
- expect(cop.offences).to be_empty
105
+ expect(cop.offenses).to be_empty
92
106
  end
93
107
 
94
108
  it 'accepts one line method with two statements' do
95
109
  inspect_source(cop,
96
110
  ['def foo(a) x(1); y(2); z(3); end'])
97
- expect(cop.offences).to be_empty
111
+ expect(cop.offenses).to be_empty
98
112
  end
99
113
  end
100
114
  end
@@ -8,38 +8,38 @@ describe Rubocop::Cop::Style::SignalException, :config do
8
8
  context 'when enforced style is `semantic`' do
9
9
  let(:cop_config) { { 'EnforcedStyle' => 'semantic' } }
10
10
 
11
- it 'registers an offence for raise in begin section' do
11
+ it 'registers an offense for raise in begin section' do
12
12
  inspect_source(cop,
13
13
  ['begin',
14
14
  ' raise',
15
15
  'rescue Exception',
16
16
  ' #do nothing',
17
17
  'end'])
18
- expect(cop.offences.size).to eq(1)
18
+ expect(cop.offenses.size).to eq(1)
19
19
  expect(cop.messages)
20
20
  .to eq(['Use `fail` instead of `raise` to signal exceptions.'])
21
21
  end
22
22
 
23
- it 'registers an offence for raise in def body' do
23
+ it 'registers an offense for raise in def body' do
24
24
  inspect_source(cop,
25
25
  ['def test',
26
26
  ' raise',
27
27
  'rescue Exception',
28
28
  ' #do nothing',
29
29
  'end'])
30
- expect(cop.offences.size).to eq(1)
30
+ expect(cop.offenses.size).to eq(1)
31
31
  expect(cop.messages)
32
32
  .to eq(['Use `fail` instead of `raise` to signal exceptions.'])
33
33
  end
34
34
 
35
- it 'registers an offence for fail in rescue section' do
35
+ it 'registers an offense for fail in rescue section' do
36
36
  inspect_source(cop,
37
37
  ['begin',
38
38
  ' fail',
39
39
  'rescue Exception',
40
40
  ' fail',
41
41
  'end'])
42
- expect(cop.offences.size).to eq(1)
42
+ expect(cop.offenses.size).to eq(1)
43
43
  expect(cop.messages)
44
44
  .to eq(['Use `raise` instead of `fail` to rethrow exceptions.'])
45
45
  end
@@ -51,28 +51,28 @@ describe Rubocop::Cop::Style::SignalException, :config do
51
51
  'rescue Exception',
52
52
  ' raise RuntimeError',
53
53
  'end'])
54
- expect(cop.offences).to be_empty
54
+ expect(cop.offenses).to be_empty
55
55
  end
56
56
 
57
- it 'registers an offence for fail in def rescue section' do
57
+ it 'registers an offense for fail in def rescue section' do
58
58
  inspect_source(cop,
59
59
  ['def test',
60
60
  ' fail',
61
61
  'rescue Exception',
62
62
  ' fail',
63
63
  'end'])
64
- expect(cop.offences.size).to eq(1)
64
+ expect(cop.offenses.size).to eq(1)
65
65
  expect(cop.messages)
66
66
  .to eq(['Use `raise` instead of `fail` to rethrow exceptions.'])
67
67
  end
68
68
 
69
- it 'registers only offence for one raise that should be fail' do
69
+ it 'registers only offense for one raise that should be fail' do
70
70
  # This is a special case that has caused double reporting.
71
71
  inspect_source(cop,
72
72
  ['map do',
73
73
  " raise 'I'",
74
74
  'end.flatten.compact'])
75
- expect(cop.offences.size).to eq(1)
75
+ expect(cop.offenses.size).to eq(1)
76
76
  expect(cop.messages)
77
77
  .to eq(['Use `fail` instead of `raise` to signal exceptions.'])
78
78
  end
@@ -84,26 +84,26 @@ describe Rubocop::Cop::Style::SignalException, :config do
84
84
  'rescue Exception',
85
85
  ' raise',
86
86
  'end'])
87
- expect(cop.offences).to be_empty
87
+ expect(cop.offenses).to be_empty
88
88
  end
89
89
 
90
- it 'registers an offence for raise not in a begin/rescue/end' do
90
+ it 'registers an offense for raise not in a begin/rescue/end' do
91
91
  inspect_source(cop,
92
92
  ["case cop_config['EnforcedStyle']",
93
93
  "when 'single_quotes' then true",
94
94
  "when 'double_quotes' then false",
95
95
  "else raise 'Unknown StringLiterals style'",
96
96
  'end'])
97
- expect(cop.offences.size).to eq(1)
97
+ expect(cop.offenses.size).to eq(1)
98
98
  expect(cop.messages)
99
99
  .to eq(['Use `fail` instead of `raise` to signal exceptions.'])
100
100
  end
101
101
 
102
- it 'registers one offence for each raise' do
102
+ it 'registers one offense for each raise' do
103
103
  inspect_source(cop,
104
104
  ['cop.stub(:on_def) { raise RuntimeError }',
105
105
  'cop.stub(:on_def) { raise RuntimeError }'])
106
- expect(cop.offences.size).to eq(2)
106
+ expect(cop.offenses.size).to eq(2)
107
107
  expect(cop.messages)
108
108
  .to eq(['Use `fail` instead of `raise` to signal exceptions.'] * 2)
109
109
  end
@@ -120,7 +120,7 @@ describe Rubocop::Cop::Style::SignalException, :config do
120
120
  'rescue Exception',
121
121
  ' #do nothing',
122
122
  'end'])
123
- expect(cop.offences.size).to eq(3)
123
+ expect(cop.offenses.size).to eq(3)
124
124
  expect(cop.messages)
125
125
  .to eq(['Use `fail` instead of `raise` to signal exceptions.'] * 2 +
126
126
  ['Use `raise` instead of `fail` to rethrow exceptions.'])
@@ -158,38 +158,38 @@ describe Rubocop::Cop::Style::SignalException, :config do
158
158
  context 'when enforced style is `raise`' do
159
159
  let(:cop_config) { { 'EnforcedStyle' => 'only_raise' } }
160
160
 
161
- it 'registers an offence for fail in begin section' do
161
+ it 'registers an offense for fail in begin section' do
162
162
  inspect_source(cop,
163
163
  ['begin',
164
164
  ' fail',
165
165
  'rescue Exception',
166
166
  ' #do nothing',
167
167
  'end'])
168
- expect(cop.offences.size).to eq(1)
168
+ expect(cop.offenses.size).to eq(1)
169
169
  expect(cop.messages)
170
170
  .to eq(['Always use `raise` to signal exceptions.'])
171
171
  end
172
172
 
173
- it 'registers an offence for fail in def body' do
173
+ it 'registers an offense for fail in def body' do
174
174
  inspect_source(cop,
175
175
  ['def test',
176
176
  ' fail',
177
177
  'rescue Exception',
178
178
  ' #do nothing',
179
179
  'end'])
180
- expect(cop.offences.size).to eq(1)
180
+ expect(cop.offenses.size).to eq(1)
181
181
  expect(cop.messages)
182
182
  .to eq(['Always use `raise` to signal exceptions.'])
183
183
  end
184
184
 
185
- it 'registers an offence for fail in rescue section' do
185
+ it 'registers an offense for fail in rescue section' do
186
186
  inspect_source(cop,
187
187
  ['begin',
188
188
  ' raise',
189
189
  'rescue Exception',
190
190
  ' fail',
191
191
  'end'])
192
- expect(cop.offences.size).to eq(1)
192
+ expect(cop.offenses.size).to eq(1)
193
193
  expect(cop.messages)
194
194
  .to eq(['Always use `raise` to signal exceptions.'])
195
195
  end
@@ -213,38 +213,38 @@ describe Rubocop::Cop::Style::SignalException, :config do
213
213
  context 'when enforced style is `fail`' do
214
214
  let(:cop_config) { { 'EnforcedStyle' => 'only_fail' } }
215
215
 
216
- it 'registers an offence for raise in begin section' do
216
+ it 'registers an offense for raise in begin section' do
217
217
  inspect_source(cop,
218
218
  ['begin',
219
219
  ' raise',
220
220
  'rescue Exception',
221
221
  ' #do nothing',
222
222
  'end'])
223
- expect(cop.offences.size).to eq(1)
223
+ expect(cop.offenses.size).to eq(1)
224
224
  expect(cop.messages)
225
225
  .to eq(['Always use `fail` to signal exceptions.'])
226
226
  end
227
227
 
228
- it 'registers an offence for raise in def body' do
228
+ it 'registers an offense for raise in def body' do
229
229
  inspect_source(cop,
230
230
  ['def test',
231
231
  ' raise',
232
232
  'rescue Exception',
233
233
  ' #do nothing',
234
234
  'end'])
235
- expect(cop.offences.size).to eq(1)
235
+ expect(cop.offenses.size).to eq(1)
236
236
  expect(cop.messages)
237
237
  .to eq(['Always use `fail` to signal exceptions.'])
238
238
  end
239
239
 
240
- it 'registers an offence for raise in rescue section' do
240
+ it 'registers an offense for raise in rescue section' do
241
241
  inspect_source(cop,
242
242
  ['begin',
243
243
  ' fail',
244
244
  'rescue Exception',
245
245
  ' raise',
246
246
  'end'])
247
- expect(cop.offences.size).to eq(1)
247
+ expect(cop.offenses.size).to eq(1)
248
248
  expect(cop.messages)
249
249
  .to eq(['Always use `fail` to signal exceptions.'])
250
250
  end