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,83 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::TrailingBlankLines, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'when EnforcedStyle is final_newline' do
9
- let(:cop_config) { { 'EnforcedStyle' => 'final_newline' } }
10
-
11
- it 'accepts final newline' do
12
- inspect_source(cop, ['x = 0', ''])
13
- expect(cop.offenses).to be_empty
14
- end
15
-
16
- it 'accepts an empty file' do
17
- inspect_source(cop, '')
18
- expect(cop.offenses).to be_empty
19
- end
20
-
21
- it 'registers an offense for multiple trailing blank lines' do
22
- inspect_source(cop, ['x = 0', '', '', '', ''])
23
- expect(cop.offenses.size).to eq(1)
24
- expect(cop.messages).to eq(['3 trailing blank lines detected.'])
25
- end
26
-
27
- it 'registers an offense for no final newline' do
28
- inspect_source(cop, 'x = 0')
29
- expect(cop.messages).to eq(['Final newline missing.'])
30
- end
31
-
32
- it 'auto-corrects unwanted blank lines' do
33
- new_source = autocorrect_source(cop, ['x = 0', '', '', '', ''])
34
- expect(new_source).to eq(['x = 0', ''].join("\n"))
35
- end
36
-
37
- it 'auto-corrects even if some lines have space' do
38
- new_source = autocorrect_source(cop, ['x = 0', '', ' ', '', ''])
39
- expect(new_source).to eq(['x = 0', ''].join("\n"))
40
- end
41
- end
42
-
43
- context 'when EnforcedStyle is final_blank_line' do
44
- let(:cop_config) { { 'EnforcedStyle' => 'final_blank_line' } }
45
-
46
- it 'registers an offense for final newline' do
47
- inspect_source(cop, ['x = 0', ''])
48
- expect(cop.messages).to eq(['Trailing blank line missing.'])
49
- end
50
-
51
- it 'registers an offense for multiple trailing blank lines' do
52
- inspect_source(cop, ['x = 0', '', '', '', ''])
53
- expect(cop.offenses.size).to eq(1)
54
- expect(cop.messages)
55
- .to eq(['3 trailing blank lines instead of 1 detected.'])
56
- end
57
-
58
- it 'registers an offense for no final newline' do
59
- inspect_source(cop, 'x = 0')
60
- expect(cop.messages).to eq(['Final newline missing.'])
61
- end
62
-
63
- it 'accepts final blank line' do
64
- inspect_source(cop, ['x = 0', '', ''])
65
- expect(cop.offenses).to be_empty
66
- end
67
-
68
- it 'auto-corrects unwanted blank lines' do
69
- new_source = autocorrect_source(cop, ['x = 0', '', '', '', ''])
70
- expect(new_source).to eq(['x = 0', '', ''].join("\n"))
71
- end
72
-
73
- it 'auto-corrects missing blank line' do
74
- new_source = autocorrect_source(cop, ['x = 0', ''])
75
- expect(new_source).to eq(['x = 0', '', ''].join("\n"))
76
- end
77
-
78
- it 'auto-corrects missing newline' do
79
- new_source = autocorrect_source(cop, ['x = 0'])
80
- expect(new_source).to eq(['x = 0', '', ''].join("\n"))
81
- end
82
- end
83
- end
@@ -1,390 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::TrailingComma, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- shared_examples 'single line lists' do |extra_info|
9
- it 'registers an offense for trailing comma in an Array literal' do
10
- inspect_source(cop, 'VALUES = [1001, 2020, 3333, ]')
11
- expect(cop.messages)
12
- .to eq(["Avoid comma after the last item of an array#{extra_info}."])
13
- expect(cop.highlights).to eq([','])
14
- end
15
-
16
- it 'registers an offense for trailing comma in a Hash literal' do
17
- inspect_source(cop, 'MAP = { a: 1001, b: 2020, c: 3333, }')
18
- expect(cop.messages)
19
- .to eq(["Avoid comma after the last item of a hash#{extra_info}."])
20
- expect(cop.highlights).to eq([','])
21
- end
22
-
23
- it 'registers an offense for trailing comma in a method call' do
24
- inspect_source(cop, 'some_method(a, b, c, )')
25
- expect(cop.messages)
26
- .to eq(['Avoid comma after the last parameter of a method ' \
27
- "call#{extra_info}."])
28
- expect(cop.highlights).to eq([','])
29
- end
30
-
31
- it 'registers an offense for trailing comma in a method call with hash' \
32
- ' parameters at the end' do
33
- inspect_source(cop, 'some_method(a, b, c: 0, d: 1, )')
34
- expect(cop.messages)
35
- .to eq(['Avoid comma after the last parameter of a method ' \
36
- "call#{extra_info}."])
37
- expect(cop.highlights).to eq([','])
38
- end
39
-
40
- it 'accepts Array literal without trailing comma' do
41
- inspect_source(cop, 'VALUES = [1001, 2020, 3333]')
42
- expect(cop.offenses).to be_empty
43
- end
44
-
45
- it 'accepts empty Array literal' do
46
- inspect_source(cop, 'VALUES = []')
47
- expect(cop.offenses).to be_empty
48
- end
49
-
50
- it 'accepts rescue clause' do
51
- # The list of rescued classes is an array.
52
- inspect_source(cop, ['begin',
53
- ' do_something',
54
- 'rescue RuntimeError',
55
- 'end'])
56
- expect(cop.offenses).to be_empty
57
- end
58
-
59
- it 'accepts Hash literal without trailing comma' do
60
- inspect_source(cop, 'MAP = { a: 1001, b: 2020, c: 3333 }')
61
- expect(cop.offenses).to be_empty
62
- end
63
-
64
- it 'accepts empty Hash literal' do
65
- inspect_source(cop, 'MAP = {}')
66
- expect(cop.offenses).to be_empty
67
- end
68
-
69
- it 'accepts method call without trailing comma' do
70
- inspect_source(cop, 'some_method(a, b, c)')
71
- expect(cop.offenses).to be_empty
72
- end
73
-
74
- it 'accepts method call without parameters' do
75
- inspect_source(cop, 'some_method')
76
- expect(cop.offenses).to be_empty
77
- end
78
-
79
- it 'auto-corrects unwanted comma in an Array literal' do
80
- new_source = autocorrect_source(cop, 'VALUES = [1001, 2020, 3333, ]')
81
- expect(new_source).to eq('VALUES = [1001, 2020, 3333 ]')
82
- end
83
-
84
- it 'auto-corrects unwanted comma in a Hash literal' do
85
- new_source = autocorrect_source(cop,
86
- 'MAP = { a: 1001, b: 2020, c: 3333, }')
87
- expect(new_source).to eq('MAP = { a: 1001, b: 2020, c: 3333 }')
88
- end
89
-
90
- it 'auto-corrects unwanted comma in a method call' do
91
- new_source = autocorrect_source(cop, 'some_method(a, b, c, )')
92
- expect(new_source).to eq('some_method(a, b, c )')
93
- end
94
-
95
- it 'auto-corrects unwanted comma in a method call with hash parameters at' \
96
- ' the end' do
97
- new_source = autocorrect_source(cop, 'some_method(a, b, c: 0, d: 1, )')
98
- expect(new_source).to eq('some_method(a, b, c: 0, d: 1 )')
99
- end
100
- end
101
-
102
- context 'with single line list of values' do
103
- context 'when EnforcedStyleForMultiline is no_comma' do
104
- let(:cop_config) { { 'EnforcedStyleForMultiline' => 'no_comma' } }
105
- include_examples 'single line lists', ''
106
- end
107
-
108
- context 'when EnforcedStyleForMultiline is comma' do
109
- let(:cop_config) { { 'EnforcedStyleForMultiline' => 'comma' } }
110
- include_examples 'single line lists',
111
- ', unless each item is on its own line'
112
- end
113
- end
114
-
115
- context 'with multi-line list of values' do
116
- context 'when EnforcedStyleForMultiline is no_comma' do
117
- let(:cop_config) { { 'EnforcedStyleForMultiline' => 'no_comma' } }
118
-
119
- it 'registers an offense for trailing comma in an Array literal' do
120
- inspect_source(cop, ['VALUES = [',
121
- ' 1001,',
122
- ' 2020,',
123
- ' 3333,',
124
- ' ]'])
125
- expect(cop.highlights).to eq([','])
126
- end
127
-
128
- it 'registers an offense for trailing comma in a Hash literal' do
129
- inspect_source(cop, ['MAP = { a: 1001,',
130
- ' b: 2020,',
131
- ' c: 3333,',
132
- ' }'])
133
- expect(cop.highlights).to eq([','])
134
- end
135
-
136
- it 'registers an offense for trailing comma in a method call with ' \
137
- 'hash parameters at the end' do
138
- inspect_source(cop, ['some_method(',
139
- ' a,',
140
- ' b,',
141
- ' c: 0,',
142
- ' d: 1,)'])
143
- expect(cop.highlights).to eq([','])
144
- end
145
-
146
- it 'accepts an Array literal with no trailing comma' do
147
- inspect_source(cop, ['VALUES = [ 1001,',
148
- ' 2020,',
149
- ' 3333 ]'])
150
- expect(cop.offenses).to be_empty
151
- end
152
-
153
- it 'accepts a Hash literal with no trailing comma' do
154
- inspect_source(cop, ['MAP = {',
155
- ' a: 1001,',
156
- ' b: 2020,',
157
- ' c: 3333',
158
- ' }'])
159
- expect(cop.offenses).to be_empty
160
- end
161
-
162
- it 'accepts a method call with ' \
163
- 'hash parameters at the end and no trailing comma' do
164
- inspect_source(cop, ['some_method(a,',
165
- ' b,',
166
- ' c: 0,',
167
- ' d: 1',
168
- ' )'])
169
- expect(cop.offenses).to be_empty
170
- end
171
-
172
- it 'accepts comma inside a heredoc parameters at the end' do
173
- inspect_source(cop, ['route(help: {',
174
- " 'auth' => <<-HELP.chomp",
175
- ',',
176
- 'HELP',
177
- '})'])
178
- expect(cop.offenses).to be_empty
179
- end
180
-
181
- it 'auto-corrects unwanted comma in an Array literal' do
182
- new_source = autocorrect_source(cop, ['VALUES = [',
183
- ' 1001,',
184
- ' 2020,',
185
- ' 3333,',
186
- ' ]'])
187
- expect(new_source).to eq(['VALUES = [',
188
- ' 1001,',
189
- ' 2020,',
190
- ' 3333',
191
- ' ]'].join("\n"))
192
- end
193
-
194
- it 'auto-corrects unwanted comma in a Hash literal' do
195
- new_source = autocorrect_source(cop, ['MAP = { a: 1001,',
196
- ' b: 2020,',
197
- ' c: 3333,',
198
- ' }'])
199
- expect(new_source).to eq(['MAP = { a: 1001,',
200
- ' b: 2020,',
201
- ' c: 3333',
202
- ' }'].join("\n"))
203
- end
204
-
205
- it 'auto-corrects unwanted comma in a method call with hash parameters' \
206
- ' at the end' do
207
- new_source = autocorrect_source(cop, ['some_method(',
208
- ' a,',
209
- ' b,',
210
- ' c: 0,',
211
- ' d: 1,)'])
212
- expect(new_source).to eq(['some_method(',
213
- ' a,',
214
- ' b,',
215
- ' c: 0,',
216
- ' d: 1)'].join("\n"))
217
- end
218
- end
219
-
220
- context 'when EnforcedStyleForMultiline is comma' do
221
- let(:cop_config) { { 'EnforcedStyleForMultiline' => 'comma' } }
222
-
223
- context 'when closing bracket is on same line as last value' do
224
- it 'accepts Array literal with no trailing comma' do
225
- inspect_source(cop, ['VALUES = [',
226
- ' 1001,',
227
- ' 2020,',
228
- ' 3333]'])
229
- expect(cop.offenses).to be_empty
230
- end
231
-
232
- it 'accepts a method call with Hash as last parameter split on ' \
233
- 'multiple lines' do
234
- inspect_source(cop, ['some_method(a: "b",',
235
- ' c: "d")'])
236
- expect(cop.offenses).to be_empty
237
- end
238
- end
239
-
240
- it 'accepts Array literal with two of the values on the same line' do
241
- inspect_source(cop, ['VALUES = [',
242
- ' 1001, 2020,',
243
- ' 3333',
244
- ' ]'])
245
- expect(cop.offenses).to be_empty
246
- end
247
-
248
- it 'registers an offense for an Array literal with two of the values ' \
249
- 'on the same line and a trailing comma' do
250
- inspect_source(cop, ['VALUES = [',
251
- ' 1001, 2020,',
252
- ' 3333,',
253
- ' ]'])
254
- expect(cop.messages)
255
- .to eq(['Avoid comma after the last item of an array, unless each ' \
256
- 'item is on its own line.'])
257
- end
258
-
259
- it 'registers an offense for no trailing comma in a Hash literal' do
260
- inspect_source(cop, ['MAP = { a: 1001,',
261
- ' b: 2020,',
262
- ' c: 3333',
263
- '}'])
264
- expect(cop.messages)
265
- .to eq(['Put a comma after the last item of a multiline hash.'])
266
- expect(cop.highlights).to eq(['c: 3333'])
267
- end
268
-
269
- it 'registers an offense for no trailing comma in a method call with' \
270
- ' hash parameters at the end' do
271
- inspect_source(cop, ['some_method(',
272
- ' a,',
273
- ' b,',
274
- ' c: 0,',
275
- ' d: 1',
276
- ' )'])
277
- expect(cop.messages)
278
- .to eq(['Put a comma after the last parameter of a multiline ' \
279
- 'method call.'])
280
- expect(cop.highlights).to eq(['d: 1'])
281
- end
282
-
283
- it 'accepts a method call with two parameters on the same line' do
284
- inspect_source(cop, ['some_method(a, b',
285
- ' )'])
286
- expect(cop.offenses).to be_empty
287
- end
288
-
289
- it 'accepts trailing comma in an Array literal' do
290
- inspect_source(cop, ['VALUES = [1001,',
291
- ' 2020,',
292
- ' 3333,',
293
- ' ]'])
294
- expect(cop.offenses).to be_empty
295
- end
296
-
297
- it 'accepts trailing comma in a Hash literal' do
298
- inspect_source(cop, ['MAP = {',
299
- ' a: 1001,',
300
- ' b: 2020,',
301
- ' c: 3333,',
302
- ' }'])
303
- expect(cop.offenses).to be_empty
304
- end
305
-
306
- it 'accepts trailing comma in a method call with hash' \
307
- ' parameters at the end' do
308
- inspect_source(cop, ['some_method(',
309
- ' a,',
310
- ' b,',
311
- ' c: 0,',
312
- ' d: 1,',
313
- ' )'])
314
- expect(cop.offenses).to be_empty
315
- end
316
-
317
- # this is a sad parse error
318
- it 'accepts no trailing comma in a method call with a block' \
319
- ' parameter at the end' do
320
- inspect_source(cop, ['some_method(',
321
- ' a,',
322
- ' b,',
323
- ' c: 0,',
324
- ' d: 1,',
325
- ' &block',
326
- ' )'])
327
- expect(cop.offenses).to be_empty
328
- end
329
-
330
- it 'accepts a multiline word array' do
331
- inspect_source(cop, ['ingredients = %w(',
332
- ' sausage',
333
- ' anchovies',
334
- ' olives',
335
- ')'])
336
- expect(cop.offenses).to be_empty
337
- end
338
-
339
- it 'accepts missing comma after a heredoc' do
340
- # A heredoc that's the last item in a literal or parameter list can not
341
- # have a trailing comma. It's a syntax error.
342
- inspect_source(cop, ['route(help: {',
343
- " 'auth' => <<-HELP.chomp",
344
- '...',
345
- 'HELP',
346
- '})'])
347
- expect(cop.offenses).to be_empty
348
- end
349
-
350
- it 'auto-corrects an Array literal with two of the values on the same' \
351
- ' line and a trailing comma' do
352
- new_source = autocorrect_source(cop, ['VALUES = [',
353
- ' 1001, 2020,',
354
- ' 3333,',
355
- ' ]'])
356
- expect(new_source).to eq(['VALUES = [',
357
- ' 1001, 2020,',
358
- ' 3333',
359
- ' ]'].join("\n"))
360
- end
361
-
362
- it 'auto-corrects missing comma in a Hash literal' do
363
- new_source = autocorrect_source(cop, ['MAP = { a: 1001,',
364
- ' b: 2020,',
365
- ' c: 3333',
366
- '}'])
367
- expect(new_source).to eq(['MAP = { a: 1001,',
368
- ' b: 2020,',
369
- ' c: 3333,',
370
- '}'].join("\n"))
371
- end
372
-
373
- it 'auto-corrects missing comma in a method call with hash parameters' \
374
- ' at the end' do
375
- new_source = autocorrect_source(cop, ['some_method(',
376
- ' a,',
377
- ' b,',
378
- ' c: 0,',
379
- ' d: 1',
380
- ' )'])
381
- expect(new_source).to eq(['some_method(',
382
- ' a,',
383
- ' b,',
384
- ' c: 0,',
385
- ' d: 1,',
386
- ' )'].join("\n"))
387
- end
388
- end
389
- end
390
- end