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,66 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::SpaceBeforeFirstArg do
6
- subject(:cop) { described_class.new }
7
-
8
- context 'for method calls without parentheses' do
9
- it 'registers an offense for method call with no space before the ' \
10
- 'first arg' do
11
- inspect_source(cop, ['something?x',
12
- 'a.something!y, z'])
13
- expect(cop.messages)
14
- .to eq(['Put space between the method name and the first ' \
15
- 'argument.'] * 2)
16
- expect(cop.highlights).to eq(%w(x y))
17
- end
18
-
19
- it 'accepts a method call with space before the first arg' do
20
- inspect_source(cop, ['something? x',
21
- 'a.something! y, z'])
22
- expect(cop.offenses).to be_empty
23
- end
24
-
25
- it 'accepts square brackets operator' do
26
- inspect_source(cop, 'something[:x]')
27
- expect(cop.offenses).to be_empty
28
- end
29
-
30
- it 'accepts a method call with space before a multiline arg' do
31
- inspect_source(cop, "something [\n 'foo',\n 'bar'\n]")
32
- expect(cop.offenses).to be_empty
33
- end
34
-
35
- it 'accepts an assignment without space before first arg' do
36
- inspect_source(cop, ['a.something=c',
37
- 'a.something,b=c,d'])
38
- expect(cop.offenses).to be_empty
39
- end
40
-
41
- it 'auto-corrects method call with no space before the first arg' do
42
- new_source = autocorrect_source(cop, ['something?x',
43
- 'a.something!y, z'])
44
- expect(new_source).to eq(['something? x',
45
- 'a.something! y, z'].join("\n"))
46
- end
47
- end
48
-
49
- context 'for method calls with parentheses' do
50
- it 'accepts a method call without space' do
51
- inspect_source(cop, ['something?(x)',
52
- 'a.something(y, z)'])
53
- expect(cop.offenses).to be_empty
54
- end
55
-
56
- it 'accepts a method call with space after the left parenthesis' do
57
- inspect_source(cop, 'something?( x )')
58
- expect(cop.offenses).to be_empty
59
- end
60
-
61
- it 'accepts setter call' do
62
- inspect_source(cop, 'self.class.controller_path=(path)')
63
- expect(cop.offenses).to be_empty
64
- end
65
- end
66
- end
@@ -1,51 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::StringConversionInInterpolation do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for #to_s in interpolation' do
9
- inspect_source(cop, '"this is the #{result.to_s}"')
10
- expect(cop.offenses.size).to eq(1)
11
- expect(cop.messages)
12
- .to eq(['Redundant use of `Object#to_s` in interpolation.'])
13
- end
14
-
15
- it 'detects #to_s in an interpolation with several expressions' do
16
- inspect_source(cop, '"this is the #{top; result.to_s}"')
17
- expect(cop.offenses.size).to eq(1)
18
- end
19
-
20
- it 'accepts #to_s with arguments in an interpolation' do
21
- inspect_source(cop, '"this is a #{result.to_s(8)}"')
22
- expect(cop.offenses).to be_empty
23
- end
24
-
25
- it 'accepts interpolation without #to_s' do
26
- inspect_source(cop, '"this is the #{result}"')
27
- expect(cop.offenses).to be_empty
28
- end
29
-
30
- it 'does not explode on implicit receiver' do
31
- inspect_source(cop, '"#{to_s}"')
32
- expect(cop.offenses.size).to eq(1)
33
- expect(cop.messages)
34
- .to eq(['Use `self` instead of `Object#to_s` in interpolation.'])
35
- end
36
-
37
- it 'does not explode on empty interpolation' do
38
- inspect_source(cop, '"this is #{} silly"')
39
- expect(cop.offenses).to be_empty
40
- end
41
-
42
- it 'autocorrects by removing the redundant to_s' do
43
- corrected = autocorrect_source(cop, ['"some #{something.to_s}"'])
44
- expect(corrected).to eq '"some #{something}"'
45
- end
46
-
47
- it 'autocorrects implicit receiver by replacing to_s with self' do
48
- corrected = autocorrect_source(cop, ['"some #{to_s}"'])
49
- expect(corrected).to eq '"some #{self}"'
50
- end
51
- end
@@ -1,34 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::Syntax do
6
- describe '.offense_from_diagnostic' do
7
- subject(:offense) { described_class.offense_from_diagnostic(diagnostic) }
8
- let(:diagnostic) { Parser::Diagnostic.new(level, reason, args, location) }
9
- let(:level) { :warning }
10
- let(:reason) { :odd_hash }
11
- let(:args) { [] }
12
- let(:location) { double('location').as_null_object }
13
-
14
- it 'returns an offense' do
15
- expect(offense).to be_a(RuboCop::Cop::Offense)
16
- end
17
-
18
- it "sets diagnostic's level to offense's severity" do
19
- expect(offense.severity).to eq(level)
20
- end
21
-
22
- it "sets diagnostic's message to offense's message" do
23
- expect(offense.message).to eq('odd number of entries for a hash')
24
- end
25
-
26
- it "sets diagnostic's location to offense's location" do
27
- expect(offense.location).to eq(location)
28
- end
29
-
30
- it 'sets Syntax as a cop name' do
31
- expect(offense.cop_name).to eq('Syntax')
32
- end
33
- end
34
- end
@@ -1,179 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::UnderscorePrefixedVariableName do
6
- subject(:cop) { described_class.new }
7
-
8
- before do
9
- inspect_source(cop, source)
10
- end
11
-
12
- context 'when an underscore-prefixed variable is used' do
13
- let(:source) { <<-END }
14
- def some_method
15
- _foo = 1
16
- puts _foo
17
- end
18
- END
19
-
20
- it 'registers an offense' do
21
- expect(cop.offenses.size).to eq(1)
22
- expect(cop.offenses.first.message)
23
- .to eq('Do not use prefix `_` for a variable that is used.')
24
- expect(cop.offenses.first.severity.name).to eq(:warning)
25
- expect(cop.offenses.first.line).to eq(2)
26
- expect(cop.highlights).to eq(['_foo'])
27
- end
28
- end
29
-
30
- context 'when non-underscore-prefixed variable is used' do
31
- let(:source) { <<-END }
32
- def some_method
33
- foo = 1
34
- puts foo
35
- end
36
- END
37
-
38
- it 'accepts' do
39
- expect(cop.offenses).to be_empty
40
- end
41
- end
42
-
43
- context 'when an underscore-prefixed variable is reassigned' do
44
- let(:source) { <<-END }
45
- def some_method
46
- _foo = 1
47
- _foo = 2
48
- end
49
- END
50
-
51
- it 'accepts' do
52
- expect(cop.offenses).to be_empty
53
- end
54
- end
55
-
56
- context 'when an underscore-prefixed method argument is used' do
57
- let(:source) { <<-END }
58
- def some_method(_foo)
59
- puts _foo
60
- end
61
- END
62
-
63
- it 'registers an offense' do
64
- expect(cop.offenses.size).to eq(1)
65
- expect(cop.offenses.first.line).to eq(1)
66
- expect(cop.highlights).to eq(['_foo'])
67
- end
68
- end
69
-
70
- context 'when an underscore-prefixed block argument is used' do
71
- let(:source) { <<-END }
72
- 1.times do |_foo|
73
- puts _foo
74
- end
75
- END
76
-
77
- it 'registers an offense' do
78
- expect(cop.offenses.size).to eq(1)
79
- expect(cop.offenses.first.line).to eq(1)
80
- expect(cop.highlights).to eq(['_foo'])
81
- end
82
- end
83
-
84
- context 'when an underscore-prefixed variable in top-level scope is used' do
85
- let(:source) { <<-END }
86
- _foo = 1
87
- puts _foo
88
- END
89
-
90
- it 'registers an offense' do
91
- expect(cop.offenses.size).to eq(1)
92
- expect(cop.offenses.first.line).to eq(1)
93
- expect(cop.highlights).to eq(['_foo'])
94
- end
95
- end
96
-
97
- context 'when an underscore-prefixed variable is captured by a block' do
98
- let(:source) { <<-END }
99
- _foo = 1
100
- 1.times do
101
- _foo = 2
102
- end
103
- END
104
-
105
- it 'accepts' do
106
- expect(cop.offenses).to be_empty
107
- end
108
- end
109
-
110
- context 'when an underscore-prefixed named capture variable is used' do
111
- let(:source) { <<-END }
112
- /(?<_foo>\\w+)/ =~ 'FOO'
113
- puts _foo
114
- END
115
-
116
- it 'registers an offense' do
117
- expect(cop.offenses.size).to eq(1)
118
- expect(cop.offenses.first.line).to eq(1)
119
- expect(cop.highlights).to eq(['/(?<_foo>\\w+)/'])
120
- end
121
- end
122
-
123
- context 'in a method calling `super` without arguments' do
124
- context 'when an underscore-prefixed argument is not used explicitly' do
125
- let(:source) { <<-END }
126
- def some_method(*_)
127
- super
128
- end
129
- END
130
-
131
- it 'accepts' do
132
- expect(cop.offenses).to be_empty
133
- end
134
- end
135
-
136
- context 'when an underscore-prefixed argument is used explicitly' do
137
- let(:source) { <<-END }
138
- def some_method(*_)
139
- super
140
- puts _
141
- end
142
- END
143
-
144
- it 'registers an offense' do
145
- expect(cop.offenses.size).to eq(1)
146
- expect(cop.offenses.first.line).to eq(1)
147
- expect(cop.highlights).to eq(['_'])
148
- end
149
- end
150
- end
151
-
152
- context 'in a method calling `super` with arguments' do
153
- context 'when an underscore-prefixed argument is not used' do
154
- let(:source) { <<-END }
155
- def some_method(*_)
156
- super(:something)
157
- end
158
- END
159
-
160
- it 'accepts' do
161
- expect(cop.offenses).to be_empty
162
- end
163
- end
164
-
165
- context 'when an underscore-prefixed argument is used explicitly' do
166
- let(:source) { <<-END }
167
- def some_method(*_)
168
- super(*_)
169
- end
170
- END
171
-
172
- it 'registers an offense' do
173
- expect(cop.offenses.size).to eq(1)
174
- expect(cop.offenses.first.line).to eq(1)
175
- expect(cop.highlights).to eq(['_'])
176
- end
177
- end
178
- end
179
- end
@@ -1,63 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::UnreachableCode do
6
- subject(:cop) { described_class.new }
7
-
8
- described_class::NODE_TYPES.each do |t|
9
- it "registers an offense for #{t} before other statements" do
10
- inspect_source(cop,
11
- ['foo = 5',
12
- "#{t}",
13
- 'bar'
14
- ])
15
- expect(cop.offenses.size).to eq(1)
16
- end
17
-
18
- it "accepts code with conditional #{t}" do
19
- inspect_source(cop,
20
- ['foo = 5',
21
- "#{t} if test",
22
- 'bar'
23
- ])
24
- expect(cop.offenses).to be_empty
25
- end
26
-
27
- it "accepts #{t} as the final expression" do
28
- inspect_source(cop,
29
- ['foo = 5',
30
- "#{t} if test"
31
- ])
32
- expect(cop.offenses).to be_empty
33
- end
34
- end
35
-
36
- described_class::FLOW_COMMANDS.each do |t|
37
- it "registers an offense for #{t} before other statements" do
38
- inspect_source(cop,
39
- ['foo = 5',
40
- "#{t} something",
41
- 'bar'
42
- ])
43
- expect(cop.offenses.size).to eq(1)
44
- end
45
-
46
- it "accepts code with conditional #{t}" do
47
- inspect_source(cop,
48
- ['foo = 5',
49
- "#{t} something if test",
50
- 'bar'
51
- ])
52
- expect(cop.offenses).to be_empty
53
- end
54
-
55
- it "accepts #{t} as the final expression" do
56
- inspect_source(cop,
57
- ['foo = 5',
58
- "#{t} something if test"
59
- ])
60
- expect(cop.offenses).to be_empty
61
- end
62
- end
63
- end
@@ -1,231 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::UnusedBlockArgument do
6
- subject(:cop) { described_class.new }
7
-
8
- context 'inspection' do
9
- before do
10
- inspect_source(cop, source)
11
- end
12
-
13
- context 'when a block takes multiple arguments' do
14
- context 'and an argument is unused' do
15
- let(:source) { <<-END }
16
- hash = { foo: 'FOO', bar: 'BAR' }
17
- hash.each do |key, value|
18
- puts key
19
- end
20
- END
21
-
22
- it 'registers an offense' do
23
- expect(cop.offenses.size).to eq(1)
24
- expect(cop.offenses.first.message).to eq(
25
- 'Unused block argument - `value`. ' \
26
- "If it's necessary, use `_` or `_value` as an argument name " \
27
- "to indicate that it won't be used."
28
- )
29
- expect(cop.offenses.first.severity.name).to eq(:warning)
30
- expect(cop.offenses.first.line).to eq(2)
31
- expect(cop.highlights).to eq(['value'])
32
- end
33
- end
34
-
35
- context 'and all the arguments are unused' do
36
- let(:source) { <<-END }
37
- hash = { foo: 'FOO', bar: 'BAR' }
38
- hash.each do |key, value|
39
- puts :something
40
- end
41
- END
42
-
43
- it 'registers offenses and suggests omitting them' do
44
- expect(cop.offenses.size).to eq(2)
45
- expect(cop.offenses.first.message).to eq(
46
- 'Unused block argument - `key`. ' \
47
- "You can omit all the arguments if you don't care about them."
48
- )
49
- expect(cop.offenses.first.line).to eq(2)
50
- expect(cop.highlights).to eq(%w(key value))
51
- end
52
- end
53
- end
54
-
55
- context 'when a block takes single argument' do
56
- context 'and the argument is unused' do
57
- let(:source) { <<-END }
58
- 1.times do |index|
59
- puts :something
60
- end
61
- END
62
-
63
- it 'registers an offense and suggests omitting that' do
64
- expect(cop.offenses.size).to eq(1)
65
- expect(cop.offenses.first.message).to eq(
66
- 'Unused block argument - `index`. ' \
67
- "You can omit the argument if you don't care about it."
68
- )
69
- expect(cop.offenses.first.line).to eq(1)
70
- expect(cop.highlights).to eq(['index'])
71
- end
72
- end
73
- end
74
-
75
- context 'when a block have a block local variable' do
76
- context 'and the variable is unused' do
77
- let(:source) { <<-END }
78
- 1.times do |index; block_local_variable|
79
- puts index
80
- end
81
- END
82
-
83
- it 'registers an offense' do
84
- expect(cop.offenses.size).to eq(1)
85
- expect(cop.offenses.first.message).to eq(
86
- 'Unused block local variable - `block_local_variable`.'
87
- )
88
- expect(cop.offenses.first.line).to eq(1)
89
- expect(cop.highlights).to eq(['block_local_variable'])
90
- end
91
- end
92
- end
93
-
94
- context 'when a lambda block takes arguments' do
95
- context 'and all the arguments are unused' do
96
- let(:source) { <<-END }
97
- -> (foo, bar) { do_something }
98
- END
99
-
100
- it 'registers offenses and suggests using a proc' do
101
- expect(cop.offenses.size).to eq(2)
102
- expect(cop.offenses.first.message).to eq(
103
- 'Unused block argument - `foo`. ' \
104
- "If it's necessary, use `_` or `_foo` as an argument name " \
105
- "to indicate that it won't be used. " \
106
- 'Also consider using a proc without arguments instead of a ' \
107
- "lambda if you want it to accept any arguments but don't care " \
108
- 'about them.'
109
-
110
- )
111
- expect(cop.offenses.first.line).to eq(1)
112
- expect(cop.highlights).to eq(%w(foo bar))
113
- end
114
- end
115
-
116
- context 'and an arguments is unused' do
117
- let(:source) { <<-END }
118
- -> (foo, bar) { puts bar }
119
- END
120
-
121
- it 'registers an offense' do
122
- expect(cop.offenses.size).to eq(1)
123
- expect(cop.offenses.first.message).to eq(
124
- 'Unused block argument - `foo`. ' \
125
- "If it's necessary, use `_` or `_foo` as an argument name " \
126
- "to indicate that it won't be used."
127
- )
128
- expect(cop.offenses.first.line).to eq(1)
129
- expect(cop.highlights).to eq(['foo'])
130
- end
131
- end
132
- end
133
-
134
- context 'when an underscore-prefixed block argument is not used' do
135
- let(:source) { <<-END }
136
- 1.times do |_index|
137
- puts 'foo'
138
- end
139
- END
140
-
141
- it 'accepts' do
142
- expect(cop.offenses).to be_empty
143
- end
144
- end
145
-
146
- context 'when a method argument is not used' do
147
- let(:source) { <<-END }
148
- def some_method(foo)
149
- end
150
- END
151
-
152
- it 'does not care' do
153
- expect(cop.offenses).to be_empty
154
- end
155
- end
156
-
157
- context 'when a variable is not used' do
158
- let(:source) { <<-END }
159
- 1.times do
160
- foo = 1
161
- end
162
- END
163
-
164
- it 'does not care' do
165
- expect(cop.offenses).to be_empty
166
- end
167
- end
168
- end
169
-
170
- context 'auto-correct' do
171
- it 'fixes single' do
172
- expect(autocorrect_source(cop, <<-SOURCE
173
- arr.map { |foo| stuff }
174
- SOURCE
175
- )).to eq(<<-CORRECTED_SOURCE
176
- arr.map { |_foo| stuff }
177
- CORRECTED_SOURCE
178
- )
179
- end
180
-
181
- it 'fixes multiple' do
182
- expect(autocorrect_source(cop, <<-SOURCE
183
- hash.map { |key, val| stuff }
184
- SOURCE
185
- )).to eq(<<-CORRECTED_SOURCE
186
- hash.map { |_key, _val| stuff }
187
- CORRECTED_SOURCE
188
- )
189
- end
190
-
191
- it 'preserves whitespace' do
192
- expect(autocorrect_source(cop, <<-SOURCE
193
- hash.map { |key,
194
- val| stuff }
195
- SOURCE
196
- )).to eq(<<-CORRECTED_SOURCE
197
- hash.map { |_key,
198
- _val| stuff }
199
- CORRECTED_SOURCE
200
- )
201
- end
202
-
203
- it 'preserves splat' do
204
- expect(autocorrect_source(cop, <<-SOURCE
205
- obj.method { |foo, *bars, baz| stuff(foo, baz) }
206
- SOURCE
207
- )).to eq(<<-CORRECTED_SOURCE
208
- obj.method { |foo, *_bars, baz| stuff(foo, baz) }
209
- CORRECTED_SOURCE
210
- )
211
- end
212
-
213
- it 'preserves default' do
214
- expect(autocorrect_source(cop, <<-SOURCE
215
- obj.method { |foo, bar = baz| stuff(foo) }
216
- SOURCE
217
- )).to eq(<<-CORRECTED_SOURCE
218
- obj.method { |foo, _bar = baz| stuff(foo) }
219
- CORRECTED_SOURCE
220
- )
221
- end
222
-
223
- it 'ignores used' do
224
- original_source = <<-SOURCE
225
- obj.method { |foo, baz| stuff(foo, baz) }
226
- SOURCE
227
-
228
- expect(autocorrect_source(cop, original_source)).to eq(original_source)
229
- end
230
- end
231
- end