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,22 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::SpaceAfterNot do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'reports an offense for space after !' do
9
- inspect_source(cop, '! something')
10
- expect(cop.offenses.size).to eq(1)
11
- end
12
-
13
- it 'accepts no space after !' do
14
- inspect_source(cop, '!something')
15
- expect(cop.offenses).to be_empty
16
- end
17
-
18
- it 'auto-corrects by removing redundant space' do
19
- new_source = autocorrect_source(cop, '! something')
20
- expect(new_source).to eq('!something')
21
- end
22
- end
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::SpaceAfterSemicolon do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for semicolon without space after it' do
9
- inspect_source(cop, 'x = 1;y = 2')
10
- expect(cop.messages).to eq(
11
- ['Space missing after semicolon.'])
12
- end
13
-
14
- it 'does not crash if semicolon is the last character of the file' do
15
- inspect_source(cop, 'x = 1;')
16
- expect(cop.messages).to be_empty
17
- end
18
-
19
- it 'auto-corrects missing space' do
20
- new_source = autocorrect_source(cop, 'x = 1;y = 2')
21
- expect(new_source).to eq('x = 1; y = 2')
22
- end
23
- end
@@ -1,155 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::SpaceAroundBlockParameters, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- shared_examples 'common behavior' do
9
- it 'accepts an empty block' do
10
- inspect_source(cop, '{}.each {}')
11
- expect(cop.offenses).to be_empty
12
- end
13
-
14
- it 'skips lambda without args' do
15
- inspect_source(cop, '->() { puts "a" }')
16
- expect(cop.offenses).to be_empty
17
- end
18
- end
19
-
20
- context 'when EnforcedStyleInsidePipes is no_space' do
21
- let(:cop_config) { { 'EnforcedStyleInsidePipes' => 'no_space' } }
22
-
23
- include_examples 'common behavior'
24
-
25
- it 'accepts a block with spaces in the right places' do
26
- inspect_source(cop, '{}.each { |x, y| puts x }')
27
- expect(cop.offenses).to be_empty
28
- end
29
-
30
- it 'accepts a block with parameters but no body' do
31
- inspect_source(cop, '{}.each { |x, y| }')
32
- expect(cop.offenses).to be_empty
33
- end
34
-
35
- it 'accepts a block parameter without preceding space' do
36
- # This is checked by Style/SpaceAfterComma.
37
- inspect_source(cop, '{}.each { |x,y| puts x }')
38
- expect(cop.offenses).to be_empty
39
- end
40
-
41
- it 'registers an offense for space before first parameter' do
42
- inspect_source(cop, '{}.each { | x| puts x }')
43
- expect(cop.messages)
44
- .to eq(['Space before first block parameter detected.'])
45
- expect(cop.highlights).to eq([' '])
46
- end
47
-
48
- it 'registers an offense for space after last parameter' do
49
- inspect_source(cop, '{}.each { |x, y | puts x }')
50
- expect(cop.messages).to eq(['Space after last block parameter detected.'])
51
- expect(cop.highlights).to eq([' '])
52
- end
53
-
54
- it 'registers an offense for no space after closing pipe' do
55
- inspect_source(cop, '{}.each { |x, y|puts x }')
56
- expect(cop.messages).to eq(['Space after closing `|` missing.'])
57
- expect(cop.highlights).to eq(['|'])
58
- end
59
-
60
- it 'accepts line break after closing pipe' do
61
- inspect_source(cop, ['{}.each do |x, y|',
62
- ' puts x',
63
- 'end'])
64
- expect(cop.offenses).to be_empty
65
- end
66
-
67
- it 'registers an offense for multiple spaces before parameter' do
68
- inspect_source(cop, '{}.each { |x, y| puts x }')
69
- expect(cop.messages)
70
- .to eq(['Extra space before block parameter detected.'])
71
- expect(cop.highlights).to eq([' '])
72
- end
73
-
74
- it 'auto-corrects offenses' do
75
- new_source = autocorrect_source(cop,
76
- '{}.each { | x=5, (y,*z) |puts x }')
77
- expect(new_source).to eq('{}.each { |x=5, (y,*z)| puts x }')
78
- end
79
- end
80
-
81
- context 'when EnforcedStyleInsidePipes is space' do
82
- let(:cop_config) { { 'EnforcedStyleInsidePipes' => 'space' } }
83
-
84
- include_examples 'common behavior'
85
-
86
- it 'accepts a block with spaces in the right places' do
87
- inspect_source(cop, '{}.each { | x, y | puts x }')
88
- expect(cop.offenses).to be_empty
89
- end
90
-
91
- it 'accepts a block with parameters but no body' do
92
- inspect_source(cop, '{}.each { | x, y | }')
93
- expect(cop.offenses).to be_empty
94
- end
95
-
96
- it 'accepts a block parameter without preceding space' do
97
- # This is checked by Style/SpaceAfterComma.
98
- inspect_source(cop, '{}.each { | x,y | puts x }')
99
- expect(cop.offenses).to be_empty
100
- end
101
-
102
- it 'registers an offense for no space before first parameter' do
103
- inspect_source(cop, '{}.each { |x | puts x }')
104
- expect(cop.messages)
105
- .to eq(['Space before first block parameter missing.'])
106
- expect(cop.highlights).to eq(['x'])
107
- end
108
-
109
- it 'registers an offense for no space after last parameter' do
110
- inspect_source(cop, '{}.each { | x, y| puts x }')
111
- expect(cop.messages).to eq(['Space after last block parameter missing.'])
112
- expect(cop.highlights).to eq(['y'])
113
- end
114
-
115
- it 'registers an offense for extra space before first parameter' do
116
- inspect_source(cop, '{}.each { | x | puts x }')
117
- expect(cop.messages)
118
- .to eq(['Extra space before first block parameter detected.'])
119
- expect(cop.highlights).to eq([' '])
120
- end
121
-
122
- it 'registers an offense for no space after last parameter' do
123
- inspect_source(cop, '{}.each { | x, y | puts x }')
124
- expect(cop.messages)
125
- .to eq(['Extra space after last block parameter detected.'])
126
- expect(cop.highlights).to eq([' '])
127
- end
128
-
129
- it 'registers an offense for no space after closing pipe' do
130
- inspect_source(cop, '{}.each { | x, y |puts x }')
131
- expect(cop.messages).to eq(['Space after closing `|` missing.'])
132
- expect(cop.highlights).to eq(['|'])
133
- end
134
-
135
- it 'accepts line break after closing pipe' do
136
- inspect_source(cop, ['{}.each do | x, y |',
137
- ' puts x',
138
- 'end'])
139
- expect(cop.offenses).to be_empty
140
- end
141
-
142
- it 'registers an offense for multiple spaces before parameter' do
143
- inspect_source(cop, '{}.each { | x, y | puts x }')
144
- expect(cop.messages)
145
- .to eq(['Extra space before block parameter detected.'])
146
- expect(cop.highlights).to eq([' '])
147
- end
148
-
149
- it 'auto-corrects offenses' do
150
- new_source = autocorrect_source(cop,
151
- '{}.each { | x=5, (y,*z)|puts x }')
152
- expect(new_source).to eq('{}.each { | x=5, (y,*z) | puts x }')
153
- end
154
- end
155
- end
@@ -1,95 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::SpaceAroundEqualsInParameterDefault, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'when EnforcedStyle is space' do
9
- let(:cop_config) { { 'EnforcedStyle' => 'space' } }
10
-
11
- it 'registers an offense for default value assignment without space' do
12
- inspect_source(cop, ['def f(x, y=0, z= 1)',
13
- 'end'])
14
- expect(cop.messages)
15
- .to eq(['Surrounding space missing in default value assignment.'] * 2)
16
- expect(cop.highlights).to eq(['=', '= '])
17
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
18
- end
19
-
20
- it 'registers an offense for assignment empty string without space' do
21
- inspect_source(cop, ['def f(x, y="", z=1)',
22
- 'end'])
23
- expect(cop.offenses.size).to eq(2)
24
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'no_space')
25
- end
26
-
27
- it 'registers an offense for assignment of empty list without space' do
28
- inspect_source(cop, ['def f(x, y=[])',
29
- 'end'])
30
- expect(cop.offenses.size).to eq(1)
31
- end
32
-
33
- it 'accepts default value assignment with space' do
34
- inspect_source(cop, ['def f(x, y = 0, z = {})',
35
- 'end'])
36
- expect(cop.messages).to be_empty
37
- end
38
-
39
- it 'auto-corrects missing space' do
40
- new_source = autocorrect_source(cop, ['def f(x, y=0, z=1)', 'end'])
41
- expect(new_source).to eq(['def f(x, y = 0, z = 1)', 'end'].join("\n"))
42
- end
43
-
44
- it 'accepts default value assignment with space' do
45
- inspect_source(cop, ['def f(x, y = +1, z = {})',
46
- 'end'])
47
- expect(cop.messages).to be_empty
48
- end
49
-
50
- it 'auto-corrects missing space' do
51
- new_source = autocorrect_source(cop, ['def f(x=-1, y= 0, z =+1)', 'end'])
52
- expect(new_source).to eq(['def f(x = -1, y = 0, z = +1)',
53
- 'end'].join("\n"))
54
- end
55
- end
56
-
57
- context 'when EnforcedStyle is no_space' do
58
- let(:cop_config) { { 'EnforcedStyle' => 'no_space' } }
59
-
60
- it 'registers an offense for default value assignment with space' do
61
- inspect_source(cop, ['def f(x, y = 0, z =1, w= 2)',
62
- 'end'])
63
- expect(cop.messages)
64
- .to eq(['Surrounding space detected in default value assignment.'] * 3)
65
- expect(cop.highlights).to eq([' = ', ' =', '= '])
66
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
67
- end
68
-
69
- it 'registers an offense for assignment empty string with space' do
70
- inspect_source(cop, ['def f(x, y = "", z = 1)',
71
- 'end'])
72
- expect(cop.offenses.size).to eq(2)
73
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'space')
74
- end
75
-
76
- it 'registers an offense for assignment of empty list with space' do
77
- inspect_source(cop, ['def f(x, y = [])',
78
- 'end'])
79
- expect(cop.offenses.size).to eq(1)
80
- end
81
-
82
- it 'accepts default value assignment without space' do
83
- inspect_source(cop, ['def f(x, y=0, z={})',
84
- 'end'])
85
- expect(cop.messages).to be_empty
86
- end
87
-
88
- it 'auto-corrects unwanted space' do
89
- new_source = autocorrect_source(cop, ['def f(x, y = 0, z= 1, w= 2)',
90
- 'end'])
91
- expect(new_source).to eq(['def f(x, y=0, z=1, w=2)',
92
- 'end'].join("\n"))
93
- end
94
- end
95
- end
@@ -1,330 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::SpaceAroundOperators do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for assignment without space on both sides' do
9
- inspect_source(cop, ['x=0', 'y+= 0', 'z[0] =0'])
10
- expect(cop.messages)
11
- .to eq(["Surrounding space missing for operator '='.",
12
- "Surrounding space missing for operator '+='.",
13
- "Surrounding space missing for operator '='."])
14
- end
15
-
16
- it 'auto-corrects assignment without space on both sides' do
17
- new_source = autocorrect_source(cop, ['x=0', 'y= 0', 'z =0'])
18
- expect(new_source).to eq(['x = 0', 'y = 0', 'z = 0'].join("\n"))
19
- end
20
-
21
- it 'registers an offense for ternary operator without space' do
22
- inspect_source(cop, 'x == 0?1:2')
23
- expect(cop.messages).to eq(
24
- ["Surrounding space missing for operator '?'.",
25
- "Surrounding space missing for operator ':'."])
26
- end
27
-
28
- it 'auto-corrects a ternary operator without space' do
29
- new_source = autocorrect_source(cop, 'x == 0?1:2')
30
- expect(new_source).to eq('x == 0 ? 1 : 2')
31
- end
32
-
33
- it 'registers an offense in presence of modifier if statement' do
34
- check_modifier('if')
35
- end
36
-
37
- it 'registers an offense in presence of modifier unless statement' do
38
- check_modifier('unless')
39
- end
40
-
41
- it 'registers an offense in presence of modifier while statement' do
42
- check_modifier('unless')
43
- end
44
-
45
- it 'registers an offense in presence of modifier until statement' do
46
- check_modifier('unless')
47
- end
48
-
49
- def check_modifier(keyword)
50
- src = ["a=1 #{keyword} condition",
51
- 'c=2']
52
- inspect_source(cop, src)
53
- expect(cop.offenses.map(&:line)).to eq([1, 2])
54
- expect(cop.messages).to eq(
55
- ["Surrounding space missing for operator '='."] * 2)
56
-
57
- new_source = autocorrect_source(cop, src)
58
- expect(new_source)
59
- .to eq(src.map { |line| line.sub(/=/, ' = ') }.join("\n"))
60
- end
61
-
62
- it 'registers an offense for binary operators that could be unary' do
63
- inspect_source(cop, ['a-3', 'x&0xff', 'z+0'])
64
- expect(cop.messages).to eq(
65
- ["Surrounding space missing for operator '-'.",
66
- "Surrounding space missing for operator '&'.",
67
- "Surrounding space missing for operator '+'."])
68
- end
69
-
70
- it 'auto-corrects missing space in binary operators that could be unary' do
71
- new_source = autocorrect_source(cop, ['a-3', 'x&0xff', 'z+0'])
72
- expect(new_source).to eq(['a - 3', 'x & 0xff', 'z + 0'].join("\n"))
73
- end
74
-
75
- it 'registers an offense for arguments to a method' do
76
- inspect_source(cop, 'puts 1+2')
77
- expect(cop.messages).to eq(
78
- ["Surrounding space missing for operator '+'."])
79
- end
80
-
81
- it 'auto-corrects missing space in arguments to a method' do
82
- new_source = autocorrect_source(cop, 'puts 1+2')
83
- expect(new_source).to eq('puts 1 + 2')
84
- end
85
-
86
- it 'accepts operator surrounded by tabs' do
87
- inspect_source(cop, "a\t+\tb")
88
- expect(cop.messages).to be_empty
89
- end
90
-
91
- it 'accepts operator symbols' do
92
- inspect_source(cop, 'func(:-)')
93
- expect(cop.messages).to be_empty
94
- end
95
-
96
- it 'accepts ranges' do
97
- inspect_source(cop, 'a, b = (1..2), (1...3)')
98
- expect(cop.messages).to be_empty
99
- end
100
-
101
- it 'accepts scope operator' do
102
- source = '@io.class == Zlib::GzipWriter'
103
- inspect_source(cop, source)
104
- expect(cop.messages).to be_empty
105
- end
106
-
107
- it 'accepts ::Kernel::raise' do
108
- source = '::Kernel::raise IllegalBlockError.new'
109
- inspect_source(cop, source)
110
- expect(cop.messages).to be_empty
111
- end
112
-
113
- it 'accepts exclamation point negation' do
114
- inspect_source(cop, 'x = !a&&!b')
115
- expect(cop.messages).to eq(
116
- ["Surrounding space missing for operator '&&'."])
117
- end
118
-
119
- it 'accepts exclamation point definition' do
120
- inspect_source(cop, [' def !',
121
- ' !__getobj__',
122
- ' end'])
123
- expect(cop.offenses).to be_empty
124
- expect(cop.messages).to be_empty
125
- end
126
-
127
- it 'accepts a unary' do
128
- inspect_source(cop,
129
- [' def bm(label_width = 0, *labels, &blk)',
130
- ' benchmark(CAPTION, label_width, FORMAT,',
131
- ' *labels, &blk)',
132
- ' end',
133
- '',
134
- ' def each &block',
135
- ' +11',
136
- ' end',
137
- '',
138
- ' def self.search *args',
139
- ' end',
140
- '',
141
- ' def each *args',
142
- ' end',
143
- ''])
144
- expect(cop.messages).to be_empty
145
- end
146
-
147
- it 'accepts splat operator' do
148
- inspect_source(cop, 'return *list if options')
149
- expect(cop.messages).to be_empty
150
- end
151
-
152
- it 'accepts def of operator' do
153
- inspect_source(cop, ['def +(other); end',
154
- 'def self.===(other); end'])
155
- expect(cop.messages).to be_empty
156
- end
157
-
158
- it 'accepts an operator at the end of a line' do
159
- inspect_source(cop,
160
- ["['Favor unless over if for negative ' +",
161
- " 'conditions.'] * 2"])
162
- expect(cop.messages).to eq([])
163
- end
164
-
165
- it 'accepts an assignment with spaces' do
166
- inspect_source(cop, 'x = 0')
167
- expect(cop.offenses).to be_empty
168
- end
169
-
170
- it 'accepts an operator called with method syntax' do
171
- inspect_source(cop, 'Date.today.+(1).to_s')
172
- expect(cop.offenses).to be_empty
173
- end
174
-
175
- it 'registers an offense for operators without spaces' do
176
- inspect_source(cop,
177
- ['x+= a+b-c*d/e%f^g|h&i||j',
178
- 'y -=k&&l'])
179
- expect(cop.messages)
180
- .to eq(["Surrounding space missing for operator '+='.",
181
- "Surrounding space missing for operator '+'.",
182
- "Surrounding space missing for operator '-'.",
183
- "Surrounding space missing for operator '*'.",
184
- "Surrounding space missing for operator '/'.",
185
- "Surrounding space missing for operator '%'.",
186
- "Surrounding space missing for operator '^'.",
187
- "Surrounding space missing for operator '|'.",
188
- "Surrounding space missing for operator '&'.",
189
- "Surrounding space missing for operator '||'.",
190
- "Surrounding space missing for operator '-='.",
191
- "Surrounding space missing for operator '&&'."])
192
- end
193
-
194
- it 'auto-corrects missing space' do
195
- new_source = autocorrect_source(cop, ['x+= a+b-c*d/e%f^g|h&i||j',
196
- 'y -=k&&l'])
197
- expect(new_source).to eq(['x += a + b - c * d / e % f ^ g | h & i || j',
198
- 'y -= k && l'].join("\n"))
199
- end
200
-
201
- it 'accepts operators with spaces' do
202
- inspect_source(cop,
203
- ['x += a + b - c * d / e % f ^ g | h & i || j',
204
- 'y -= k && l'])
205
- expect(cop.messages).to eq([])
206
- end
207
-
208
- it "accepts some operators that are exceptions & don't need spaces" do
209
- inspect_source(cop, ['(1..3)',
210
- 'ActionController::Base',
211
- 'each { |s, t| }'])
212
- expect(cop.messages).to eq([])
213
- end
214
-
215
- it 'accepts an assignment followed by newline' do
216
- inspect_source(cop, ['x =', '0'])
217
- expect(cop.offenses).to be_empty
218
- end
219
-
220
- it 'registers an offenses for exponent operator with spaces' do
221
- inspect_source(cop, 'x = a * b ** 2')
222
- expect(cop.messages).to eq(
223
- ['Space around operator ** detected.'])
224
- end
225
-
226
- it 'auto-corrects unwanted space around **' do
227
- new_source = autocorrect_source(cop, ['x = a * b ** 2',
228
- 'y = a * b** 2'])
229
- expect(new_source).to eq(['x = a * b**2',
230
- 'y = a * b**2'].join("\n"))
231
- end
232
-
233
- it 'accepts exponent operator without spaces' do
234
- inspect_source(cop, 'x = a * b**2')
235
- expect(cop.offenses).to be_empty
236
- end
237
-
238
- it 'registers an offense for a setter call without spaces' do
239
- inspect_source(cop, 'x.y=2')
240
- expect(cop.messages).to eq(
241
- ["Surrounding space missing for operator '='."])
242
- end
243
-
244
- it 'registers an offense for a hash rocket without spaces' do
245
- inspect_source(cop, '{ 1=>2, a: b }')
246
- expect(cop.messages).to eq(
247
- ["Surrounding space missing for operator '=>'."])
248
- end
249
-
250
- it 'accepts unary operators without space' do
251
- inspect_source(cop, ['[].map(&:size)',
252
- 'a.(b)',
253
- '-3',
254
- 'arr.collect { |e| -e }',
255
- 'x = +2'])
256
- expect(cop.messages).to eq([])
257
- end
258
-
259
- it 'accepts [] without space' do
260
- inspect_source(cop, 'files[2]')
261
- expect(cop.messages).to eq([])
262
- end
263
-
264
- it 'accepts argument default values without space' do
265
- # These are handled by SpaceAroundEqualsInParameterDefault,
266
- # so SpaceAroundOperators leaves them alone.
267
- inspect_source(cop,
268
- ['def init(name=nil)',
269
- 'end'])
270
- expect(cop.messages).to be_empty
271
- end
272
-
273
- it 'accepts the construct class <<self with no space after <<' do
274
- inspect_source(cop, ['class <<self',
275
- 'end'])
276
- expect(cop.messages).to be_empty
277
- end
278
-
279
- it 'registers an offense for match operators without space' do
280
- inspect_source(cop, ['x=~/abc/',
281
- 'y !~/abc/'])
282
- expect(cop.messages)
283
- .to eq(["Surrounding space missing for operator '=~'.",
284
- "Surrounding space missing for operator '!~'."])
285
- end
286
-
287
- it 'registers an offense for various assignments without space' do
288
- inspect_source(cop, ['x||=0', 'y&&=0', 'z*=2',
289
- '@a=0', '@@a=0', 'a,b=0', 'A=0', 'x[3]=0', '$A=0'])
290
- expect(cop.messages)
291
- .to eq(["Surrounding space missing for operator '||='.",
292
- "Surrounding space missing for operator '&&='.",
293
- "Surrounding space missing for operator '*='.",
294
- "Surrounding space missing for operator '='.",
295
- "Surrounding space missing for operator '='.",
296
- "Surrounding space missing for operator '='.",
297
- "Surrounding space missing for operator '='.",
298
- "Surrounding space missing for operator '='.",
299
- "Surrounding space missing for operator '='."])
300
- end
301
-
302
- it 'registers an offense for equality operators without space' do
303
- inspect_source(cop, ['x==0', 'y!=0', 'Hash===z'])
304
- expect(cop.messages)
305
- .to eq(["Surrounding space missing for operator '=='.",
306
- "Surrounding space missing for operator '!='.",
307
- "Surrounding space missing for operator '==='."])
308
- end
309
-
310
- it 'registers an offense for - without space with negative lhs operand' do
311
- inspect_source(cop, '-1-arg')
312
- expect(cop.messages)
313
- .to eq(["Surrounding space missing for operator '-'."])
314
- end
315
-
316
- it 'registers an offense for inheritance < without space' do
317
- inspect_source(cop, ['class ShowSourceTestClass<ShowSourceTestSuperClass',
318
- 'end'])
319
- expect(cop.messages)
320
- .to eq(["Surrounding space missing for operator '<'."])
321
- end
322
-
323
- it 'registers an offense for hash rocket without space at rescue' do
324
- inspect_source(cop, ['begin',
325
- 'rescue Exception=>e',
326
- 'end'])
327
- expect(cop.messages)
328
- .to eq(["Surrounding space missing for operator '=>'."])
329
- end
330
- end