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,146 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::IfUnlessModifier do
6
- include StatementModifierHelper
7
-
8
- subject(:cop) { described_class.new(config) }
9
- let(:config) do
10
- hash = { 'Metrics/LineLength' => { 'Max' => 80 } }
11
- RuboCop::Config.new(hash)
12
- end
13
-
14
- it 'registers an offense for multiline if that fits on one line' do
15
- # This if statement fits exactly on one line if written as a
16
- # modifier.
17
- condition = 'a' * 38
18
- body = 'b' * 36
19
- expect(" #{body} if #{condition}".length).to eq(80)
20
-
21
- inspect_source(cop,
22
- [" if #{condition}",
23
- " #{body}",
24
- ' end'])
25
- expect(cop.messages).to eq(
26
- ['Favor modifier `if` usage when having a single-line' \
27
- ' body. Another good alternative is the usage of control flow' \
28
- ' `&&`/`||`.'])
29
- end
30
-
31
- it 'registers an offense for short multiline if near an else etc' do
32
- inspect_source(cop,
33
- ['if x',
34
- ' y',
35
- 'elsif x1',
36
- ' y1',
37
- 'else',
38
- ' z',
39
- 'end',
40
- 'n = a ? 0 : 1',
41
- 'm = 3 if m0',
42
- '',
43
- 'if a',
44
- ' b',
45
- 'end'])
46
- expect(cop.offenses.size).to eq(1)
47
- end
48
-
49
- it "accepts multiline if that doesn't fit on one line" do
50
- check_too_long(cop, 'if')
51
- end
52
-
53
- it 'accepts multiline if whose body is more than one line' do
54
- check_short_multiline(cop, 'if')
55
- end
56
-
57
- it 'registers an offense for multiline unless that fits on one line' do
58
- inspect_source(cop, ['unless a',
59
- ' b',
60
- 'end'])
61
- expect(cop.messages).to eq(
62
- ['Favor modifier `unless` usage when having a single-line' \
63
- ' body. Another good alternative is the usage of control flow' \
64
- ' `&&`/`||`.'])
65
- end
66
-
67
- it 'accepts code with EOL comment since user might want to keep it' do
68
- inspect_source(cop, ['unless a',
69
- ' b # A comment',
70
- 'end'])
71
- expect(cop.offenses).to be_empty
72
- end
73
-
74
- it 'accepts if-else-end' do
75
- inspect_source(cop,
76
- 'if args.last.is_a? Hash then args.pop else ' \
77
- 'Hash.new end')
78
- expect(cop.messages).to be_empty
79
- end
80
-
81
- it 'accepts an empty condition' do
82
- check_empty(cop, 'if')
83
- check_empty(cop, 'unless')
84
- end
85
-
86
- it 'accepts if/elsif' do
87
- inspect_source(cop, ['if test',
88
- ' something',
89
- 'elsif test2',
90
- ' something_else',
91
- 'end'])
92
- expect(cop.offenses).to be_empty
93
- end
94
-
95
- context 'with implicit match conditional' do
96
- let(:source) do
97
- [
98
- " if #{conditional}",
99
- " #{body}",
100
- ' end'
101
- ]
102
- end
103
-
104
- let(:body) { 'b' * 36 }
105
-
106
- context 'when a multiline if fits on one line' do
107
- let(:conditional) { "/#{'a' * 36}/" }
108
-
109
- it 'registers an offense' do
110
- expect(" #{body} if #{conditional}".length).to eq(80)
111
-
112
- inspect_source(cop, source)
113
- expect(cop.offenses.size).to eq(1)
114
- end
115
- end
116
-
117
- context "when a multiline if doesn't fit on one line" do
118
- let(:conditional) { "/#{'a' * 37}/" }
119
-
120
- it 'accepts' do
121
- expect(" #{body} if #{conditional}".length).to eq(81)
122
-
123
- inspect_source(cop, source)
124
- expect(cop.offenses).to be_empty
125
- end
126
- end
127
-
128
- context 'when the maximum line length is specified by the cop itself' do
129
- let(:config) do
130
- hash = {
131
- 'Metrics/LineLength' => { 'Max' => 100 },
132
- 'Style/IfUnlessModifier' => { 'MaxLineLength' => 80 }
133
- }
134
- RuboCop::Config.new(hash)
135
- end
136
-
137
- it "accepts multiline if that doesn't fit on one line" do
138
- check_too_long(cop, 'if')
139
- end
140
-
141
- it "accepts multiline unless that doesn't fit on one line" do
142
- check_too_long(cop, 'unless')
143
- end
144
- end
145
- end
146
- end
@@ -1,24 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::IfWithSemicolon do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for one line if/;/end' do
9
- inspect_source(cop, 'if cond; run else dont end')
10
- expect(cop.messages).to eq(
11
- ['Do not use if x; Use the ternary operator instead.'])
12
- end
13
-
14
- it 'accepts one line if/then/end' do
15
- inspect_source(cop, 'if cond then run else dont end')
16
- expect(cop.messages).to be_empty
17
- end
18
-
19
- it 'can handle modifier conditionals' do
20
- inspect_source(cop, ['class Hash',
21
- 'end if RUBY_VERSION < "1.8.7"'])
22
- expect(cop.messages).to be_empty
23
- end
24
- end
@@ -1,173 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::IndentArray do
6
- subject(:cop) { described_class.new(config) }
7
- let(:config) do
8
- RuboCop::Config
9
- .new('Style/IndentationWidth' => { 'Width' => indentation_width })
10
- end
11
- let(:indentation_width) { 2 }
12
-
13
- it 'accepts multi-assignments' do
14
- inspect_source(cop, 'a, b = b, a')
15
- expect(cop.offenses).to be_empty
16
- end
17
-
18
- it 'accepts correctly indented only element' do
19
- inspect_source(cop,
20
- ['a << [',
21
- ' 1',
22
- ']'])
23
- expect(cop.offenses).to be_empty
24
- end
25
-
26
- it 'registers an offense for incorrectly indented only element' do
27
- inspect_source(cop,
28
- ['a << [',
29
- ' 1',
30
- ']'])
31
- expect(cop.highlights).to eq(['1'])
32
- end
33
-
34
- it 'registers an offense for incorrectly indented closing bracket in an ' \
35
- 'empty array' do
36
- inspect_source(cop,
37
- ['a << [',
38
- ' ]'])
39
- expect(cop.messages)
40
- .to eq(['Indent the right bracket the same as the start of the line ' \
41
- 'where the left bracket is.'])
42
- expect(cop.highlights).to eq([']'])
43
- end
44
-
45
- context 'when the first element is not on its own line' do
46
- it 'registers an offense for an incorrectly indented closing bracket' do
47
- inspect_source(cop,
48
- ['a = [1,',
49
- ' 2,',
50
- ']'])
51
- expect(cop.highlights).to eq([']'])
52
- expect(cop.messages)
53
- .to eq(['Indent the right bracket the same as the left bracket.'])
54
- end
55
-
56
- it 'accepts closing bracket indented the same as opening bracket' do
57
- inspect_source(cop,
58
- ['a = [1,',
59
- ' 2,',
60
- ' ]'])
61
- expect(cop.highlights).to eq([])
62
- expect(cop.offenses).to be_empty
63
- end
64
- end
65
-
66
- it 'auto-corrects incorrectly indented only element' do
67
- corrected = autocorrect_source(cop, ['a << [',
68
- ' 1',
69
- ']'])
70
- expect(corrected).to eq ['a << [',
71
- ' 1',
72
- ']'].join("\n")
73
- end
74
-
75
- it 'accepts correctly indented first element' do
76
- inspect_source(cop,
77
- ['[',
78
- ' x,',
79
- ' y',
80
- ']'])
81
- expect(cop.offenses).to be_empty
82
- end
83
-
84
- it 'registers an offense for incorrectly indented first element' do
85
- inspect_source(cop,
86
- ['[',
87
- 'x,',
88
- ' y',
89
- ']'])
90
- expect(cop.highlights).to eq(['x'])
91
- end
92
-
93
- it 'accepts several elements per line' do
94
- inspect_source(cop,
95
- ['a = [',
96
- ' 1, 2',
97
- ']'])
98
- expect(cop.offenses).to be_empty
99
- end
100
-
101
- it 'accepts a first element on the same line as the left bracket' do
102
- inspect_source(cop,
103
- ['a = ["a",',
104
- ' "b"]'])
105
- expect(cop.offenses).to be_empty
106
- end
107
-
108
- it 'accepts single line array' do
109
- inspect_source(cop, 'a = [1, 2]')
110
- expect(cop.offenses).to be_empty
111
- end
112
-
113
- it 'accepts an empty array' do
114
- inspect_source(cop, 'a = []')
115
- expect(cop.offenses).to be_empty
116
- end
117
-
118
- context 'when array is method argument' do
119
- context 'and arguments are surrounded by parentheses' do
120
- it 'accepts normal indentation for first argument' do
121
- inspect_source(cop,
122
- ['func([',
123
- ' 1',
124
- '])'])
125
- expect(cop.offenses).to be_empty
126
- end
127
-
128
- it 'registers an offense for incorrect indentation' do
129
- inspect_source(cop,
130
- ['func([',
131
- ' 1',
132
- ' ])'])
133
- expect(cop.messages)
134
- .to eq(['Use 2 spaces for indentation in an array, relative to ' \
135
- 'the start of the line where the left bracket is.',
136
-
137
- 'Indent the right bracket the same as the start of the ' \
138
- 'line where the left bracket is.'])
139
- end
140
-
141
- it 'accepts normal indentation for second argument' do
142
- inspect_source(cop,
143
- ['body.should have_tag("input", [',
144
- ' :name])'])
145
- expect(cop.offenses).to be_empty
146
- end
147
- end
148
-
149
- context 'and arguments are not surrounded by parentheses' do
150
- it 'accepts single line array' do
151
- inspect_source(cop, 'func x, [1, 2]')
152
- expect(cop.offenses).to be_empty
153
- end
154
-
155
- it 'accepts a correctly indented multi-line array' do
156
- inspect_source(cop,
157
- ['func x, [',
158
- ' 1, 2]'])
159
- expect(cop.offenses).to be_empty
160
- end
161
-
162
- it 'registers an offense for incorrectly indented multi-line array' do
163
- inspect_source(cop,
164
- ['func x, [',
165
- ' 1, 2]'])
166
- expect(cop.messages)
167
- .to eq(['Use 2 spaces for indentation in an array, relative to ' \
168
- 'the start of the line where the left bracket is.'])
169
- expect(cop.highlights).to eq(['1'])
170
- end
171
- end
172
- end
173
- end
@@ -1,367 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::IndentHash do
6
- subject(:cop) { described_class.new(config) }
7
- let(:config) do
8
- supported_styles = {
9
- 'SupportedStyles' => %w(special_inside_parentheses consistent)
10
- }
11
- RuboCop::Config.new('Style/AlignHash' => align_hash_config,
12
- 'Style/IndentHash' =>
13
- cop_config.merge(supported_styles),
14
- 'Style/IndentationWidth' => { 'Width' => 2 })
15
- end
16
- let(:align_hash_config) do
17
- {
18
- 'Enabled' => true,
19
- 'EnforcedColonStyle' => 'key',
20
- 'EnforcedHashRocketStyle' => 'key'
21
- }
22
- end
23
- let(:cop_config) { { 'EnforcedStyle' => 'special_inside_parentheses' } }
24
-
25
- shared_examples 'right brace' do
26
- it 'registers an offense for incorrectly indented }' do
27
- inspect_source(cop,
28
- ['a << {',
29
- ' }'])
30
- expect(cop.highlights).to eq(['}'])
31
- expect(cop.messages)
32
- .to eq(['Indent the right brace the same as the start of the line ' \
33
- 'where the left brace is.'])
34
- expect(cop.config_to_allow_offenses).to eq(nil)
35
- end
36
- end
37
-
38
- context 'when the AlignHash style is separator for :' do
39
- let(:align_hash_config) do
40
- {
41
- 'Enabled' => true,
42
- 'EnforcedColonStyle' => 'separator',
43
- 'EnforcedHashRocketStyle' => 'key'
44
- }
45
- end
46
-
47
- it 'accepts correctly indented first pair' do
48
- inspect_source(cop,
49
- ['a << {',
50
- ' a: 1,',
51
- ' aaa: 222',
52
- '}'])
53
- expect(cop.offenses).to be_empty
54
- end
55
-
56
- it 'registers an offense for incorrectly indented first pair with :' do
57
- inspect_source(cop,
58
- ['a << {',
59
- ' a: 1,',
60
- ' aaa: 222',
61
- '}'])
62
- expect(cop.highlights).to eq(['a: 1'])
63
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
64
- end
65
-
66
- include_examples 'right brace'
67
- end
68
-
69
- context 'when the AlignHash style is separator for =>' do
70
- let(:align_hash_config) do
71
- {
72
- 'Enabled' => true,
73
- 'EnforcedColonStyle' => 'key',
74
- 'EnforcedHashRocketStyle' => 'separator'
75
- }
76
- end
77
-
78
- it 'accepts correctly indented first pair' do
79
- inspect_source(cop,
80
- ['a << {',
81
- " 'a' => 1,",
82
- " 'aaa' => 222",
83
- '}'])
84
- expect(cop.offenses).to be_empty
85
- end
86
-
87
- it 'registers an offense for incorrectly indented first pair with =>' do
88
- inspect_source(cop,
89
- ['a << {',
90
- " 'a' => 1,",
91
- " 'aaa' => 222",
92
- '}'])
93
- expect(cop.highlights).to eq(["'a' => 1"])
94
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
95
- end
96
-
97
- include_examples 'right brace'
98
- end
99
-
100
- context 'when hash is operand' do
101
- it 'accepts correctly indented first pair' do
102
- inspect_source(cop,
103
- ['a << {',
104
- ' a: 1',
105
- '}'])
106
- expect(cop.offenses).to be_empty
107
- end
108
-
109
- it 'registers an offense for incorrectly indented first pair' do
110
- inspect_source(cop,
111
- ['a << {',
112
- ' a: 1',
113
- '}'])
114
- expect(cop.highlights).to eq(['a: 1'])
115
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
116
- end
117
-
118
- it 'auto-corrects incorrectly indented first pair' do
119
- corrected = autocorrect_source(cop, ['a << {',
120
- ' a: 1',
121
- '}'])
122
- expect(corrected).to eq ['a << {',
123
- ' a: 1',
124
- '}'].join("\n")
125
- end
126
-
127
- include_examples 'right brace'
128
- end
129
-
130
- context 'when hash is argument to setter' do
131
- it 'accepts correctly indented first pair' do
132
- inspect_source(cop,
133
- [' config.rack_cache = {',
134
- ' :metastore => "rails:/",',
135
- ' :entitystore => "rails:/",',
136
- ' :verbose => false',
137
- ' }'])
138
- expect(cop.offenses).to be_empty
139
- end
140
-
141
- it 'registers an offense for incorrectly indented first pair' do
142
- inspect_source(cop,
143
- [' config.rack_cache = {',
144
- ' :metastore => "rails:/",',
145
- ' :entitystore => "rails:/",',
146
- ' :verbose => false',
147
- ' }'])
148
- expect(cop.highlights).to eq([':metastore => "rails:/"'])
149
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
150
- end
151
- end
152
-
153
- context 'when hash is right hand side in assignment' do
154
- it 'registers an offense for incorrectly indented first pair' do
155
- inspect_source(cop, ['a = {',
156
- ' a: 1,',
157
- ' b: 2,',
158
- ' c: 3',
159
- '}'])
160
- expect(cop.messages)
161
- .to eq(['Use 2 spaces for indentation in a hash, relative to the ' \
162
- 'start of the line where the left curly brace is.'])
163
- expect(cop.highlights).to eq(['a: 1'])
164
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
165
- end
166
-
167
- it 'auto-corrects incorrectly indented first pair' do
168
- corrected = autocorrect_source(cop, ['a = {',
169
- ' a: 1,',
170
- ' b: 2,',
171
- ' c: 3',
172
- '}'])
173
- expect(corrected).to eq ['a = {',
174
- ' a: 1,',
175
- ' b: 2,',
176
- ' c: 3',
177
- '}'].join("\n")
178
- end
179
-
180
- it 'accepts correctly indented first pair' do
181
- inspect_source(cop,
182
- ['a = {',
183
- ' a: 1',
184
- '}'])
185
- expect(cop.offenses).to be_empty
186
- end
187
-
188
- it 'accepts several pairs per line' do
189
- inspect_source(cop,
190
- ['a = {',
191
- ' a: 1, b: 2',
192
- '}'])
193
- expect(cop.offenses).to be_empty
194
- end
195
-
196
- it 'accepts a first pair on the same line as the left brace' do
197
- inspect_source(cop,
198
- ['a = { "a" => 1,',
199
- ' "b" => 2 }'])
200
- expect(cop.offenses).to be_empty
201
- end
202
-
203
- it 'accepts single line hash' do
204
- inspect_source(cop,
205
- 'a = { a: 1, b: 2 }')
206
- expect(cop.offenses).to be_empty
207
- end
208
-
209
- it 'accepts an empty hash' do
210
- inspect_source(cop,
211
- 'a = {}')
212
- expect(cop.offenses).to be_empty
213
- end
214
- end
215
-
216
- context 'when hash is method argument' do
217
- context 'and arguments are surrounded by parentheses' do
218
- context 'and EnforcedStyle is special_inside_parentheses' do
219
- it 'accepts special indentation for first argument' do
220
- inspect_source(cop,
221
- # Only the function calls are affected by
222
- # EnforcedStyle setting. Other indentation shall be
223
- # the same regardless of EnforcedStyle.
224
- ['h = {',
225
- ' a: 1',
226
- '}',
227
- 'func({',
228
- ' a: 1',
229
- ' })',
230
- 'func(x, {',
231
- ' a: 1',
232
- ' })',
233
- 'h = { a: 1',
234
- '}',
235
- 'func({ a: 1',
236
- ' })',
237
- 'func(x, { a: 1',
238
- ' })'])
239
- expect(cop.offenses).to be_empty
240
- end
241
-
242
- it 'registers an offense for incorrect indentation' do
243
- inspect_source(cop,
244
- ['func({',
245
- ' a: 1',
246
- '})'])
247
- expect(cop.messages)
248
- .to eq(['Use 2 spaces for indentation in a hash, relative to the' \
249
- ' first position after the preceding left parenthesis.',
250
-
251
- 'Indent the right brace the same as the first position ' \
252
- 'after the preceding left parenthesis.'])
253
- expect(cop.config_to_allow_offenses)
254
- .to eq('EnforcedStyle' => 'consistent')
255
- end
256
-
257
- it 'auto-corrects incorrectly indented first pair' do
258
- corrected = autocorrect_source(cop, ['func({',
259
- ' a: 1',
260
- '})'])
261
- expect(corrected).to eq ['func({',
262
- ' a: 1',
263
- ' })'].join("\n")
264
- end
265
-
266
- it 'accepts special indentation for second argument' do
267
- inspect_source(cop,
268
- ['body.should have_tag("input", :attributes => {',
269
- ' :name => /q\[(id_eq)\]/ })'])
270
- expect(cop.offenses).to be_empty
271
- end
272
-
273
- it 'accepts normal indentation for hash within hash' do
274
- inspect_source(cop,
275
- ['scope = scope.where(',
276
- ' klass.table_name => {',
277
- ' reflection.type => model.base_class.sti_name',
278
- ' }',
279
- ')'])
280
- expect(cop.offenses).to be_empty
281
- end
282
- end
283
-
284
- context 'and EnforcedStyle is consistent' do
285
- let(:cop_config) { { 'EnforcedStyle' => 'consistent' } }
286
-
287
- it 'accepts normal indentation for first argument' do
288
- inspect_source(cop,
289
- # Only the function calls are affected by
290
- # EnforcedStyle setting. Other indentation shall be
291
- # the same regardless of EnforcedStyle.
292
- ['h = {',
293
- ' a: 1',
294
- '}',
295
- 'func({',
296
- ' a: 1',
297
- '})',
298
- 'func(x, {',
299
- ' a: 1',
300
- '})',
301
- 'h = { a: 1',
302
- '}',
303
- 'func({ a: 1',
304
- '})',
305
- 'func(x, { a: 1',
306
- '})'])
307
- expect(cop.offenses).to be_empty
308
- end
309
-
310
- it 'registers an offense for incorrect indentation' do
311
- inspect_source(cop,
312
- ['func({',
313
- ' a: 1',
314
- ' })'])
315
- expect(cop.messages)
316
- .to eq(['Use 2 spaces for indentation in a hash, relative to the' \
317
- ' start of the line where the left curly brace is.',
318
-
319
- 'Indent the right brace the same as the start of the ' \
320
- 'line where the left brace is.'])
321
- expect(cop.config_to_allow_offenses)
322
- .to eq('EnforcedStyle' => 'special_inside_parentheses')
323
- end
324
-
325
- it 'accepts normal indentation for second argument' do
326
- inspect_source(cop,
327
- ['body.should have_tag("input", :attributes => {',
328
- ' :name => /q\[(id_eq)\]/ })'])
329
- expect(cop.offenses).to be_empty
330
- end
331
- end
332
- end
333
-
334
- context 'and argument are not surrounded by parentheses' do
335
- it 'accepts braceless hash' do
336
- inspect_source(cop,
337
- 'func a: 1, b: 2')
338
- expect(cop.offenses).to be_empty
339
- end
340
-
341
- it 'accepts single line hash with braces' do
342
- inspect_source(cop,
343
- 'func x, { a: 1, b: 2 }')
344
- expect(cop.offenses).to be_empty
345
- end
346
-
347
- it 'accepts a correctly indented multi-line hash with braces' do
348
- inspect_source(cop,
349
- ['func x, {',
350
- ' a: 1, b: 2 }'])
351
- expect(cop.offenses).to be_empty
352
- end
353
-
354
- it 'registers an offense for incorrectly indented multi-line hash ' \
355
- 'with braces' do
356
- inspect_source(cop,
357
- ['func x, {',
358
- ' a: 1, b: 2 }'])
359
- expect(cop.messages)
360
- .to eq(['Use 2 spaces for indentation in a hash, relative to the ' \
361
- 'start of the line where the left curly brace is.'])
362
- expect(cop.highlights).to eq(['a: 1'])
363
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
364
- end
365
- end
366
- end
367
- end