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,431 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::AlignParameters do
6
- subject(:cop) { described_class.new(config) }
7
- let(:config) do
8
- RuboCop::Config.new('Style/AlignParameters' => cop_config,
9
- 'Style/IndentationWidth' => {
10
- 'Width' => indentation_width
11
- })
12
- end
13
- let(:indentation_width) { 2 }
14
-
15
- context 'aligned with first parameter' do
16
- let(:cop_config) do
17
- {
18
- 'EnforcedStyle' => 'with_first_parameter'
19
- }
20
- end
21
-
22
- it 'registers an offense for parameters with single indent' do
23
- inspect_source(cop, ['function(a,',
24
- ' if b then c else d end)'])
25
- expect(cop.offenses.size).to eq(1)
26
- expect(cop.highlights).to eq(['if b then c else d end'])
27
- end
28
-
29
- it 'registers an offense for parameters with double indent' do
30
- inspect_source(cop, ['function(a,',
31
- ' if b then c else d end)'])
32
- expect(cop.offenses.size).to eq(1)
33
- end
34
-
35
- it 'accepts multiline []= method call' do
36
- inspect_source(cop, ['Test.config["something"] =',
37
- ' true'])
38
- expect(cop.offenses).to be_empty
39
- end
40
-
41
- it 'accepts correctly aligned parameters' do
42
- inspect_source(cop, ['function(a,',
43
- ' 0, 1,',
44
- ' (x + y),',
45
- ' if b then c else d end)'])
46
- expect(cop.offenses).to be_empty
47
- end
48
-
49
- it 'accepts calls that only span one line' do
50
- inspect_source(cop, 'find(path, s, @special[sexp[0]])')
51
- expect(cop.offenses).to be_empty
52
- end
53
-
54
- it "doesn't get confused by a symbol argument" do
55
- inspect_source(cop, ['add_offense(index,',
56
- ' MSG % kind)'])
57
- expect(cop.offenses).to be_empty
58
- end
59
-
60
- it "doesn't get confused by splat operator" do
61
- inspect_source(cop, ['func1(*a,',
62
- ' *b,',
63
- ' c)',
64
- 'func2(a,',
65
- ' *b,',
66
- ' c)',
67
- 'func3(*a)'
68
- ])
69
- expect(cop.offenses.map(&:to_s))
70
- .to eq(['C: 5: 6: Align the parameters of a method call if ' \
71
- 'they span more than one line.'])
72
- expect(cop.highlights).to eq(['*b'])
73
- end
74
-
75
- it "doesn't get confused by extra comma at the end" do
76
- inspect_source(cop, ['func1(a,',
77
- ' b,)'])
78
- expect(cop.offenses.map(&:to_s))
79
- .to eq(['C: 2: 6: Align the parameters of a method call if ' \
80
- 'they span more than one line.'])
81
- expect(cop.highlights).to eq(['b'])
82
- end
83
-
84
- it 'can handle a correctly aligned string literal as first argument' do
85
- inspect_source(cop, ['add_offense(x,',
86
- ' a)'])
87
- expect(cop.offenses).to be_empty
88
- end
89
-
90
- it 'can handle a string literal as other argument' do
91
- inspect_source(cop, ['add_offense(',
92
- ' "", a)'])
93
- expect(cop.offenses).to be_empty
94
- end
95
-
96
- it "doesn't get confused by a line break inside a parameter" do
97
- inspect_source(cop, ['read(path, { headers: true,',
98
- ' converters: :numeric })'])
99
- expect(cop.offenses).to be_empty
100
- end
101
-
102
- it "doesn't get confused by symbols with embedded expressions" do
103
- inspect_source(cop, 'send(:"#{name}_comments_path")')
104
- expect(cop.offenses).to be_empty
105
- end
106
-
107
- it "doesn't get confused by regexen with embedded expressions" do
108
- inspect_source(cop, 'a(/#{name}/)')
109
- expect(cop.offenses).to be_empty
110
- end
111
-
112
- it 'accepts braceless hashes' do
113
- inspect_source(cop, ['run(collection, :entry_name => label,',
114
- ' :paginator => paginator)'])
115
- expect(cop.offenses).to be_empty
116
- end
117
-
118
- it 'accepts the first parameter being on a new row' do
119
- inspect_source(cop, [' match(',
120
- ' a,',
121
- ' b',
122
- ' )'])
123
- expect(cop.offenses).to be_empty
124
- end
125
-
126
- it 'can handle heredoc strings' do
127
- inspect_source(cop, ['class_eval(<<-EOS, __FILE__, __LINE__ + 1)',
128
- ' def run_#{name}_callbacks(*args)',
129
- ' a = 1',
130
- ' return value',
131
- ' end',
132
- ' EOS'])
133
- expect(cop.offenses).to be_empty
134
- end
135
-
136
- it 'can handle a method call within a method call' do
137
- inspect_source(cop, ['a(a1,',
138
- ' b(b1,',
139
- ' b2),',
140
- ' a2)'])
141
- expect(cop.offenses).to be_empty
142
- end
143
-
144
- it 'can handle a call embedded in a string' do
145
- inspect_source(cop, 'model("#{index(name)}", child)')
146
- expect(cop.offenses).to be_empty
147
- end
148
-
149
- it 'can handle do-end' do
150
- inspect_source(cop, [' run(lambda do |e|',
151
- " w = e['warden']",
152
- ' end)'])
153
- expect(cop.offenses).to be_empty
154
- end
155
-
156
- it 'can handle a call with a block inside another call' do
157
- src = ['new(table_name,',
158
- ' exec_query("info(\'#{row[\'name\']}\')").map { |col|',
159
- " col['name']",
160
- ' })']
161
- inspect_source(cop, src)
162
- expect(cop.offenses).to be_empty
163
- end
164
-
165
- it 'can handle a ternary condition with a block reference' do
166
- inspect_source(cop, 'cond ? a : func(&b)')
167
- expect(cop.offenses).to be_empty
168
- end
169
-
170
- it 'can handle parentheses used with no parameters' do
171
- inspect_source(cop, 'func()')
172
- expect(cop.offenses).to be_empty
173
- end
174
-
175
- it 'can handle a multiline hash as second parameter' do
176
- inspect_source(cop, ['tag(:input, {',
177
- ' :value => value',
178
- '})'])
179
- expect(cop.offenses).to be_empty
180
- end
181
-
182
- it 'can handle method calls without parentheses' do
183
- inspect_source(cop, 'a(b c, d)')
184
- expect(cop.offenses).to be_empty
185
- end
186
-
187
- it 'can handle other method calls without parentheses' do
188
- src = 'chars(Unicode.apply_mapping @wrapped_string, :uppercase)'
189
- inspect_source(cop, src)
190
- expect(cop.offenses).to be_empty
191
- end
192
-
193
- context 'assigned methods' do
194
- it 'accepts the first parameter being on a new row' do
195
- inspect_source(cop, [' assigned_value = match(',
196
- ' a,',
197
- ' b,',
198
- ' c',
199
- ' )'])
200
- expect(cop.offenses).to be_empty
201
- end
202
-
203
- it 'accepts the first parameter being on method row' do
204
- inspect_source(cop, [' assigned_value = match(a,',
205
- ' b,',
206
- ' c',
207
- ' )'])
208
- expect(cop.offenses).to be_empty
209
- end
210
- end
211
-
212
- it 'auto-corrects alignment' do
213
- new_source = autocorrect_source(cop, ['func(a,',
214
- ' b,',
215
- 'c)'])
216
- expect(new_source).to eq(['func(a,',
217
- ' b,',
218
- ' c)'].join("\n"))
219
- end
220
-
221
- it 'auto-corrects each line of a multi-line parameter to the right' do
222
- new_source =
223
- autocorrect_source(cop,
224
- ['create :transaction, :closed,',
225
- ' account: account,',
226
- ' open_price: 1.29,',
227
- ' close_price: 1.30'])
228
- expect(new_source)
229
- .to eq(['create :transaction, :closed,',
230
- ' account: account,',
231
- ' open_price: 1.29,',
232
- ' close_price: 1.30'].join("\n"))
233
- end
234
-
235
- it 'auto-corrects each line of a multi-line parameter to the left' do
236
- new_source =
237
- autocorrect_source(cop,
238
- ['create :transaction, :closed,',
239
- ' account: account,',
240
- ' open_price: 1.29,',
241
- ' close_price: 1.30'])
242
- expect(new_source)
243
- .to eq(['create :transaction, :closed,',
244
- ' account: account,',
245
- ' open_price: 1.29,',
246
- ' close_price: 1.30'].join("\n"))
247
- end
248
-
249
- it 'auto-corrects only parameters that begin a line' do
250
- original_source = ['foo(:bar, {',
251
- ' whiz: 2, bang: 3 }, option: 3)']
252
- new_source = autocorrect_source(cop, original_source)
253
- expect(new_source).to eq(original_source.join("\n"))
254
- end
255
-
256
- it 'does not crash in autocorrect on dynamic string in parameter value' do
257
- src = ['class MyModel < ActiveRecord::Base',
258
- ' has_many :other_models,',
259
- ' class_name: "legacy_name",',
260
- ' order: "#{leagacy_name.table_name}.published DESC"',
261
- '',
262
- 'end']
263
- new_source = autocorrect_source(cop, src)
264
- expect(new_source)
265
- .to eq ['class MyModel < ActiveRecord::Base',
266
- ' has_many :other_models,',
267
- ' class_name: "legacy_name",',
268
- ' order: "#{leagacy_name.table_name}.published DESC"',
269
- '',
270
- 'end'].join("\n")
271
- end
272
- end
273
-
274
- context 'aligned with fixed indentation' do
275
- let(:cop_config) do
276
- {
277
- 'EnforcedStyle' => 'with_fixed_indentation'
278
- }
279
- end
280
-
281
- let(:correct_source) do
282
- [
283
- 'create :transaction, :closed,',
284
- ' account: account,',
285
- ' open_price: 1.29,',
286
- ' close_price: 1.30'
287
- ]
288
- end
289
-
290
- it 'does not autocorrect correct source' do
291
- expect(autocorrect_source(cop, correct_source))
292
- .to eq(correct_source.join("\n"))
293
- end
294
-
295
- it 'autocorrects by outdenting when indented too far' do
296
- original_source = [
297
- 'create :transaction, :closed,',
298
- ' account: account,',
299
- ' open_price: 1.29,',
300
- ' close_price: 1.30'
301
- ]
302
-
303
- expect(autocorrect_source(cop, original_source))
304
- .to eq(correct_source.join("\n"))
305
- end
306
-
307
- it 'autocorrects by indenting when not indented' do
308
- original_source = [
309
- 'create :transaction, :closed,',
310
- 'account: account,',
311
- 'open_price: 1.29,',
312
- 'close_price: 1.30'
313
- ]
314
-
315
- expect(autocorrect_source(cop, original_source))
316
- .to eq(correct_source.join("\n"))
317
- end
318
-
319
- it 'autocorrects when first line is indented' do
320
- original_source = [
321
- ' create :transaction, :closed,',
322
- ' account: account,',
323
- ' open_price: 1.29,',
324
- ' close_price: 1.30'
325
- ]
326
-
327
- correct_source = [
328
- ' create :transaction, :closed,',
329
- ' account: account,',
330
- ' open_price: 1.29,',
331
- ' close_price: 1.30'
332
- ]
333
-
334
- expect(autocorrect_source(cop, original_source))
335
- .to eq(correct_source.join("\n"))
336
- end
337
-
338
- context 'multi-line method calls' do
339
- it 'can handle existing indentation from multi-line method calls' do
340
- inspect_source(cop, [' something',
341
- ' .method_name(',
342
- ' a,',
343
- ' b,',
344
- ' c',
345
- ' )'])
346
- expect(cop.offenses).to be_empty
347
- end
348
-
349
- it 'registers offenses for double indentation from relevant method' do
350
- inspect_source(cop, [' something',
351
- ' .method_name(',
352
- ' a,',
353
- ' b,',
354
- ' c',
355
- ' )'])
356
- expect(cop.offenses.size).to eq(3)
357
- end
358
-
359
- it 'does not err on method call without a method name' do
360
- inspect_source(cop, [' something',
361
- ' .(',
362
- ' a,',
363
- ' b,',
364
- ' c',
365
- ' )'])
366
- expect(cop.offenses).to be_empty
367
- end
368
-
369
- it 'autocorrects relative to position of relevant method call' do
370
- original_source = [
371
- ' something',
372
- ' .method_name(',
373
- ' a,',
374
- ' b,',
375
- ' c',
376
- ' )'
377
- ]
378
- correct_source = [
379
- ' something',
380
- ' .method_name(',
381
- ' a,',
382
- ' b,',
383
- ' c',
384
- ' )'
385
- ]
386
- expect(autocorrect_source(cop, original_source))
387
- .to eq(correct_source.join("\n"))
388
- end
389
- end
390
-
391
- context 'assigned methods' do
392
- context 'with IndentationWidth:Width set to 4' do
393
- let(:indentation_width) { 4 }
394
-
395
- it 'accepts the first parameter being on a new row' do
396
- inspect_source(cop, [' assigned_value = match(',
397
- ' a,',
398
- ' b,',
399
- ' c',
400
- ' )'])
401
- expect(cop.offenses).to be_empty
402
- end
403
-
404
- it 'accepts the first parameter being on method row' do
405
- inspect_source(cop, [' assigned_value = match(a,',
406
- ' b,',
407
- ' c',
408
- ' )'])
409
- expect(cop.offenses).to be_empty
410
- end
411
-
412
- it 'autocorrects even when first argument is in wrong position' do
413
- original_source = [' assigned_value = match(',
414
- ' a,',
415
- ' b,',
416
- ' c',
417
- ' )']
418
-
419
- correct_source = [' assigned_value = match(',
420
- ' a,',
421
- ' b,',
422
- ' c',
423
- ' )']
424
-
425
- expect(autocorrect_source(cop, original_source))
426
- .to eq(correct_source.join("\n"))
427
- end
428
- end
429
- end
430
- end
431
- end
@@ -1,235 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::AndOr, :config do
6
- context 'when style is conditionals' do
7
- cop_config = {
8
- 'EnforcedStyle' => 'conditionals'
9
- }
10
-
11
- subject(:cop) { described_class.new(config) }
12
- let(:cop_config) { cop_config }
13
-
14
- %w(and or).each do |operator|
15
- it "accepts \"#{operator}\" outside of conditional" do
16
- inspect_source(cop, "x = a + b #{operator} return x")
17
- expect(cop.offenses).to be_empty
18
- end
19
-
20
- {
21
- 'if' => 'if %{conditional}; %{body}; end',
22
- 'while' => 'while %{conditional}; %{body}; end',
23
- 'until' => 'until %{conditional}; %{body}; end',
24
- 'post-conditional while' => 'begin; %{body}; end while %{conditional}',
25
- 'post-conditional until' => 'begin; %{body}; end until %{conditional}'
26
- }.each do |type, snippet_format|
27
- it "registers an offense for \"#{operator}\" in #{type} conditional" do
28
- elements = {
29
- conditional: "a #{operator} b",
30
- body: 'do_something'
31
- }
32
- source = format(snippet_format, elements)
33
-
34
- inspect_source(cop, source)
35
- expect(cop.offenses.size).to eq(1)
36
- end
37
-
38
- it "accepts \"#{operator}\" in #{type} body" do
39
- elements = {
40
- conditional: 'some_condition',
41
- body: "do_something #{operator} return"
42
- }
43
- source = format(snippet_format, elements)
44
-
45
- inspect_source(cop, source)
46
- expect(cop.offenses).to be_empty
47
- end
48
- end
49
- end
50
-
51
- %w(&& ||).each do |operator|
52
- it "accepts #{operator} inside of conditional" do
53
- inspect_source(cop, "test if a #{operator} b")
54
- expect(cop.offenses).to be_empty
55
- end
56
-
57
- it "accepts #{operator} outside of conditional" do
58
- inspect_source(cop, "x = a #{operator} b")
59
- expect(cop.offenses).to be_empty
60
- end
61
- end
62
- end
63
-
64
- context 'when style is always' do
65
- cop_config = {
66
- 'EnforcedStyle' => 'always'
67
- }
68
-
69
- subject(:cop) { described_class.new(config) }
70
- let(:cop_config) { cop_config }
71
-
72
- it 'registers an offense for "or"' do
73
- inspect_source(cop, 'test if a or b')
74
- expect(cop.offenses.size).to eq(1)
75
- expect(cop.messages).to eq(['Use `||` instead of `or`.'])
76
- end
77
-
78
- it 'registers an offense for "and"' do
79
- inspect_source(cop, 'test if a and b')
80
- expect(cop.offenses.size).to eq(1)
81
- expect(cop.messages).to eq(['Use `&&` instead of `and`.'])
82
- end
83
-
84
- it 'accepts ||' do
85
- inspect_source(cop, 'test if a || b')
86
- expect(cop.offenses).to be_empty
87
- end
88
-
89
- it 'accepts &&' do
90
- inspect_source(cop, 'test if a && b')
91
- expect(cop.offenses).to be_empty
92
- end
93
-
94
- it 'auto-corrects "and" with &&' do
95
- new_source = autocorrect_source(cop, 'true and false')
96
- expect(new_source).to eq('true && false')
97
- end
98
-
99
- it 'auto-corrects "or" with ||' do
100
- new_source = autocorrect_source(cop, ['x = 12345',
101
- 'true or false'])
102
- expect(new_source).to eq(['x = 12345',
103
- 'true || false'].join("\n"))
104
- end
105
-
106
- it 'auto-corrects "or" with || inside def' do
107
- new_source = autocorrect_source(cop, ['def z(a, b)',
108
- ' return true if a or b',
109
- 'end'])
110
- expect(new_source).to eq(['def z(a, b)',
111
- ' return true if a || b',
112
- 'end'].join("\n"))
113
- end
114
-
115
- it 'leaves *or* as is if auto-correction changes the meaning' do
116
- src = "x = y or teststring.include? 'b'"
117
- new_source = autocorrect_source(cop, src)
118
- expect(new_source).to eq(src)
119
- end
120
-
121
- it 'leaves *and* as is if auto-correction changes the meaning' do
122
- src = 'x = a + b and return x'
123
- new_source = autocorrect_source(cop, src)
124
- expect(new_source).to eq(src)
125
- end
126
-
127
- it 'warns on short-circuit (and)' do
128
- inspect_source(cop, 'x = a + b and return x')
129
- expect(cop.offenses.size).to eq(1)
130
- expect(cop.messages).to eq(['Use `&&` instead of `and`.'])
131
- end
132
-
133
- it 'also warns on non short-circuit (and)' do
134
- inspect_source(cop, 'x = a + b if a and b')
135
- expect(cop.offenses.size).to eq(1)
136
- expect(cop.messages).to eq(['Use `&&` instead of `and`.'])
137
- end
138
-
139
- it 'also warns on non short-circuit (and) (unless)' do
140
- inspect_source(cop, 'x = a + b unless a and b')
141
- expect(cop.offenses.size).to eq(1)
142
- expect(cop.messages).to eq(['Use `&&` instead of `and`.'])
143
- end
144
-
145
- it 'warns on short-circuit (or)' do
146
- inspect_source(cop, 'x = a + b or return x')
147
- expect(cop.offenses.size).to eq(1)
148
- expect(cop.messages).to eq(['Use `||` instead of `or`.'])
149
- end
150
-
151
- it 'also warns on non short-circuit (or)' do
152
- inspect_source(cop, 'x = a + b if a or b')
153
- expect(cop.offenses.size).to eq(1)
154
- expect(cop.messages).to eq(['Use `||` instead of `or`.'])
155
- end
156
-
157
- it 'also warns on non short-circuit (or) (unless)' do
158
- inspect_source(cop, 'x = a + b unless a or b')
159
- expect(cop.offenses.size).to eq(1)
160
- expect(cop.messages).to eq(['Use `||` instead of `or`.'])
161
- end
162
-
163
- it 'also warns on while (or)' do
164
- inspect_source(cop, 'x = a + b while a or b')
165
- expect(cop.offenses.size).to eq(1)
166
- expect(cop.messages).to eq(['Use `||` instead of `or`.'])
167
- end
168
-
169
- it 'also warns on until (or)' do
170
- inspect_source(cop, 'x = a + b until a or b')
171
- expect(cop.offenses.size).to eq(1)
172
- expect(cop.messages).to eq(['Use `||` instead of `or`.'])
173
- end
174
-
175
- it 'auto-corrects "or" with || in method calls' do
176
- new_source = autocorrect_source(cop, 'method a or b')
177
- expect(new_source).to eq('method(a) || b')
178
- end
179
-
180
- it 'auto-corrects "or" with || in method calls (2)' do
181
- new_source = autocorrect_source(cop, 'method a,b or b')
182
- expect(new_source).to eq('method(a,b) || b')
183
- end
184
-
185
- it 'auto-corrects "or" with || in method calls (3)' do
186
- new_source = autocorrect_source(cop, 'obj.method a or b')
187
- expect(new_source).to eq('obj.method(a) || b')
188
- end
189
-
190
- it 'auto-corrects "or" with || in method calls (4)' do
191
- new_source = autocorrect_source(cop, 'obj.method a,b or b')
192
- expect(new_source).to eq('obj.method(a,b) || b')
193
- end
194
-
195
- it 'auto-corrects "or" with || and doesn\'t add extra parenthesis' do
196
- new_source = autocorrect_source(cop, 'method(a, b) or b')
197
- expect(new_source).to eq('method(a, b) || b')
198
- end
199
-
200
- it 'auto-corrects "or" with || and add parenthesis on left expr' do
201
- new_source = autocorrect_source(cop, 'b or method a,b')
202
- expect(new_source).to eq('b || method(a,b)')
203
- end
204
-
205
- it 'auto-corrects "and" with && in method calls' do
206
- new_source = autocorrect_source(cop, 'method a and b')
207
- expect(new_source).to eq('method(a) && b')
208
- end
209
-
210
- it 'auto-corrects "and" with && in method calls (2)' do
211
- new_source = autocorrect_source(cop, 'method a,b and b')
212
- expect(new_source).to eq('method(a,b) && b')
213
- end
214
-
215
- it 'auto-corrects "and" with && in method calls (3)' do
216
- new_source = autocorrect_source(cop, 'obj.method a and b')
217
- expect(new_source).to eq('obj.method(a) && b')
218
- end
219
-
220
- it 'auto-corrects "and" with && in method calls (4)' do
221
- new_source = autocorrect_source(cop, 'obj.method a,b and b')
222
- expect(new_source).to eq('obj.method(a,b) && b')
223
- end
224
-
225
- it 'auto-corrects "and" with && and doesn\'t add extra parenthesis' do
226
- new_source = autocorrect_source(cop, 'method(a, b) and b')
227
- expect(new_source).to eq('method(a, b) && b')
228
- end
229
-
230
- it 'auto-corrects "and" with && and add parenthesis on left expr' do
231
- new_source = autocorrect_source(cop, 'b and method a,b')
232
- expect(new_source).to eq('b && method(a,b)')
233
- end
234
- end
235
- end