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,288 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::BracesAroundHashParameters, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- shared_examples 'general non-offenses' do
9
- after(:each) { expect(cop.offenses).to be_empty }
10
-
11
- it 'accepts one non-hash parameter' do
12
- inspect_source(cop, 'where(2)')
13
- end
14
-
15
- it 'accepts multiple non-hash parameters' do
16
- inspect_source(cop, 'where(1, "2")')
17
- end
18
-
19
- it 'accepts one empty hash parameter' do
20
- inspect_source(cop, 'where({})')
21
- end
22
-
23
- it 'accepts one empty hash parameter with whitespace' do
24
- inspect_source(cop, ['where( { ',
25
- " }\t ) "])
26
- end
27
- end
28
-
29
- shared_examples 'no_braces and context_dependent non-offenses' do
30
- after(:each) { expect(cop.offenses).to be_empty }
31
-
32
- it 'accepts one hash parameter without braces' do
33
- inspect_source(cop, 'where(x: "y")')
34
- end
35
-
36
- it 'accepts one hash parameter without braces and with multiple keys' do
37
- inspect_source(cop, 'where(x: "y", foo: "bar")')
38
- end
39
-
40
- it 'accepts one hash parameter without braces and with one hash value' do
41
- inspect_source(cop, 'where(x: { "y" => "z" })')
42
- end
43
-
44
- it 'accepts property assignment with braces' do
45
- inspect_source(cop, 'x.z = { y: "z" }')
46
- end
47
-
48
- it 'accepts operator with a hash parameter with braces' do
49
- inspect_source(cop, 'x.z - { y: "z" }')
50
- end
51
- end
52
-
53
- shared_examples 'no_braces and context_dependent offenses' do
54
- let(:msg) { 'Redundant curly braces around a hash parameter.' }
55
-
56
- it 'registers an offense for one non-hash parameter followed by a hash ' \
57
- 'parameter with braces' do
58
- inspect_source(cop, 'where(1, { y: 2 })')
59
- expect(cop.messages).to eq([msg])
60
- expect(cop.highlights).to eq(['{ y: 2 }'])
61
- end
62
-
63
- it 'registers an offense for one object method hash parameter with ' \
64
- 'braces' do
65
- inspect_source(cop, 'x.func({ y: "z" })')
66
- expect(cop.messages).to eq([msg])
67
- expect(cop.highlights).to eq(['{ y: "z" }'])
68
- end
69
-
70
- it 'registers an offense for one hash parameter with braces' do
71
- inspect_source(cop, 'where({ x: 1 })')
72
- expect(cop.messages).to eq([msg])
73
- expect(cop.highlights).to eq(['{ x: 1 }'])
74
- end
75
-
76
- it 'registers an offense for one hash parameter with braces and ' \
77
- 'whitespace' do
78
- inspect_source(cop, "where( \n { x: 1 } )")
79
- expect(cop.messages).to eq([msg])
80
- expect(cop.highlights).to eq(['{ x: 1 }'])
81
- end
82
-
83
- it 'registers an offense for one hash parameter with braces and multiple ' \
84
- 'keys' do
85
- inspect_source(cop, 'where({ x: 1, foo: "bar" })')
86
- expect(cop.messages).to eq([msg])
87
- expect(cop.highlights).to eq(['{ x: 1, foo: "bar" }'])
88
- end
89
- end
90
-
91
- shared_examples 'no_braces and context_dependent auto-corrections' do
92
- it 'corrects one non-hash parameter followed by a hash parameter with ' \
93
- 'braces' do
94
- corrected = autocorrect_source(cop, ['where(1, { y: 2 })'])
95
- expect(corrected).to eq('where(1, y: 2)')
96
- end
97
-
98
- it 'corrects one object method hash parameter with braces' do
99
- corrected = autocorrect_source(cop, ['x.func({ y: "z" })'])
100
- expect(corrected).to eq('x.func(y: "z")')
101
- end
102
-
103
- it 'corrects one hash parameter with braces' do
104
- corrected = autocorrect_source(cop, ['where({ x: 1 })'])
105
- expect(corrected).to eq('where(x: 1)')
106
- end
107
-
108
- it 'corrects one hash parameter with braces and whitespace' do
109
- corrected = autocorrect_source(cop, ['where( ',
110
- ' { x: 1 } )'])
111
- expect(corrected).to eq(['where( ',
112
- ' x: 1 )'].join("\n"))
113
- end
114
-
115
- it 'corrects one hash parameter with braces and multiple keys' do
116
- corrected = autocorrect_source(cop, ['where({ x: 1, foo: "bar" })'])
117
- expect(corrected).to eq('where(x: 1, foo: "bar")')
118
- end
119
-
120
- it 'corrects one hash parameter with braces and extra leading whitespace' do
121
- corrected = autocorrect_source(cop, ['where({ x: 1, y: 2 })'])
122
- expect(corrected).to eq('where(x: 1, y: 2)')
123
- end
124
-
125
- it 'corrects one hash parameter with braces and extra trailing ' \
126
- 'whitespace' do
127
- corrected = autocorrect_source(cop, ['where({ x: 1, y: 2 })'])
128
- expect(corrected).to eq('where(x: 1, y: 2)')
129
- end
130
-
131
- it 'corrects one hash parameter with braces and a trailing comma' do
132
- corrected = autocorrect_source(cop, ['where({ x: 1, y: 2, })'])
133
- expect(corrected).to eq('where(x: 1, y: 2,)')
134
- end
135
-
136
- it 'corrects one hash parameter with braces and trailing comma and ' \
137
- 'whitespace' do
138
- corrected = autocorrect_source(cop, ['where({ x: 1, y: 2, })'])
139
- expect(corrected).to eq('where(x: 1, y: 2,)')
140
- end
141
-
142
- it 'corrects one hash parameter with braces without adding extra space' do
143
- corrected = autocorrect_source(cop, 'get :i, { q: { x: 1 } }')
144
- expect(corrected).to eq('get :i, q: { x: 1 }')
145
- end
146
- end
147
-
148
- context 'when EnforcedStyle is no_braces' do
149
- let(:cop_config) { { 'EnforcedStyle' => 'no_braces' } }
150
-
151
- context 'for correct code' do
152
- include_examples 'general non-offenses'
153
- include_examples 'no_braces and context_dependent non-offenses'
154
- end
155
-
156
- context 'for incorrect code' do
157
- include_examples 'no_braces and context_dependent offenses'
158
-
159
- after(:each) do
160
- expect(cop.messages)
161
- .to eq(['Redundant curly braces around a hash parameter.'])
162
- end
163
-
164
- it 'registers an offense for two hash parameters with braces' do
165
- inspect_source(cop, 'where({ x: 1 }, { y: 2 })')
166
- expect(cop.highlights).to eq(['{ y: 2 }'])
167
- end
168
- end
169
-
170
- describe '#autocorrect' do
171
- include_examples 'no_braces and context_dependent auto-corrections'
172
-
173
- it 'corrects one hash parameter with braces' do
174
- corrected = autocorrect_source(cop, ['where(1, { x: 1 })'])
175
- expect(corrected).to eq('where(1, x: 1)')
176
- end
177
-
178
- it 'corrects two hash parameters with braces' do
179
- corrected = autocorrect_source(cop, ['where(1, { x: 1 }, { y: 2 })'])
180
- expect(corrected).to eq('where(1, { x: 1 }, y: 2)')
181
- end
182
- end
183
- end
184
-
185
- context 'when EnforcedStyle is context_dependent' do
186
- let(:cop_config) { { 'EnforcedStyle' => 'context_dependent' } }
187
-
188
- context 'for correct code' do
189
- include_examples 'general non-offenses'
190
- include_examples 'no_braces and context_dependent non-offenses'
191
-
192
- it 'accepts two hash parameters with braces' do
193
- inspect_source(cop, 'where({ x: 1 }, { y: 2 })')
194
- expect(cop.offenses).to be_empty
195
- end
196
- end
197
-
198
- context 'for incorrect code' do
199
- include_examples 'no_braces and context_dependent offenses'
200
-
201
- it 'registers an offense for one hash parameter with braces and one ' \
202
- 'without' do
203
- inspect_source(cop, 'where({ x: 1 }, y: 2)')
204
- expect(cop.messages)
205
- .to eq(['Missing curly braces around a hash parameter.'])
206
- expect(cop.highlights).to eq(['y: 2'])
207
- end
208
- end
209
-
210
- describe '#autocorrect' do
211
- include_examples 'no_braces and context_dependent auto-corrections'
212
-
213
- it 'corrects one hash parameter with braces and one without' do
214
- corrected = autocorrect_source(cop, ['where(1, { x: 1 }, y: 2)'])
215
- expect(corrected).to eq('where(1, { x: 1 }, {y: 2})')
216
- end
217
-
218
- it 'corrects one hash parameter with braces' do
219
- corrected = autocorrect_source(cop, ['where(1, { x: 1 })'])
220
- expect(corrected).to eq('where(1, x: 1)')
221
- end
222
- end
223
- end
224
-
225
- context 'when EnforcedStyle is braces' do
226
- let(:cop_config) { { 'EnforcedStyle' => 'braces' } }
227
-
228
- context 'for correct code' do
229
- include_examples 'general non-offenses'
230
-
231
- after(:each) { expect(cop.offenses).to be_empty }
232
-
233
- it 'accepts one hash parameter with braces' do
234
- inspect_source(cop, 'where({ x: 1 })')
235
- end
236
-
237
- it 'accepts multiple hash parameters with braces' do
238
- inspect_source(cop, 'where({ x: 1 }, { y: 2 })')
239
- end
240
-
241
- it 'accepts one hash parameter with braces and whitespace' do
242
- inspect_source(cop, ["where( \t { x: 1 ",
243
- ' } )'])
244
- end
245
- end
246
-
247
- context 'for incorrect code' do
248
- after(:each) do
249
- expect(cop.messages)
250
- .to eq(['Missing curly braces around a hash parameter.'])
251
- end
252
-
253
- it 'registers an offense for one hash parameter without braces' do
254
- inspect_source(cop, 'where(x: "y")')
255
- expect(cop.highlights).to eq(['x: "y"'])
256
- end
257
-
258
- it 'registers an offense for one hash parameter with multiple keys and ' \
259
- 'without braces' do
260
- inspect_source(cop, 'where(x: "y", foo: "bar")')
261
- expect(cop.highlights).to eq(['x: "y", foo: "bar"'])
262
- end
263
-
264
- it 'registers an offense for one hash parameter without braces with ' \
265
- 'one hash value' do
266
- inspect_source(cop, 'where(x: { "y" => "z" })')
267
- expect(cop.highlights).to eq(['x: { "y" => "z" }'])
268
- end
269
- end
270
-
271
- describe '#autocorrect' do
272
- it 'corrects one hash parameter without braces' do
273
- corrected = autocorrect_source(cop, ['where(x: "y")'])
274
- expect(corrected).to eq('where({x: "y"})')
275
- end
276
-
277
- it 'corrects one hash parameter with multiple keys and without braces' do
278
- corrected = autocorrect_source(cop, ['where(x: "y", foo: "bar")'])
279
- expect(corrected).to eq('where({x: "y", foo: "bar"})')
280
- end
281
-
282
- it 'corrects one hash parameter without braces with one hash value' do
283
- corrected = autocorrect_source(cop, ['where(x: { "y" => "z" })'])
284
- expect(corrected).to eq('where({x: { "y" => "z" }})')
285
- end
286
- end
287
- end
288
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::CaseEquality do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for ===' do
9
- inspect_source(cop, 'Array === var')
10
- expect(cop.offenses.size).to eq(1)
11
- expect(cop.highlights).to eq(['==='])
12
- end
13
- end
@@ -1,293 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::CaseIndentation do
6
- subject(:cop) { described_class.new(config) }
7
- let(:config) do
8
- merged = RuboCop::ConfigLoader
9
- .default_configuration['Style/CaseIndentation'].merge(cop_config)
10
- RuboCop::Config.new('Style/CaseIndentation' => merged,
11
- 'Style/IndentationWidth' => { 'Width' => 2 })
12
- end
13
-
14
- context 'with IndentWhenRelativeTo: case' do
15
- context 'with IndentOneStep: false' do
16
- let(:cop_config) do
17
- { 'IndentWhenRelativeTo' => 'case', 'IndentOneStep' => false }
18
- end
19
-
20
- context 'regarding assignment where the right hand side is a case' do
21
- it 'accepts a correctly indented assignment' do
22
- source = ['output = case variable',
23
- " when 'value1'",
24
- " 'output1'",
25
- ' else',
26
- " 'output2'",
27
- ' end']
28
- inspect_source(cop, source)
29
- expect(cop.offenses).to be_empty
30
- end
31
-
32
- it 'registers an offense for an assignment indented as end' do
33
- source = ['output = case variable',
34
- "when 'value1'",
35
- " 'output1'",
36
- 'else',
37
- " 'output2'",
38
- 'end']
39
- inspect_source(cop, source)
40
- expect(cop.messages).to eq(['Indent `when` as deep as `case`.'])
41
- expect(cop.config_to_allow_offenses).to eq('IndentWhenRelativeTo' =>
42
- 'end')
43
- end
44
-
45
- it 'registers an offense for an assignment indented some other way' do
46
- source = ['output = case variable',
47
- " when 'value1'",
48
- " 'output1'",
49
- ' else',
50
- " 'output2'",
51
- 'end']
52
- inspect_source(cop, source)
53
- expect(cop.messages).to eq(['Indent `when` as deep as `case`.'])
54
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
55
- end
56
-
57
- it 'registers an offense for correct + opposite' do
58
- source = ['output = case variable',
59
- " when 'value1'",
60
- " 'output1'",
61
- ' else',
62
- " 'output2'",
63
- ' end',
64
- 'output = case variable',
65
- "when 'value1'",
66
- " 'output1'",
67
- 'else',
68
- " 'output2'",
69
- 'end']
70
- inspect_source(cop, source)
71
- expect(cop.messages).to eq(['Indent `when` as deep as `case`.'])
72
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
73
- end
74
- end
75
-
76
- it "registers an offense for a when clause that's deeper than case" do
77
- source = ['case a',
78
- ' when 0 then return',
79
- ' else',
80
- ' case b',
81
- ' when 1 then return',
82
- ' end',
83
- 'end']
84
- inspect_source(cop, source)
85
- expect(cop.messages).to eq(['Indent `when` as deep as `case`.'] * 2)
86
- end
87
-
88
- it "accepts a when clause that's equally indented with case" do
89
- source = ['y = case a',
90
- ' when 0 then break',
91
- ' when 0 then return',
92
- ' else',
93
- ' z = case b',
94
- ' when 1 then return',
95
- ' when 1 then break',
96
- ' end',
97
- ' end',
98
- 'case c',
99
- 'when 2 then encoding',
100
- 'end',
101
- '']
102
- inspect_source(cop, source)
103
- expect(cop.offenses).to be_empty
104
- end
105
-
106
- it "doesn't get confused by strings with case in them" do
107
- source = ['a = "case"',
108
- 'case x',
109
- 'when 0',
110
- 'end',
111
- '']
112
- inspect_source(cop, source)
113
- expect(cop.messages).to be_empty
114
- end
115
-
116
- it "doesn't get confused by symbols named case or when" do
117
- source = ['KEYWORDS = { :case => true, :when => true }',
118
- 'case type',
119
- 'when 0',
120
- ' ParameterNode',
121
- 'when 1',
122
- ' MethodCallNode',
123
- 'end',
124
- '']
125
- inspect_source(cop, source)
126
- expect(cop.messages).to be_empty
127
- end
128
-
129
- it 'accepts correctly indented whens in complex combinations' do
130
- source = ['each {',
131
- ' case state',
132
- ' when 0',
133
- ' case name',
134
- ' when :a',
135
- ' end',
136
- ' when 1',
137
- ' loop {',
138
- ' case name',
139
- ' when :b',
140
- ' end',
141
- ' }',
142
- ' end',
143
- '}',
144
- 'case s',
145
- 'when Array',
146
- 'end',
147
- '']
148
- inspect_source(cop, source)
149
- expect(cop.messages).to be_empty
150
- end
151
- end
152
-
153
- context 'with IndentOneStep: true' do
154
- let(:cop_config) do
155
- { 'IndentWhenRelativeTo' => 'case', 'IndentOneStep' => true }
156
- end
157
-
158
- context 'regarding assignment where the right hand side is a case' do
159
- it 'accepts a correctly indented assignment' do
160
- source = ['output = case variable',
161
- " when 'value1'",
162
- " 'output1'",
163
- ' else',
164
- " 'output2'",
165
- ' end']
166
- inspect_source(cop, source)
167
- expect(cop.offenses).to be_empty
168
- end
169
-
170
- it 'registers an offense for an assignment indented some other way' do
171
- source = ['output = case variable',
172
- " when 'value1'",
173
- " 'output1'",
174
- ' else',
175
- " 'output2'",
176
- ' end']
177
- inspect_source(cop, source)
178
- expect(cop.messages)
179
- .to eq(['Indent `when` one step more than `case`.'])
180
- end
181
- end
182
-
183
- it "accepts a when clause that's 2 spaces deeper than case" do
184
- source = ['case a',
185
- ' when 0 then return',
186
- ' else',
187
- ' case b',
188
- ' when 1 then return',
189
- ' end',
190
- 'end']
191
- inspect_source(cop, source)
192
- expect(cop.offenses).to be_empty
193
- end
194
-
195
- it "registers an offense for a when clause that's equally indented " \
196
- 'with case' do
197
- source = ['y = case a',
198
- ' when 0 then break',
199
- ' when 0 then return',
200
- ' z = case b',
201
- ' when 1 then return',
202
- ' when 1 then break',
203
- ' end',
204
- ' end',
205
- 'case c',
206
- 'when 2 then encoding',
207
- 'end',
208
- '']
209
- inspect_source(cop, source)
210
- expect(cop.messages)
211
- .to eq(['Indent `when` one step more than `case`.'] * 5)
212
- end
213
- end
214
- end
215
-
216
- context 'with IndentWhenRelativeTo: end' do
217
- context 'with IndentOneStep: false' do
218
- let(:cop_config) do
219
- { 'IndentWhenRelativeTo' => 'end', 'IndentOneStep' => false }
220
- end
221
-
222
- context 'regarding assignment where the right hand side is a case' do
223
- it 'accepts a correctly indented assignment' do
224
- source = ['output = case variable',
225
- "when 'value1'",
226
- " 'output1'",
227
- 'else',
228
- " 'output2'",
229
- 'end']
230
- inspect_source(cop, source)
231
- expect(cop.offenses).to be_empty
232
- end
233
-
234
- it 'registers an offense for an assignment indented some other way' do
235
- source = ['output = case variable',
236
- " when 'value1'",
237
- " 'output1'",
238
- ' else',
239
- " 'output2'",
240
- 'end']
241
- inspect_source(cop, source)
242
- expect(cop.messages).to eq(['Indent `when` as deep as `end`.'])
243
- end
244
- end
245
- end
246
-
247
- context 'with IndentOneStep: true' do
248
- let(:cop_config) do
249
- { 'IndentWhenRelativeTo' => 'end', 'IndentOneStep' => true }
250
- end
251
-
252
- context 'regarding assignment where the right hand side is a case' do
253
- it 'accepts a correctly indented assignment' do
254
- source = ['output = case variable',
255
- " when 'value1'",
256
- " 'output1'",
257
- ' else',
258
- " 'output2'",
259
- 'end']
260
- inspect_source(cop, source)
261
- expect(cop.offenses).to be_empty
262
- end
263
-
264
- it 'registers an offense for an assignment indented as case' do
265
- source = ['output = case variable',
266
- " when 'value1'",
267
- " 'output1'",
268
- ' else',
269
- " 'output2'",
270
- ' end']
271
- inspect_source(cop, source)
272
- expect(cop.messages)
273
- .to eq(['Indent `when` one step more than `end`.'])
274
- expect(cop.config_to_allow_offenses).to eq('IndentWhenRelativeTo' =>
275
- 'case')
276
- end
277
-
278
- it 'registers an offense for an assignment indented some other way' do
279
- source = ['output = case variable',
280
- " when 'value1'",
281
- " 'output1'",
282
- ' else',
283
- " 'output2'",
284
- ' end']
285
- inspect_source(cop, source)
286
- expect(cop.messages)
287
- .to eq(['Indent `when` one step more than `end`.'])
288
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
289
- end
290
- end
291
- end
292
- end
293
- end