rubocop 0.8.3 → 0.9.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 (381) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -4
  3. data/.yardopts +2 -0
  4. data/CHANGELOG.md +70 -1
  5. data/README.md +101 -11
  6. data/config/default.yml +10 -2
  7. data/config/enabled.yml +85 -11
  8. data/lib/rubocop.rb +97 -73
  9. data/lib/rubocop/cli.rb +177 -92
  10. data/lib/rubocop/config.rb +56 -11
  11. data/lib/rubocop/config_store.rb +2 -0
  12. data/lib/rubocop/cop/cop.rb +52 -8
  13. data/lib/rubocop/cop/lint/assignment_in_condition.rb +54 -0
  14. data/lib/rubocop/cop/lint/end_alignment.rb +180 -0
  15. data/lib/rubocop/cop/lint/end_in_method.rb +30 -0
  16. data/lib/rubocop/cop/lint/ensure_return.rb +22 -0
  17. data/lib/rubocop/cop/lint/eval.rb +22 -0
  18. data/lib/rubocop/cop/lint/handle_exceptions.rb +20 -0
  19. data/lib/rubocop/cop/lint/literal_in_condition.rb +63 -0
  20. data/lib/rubocop/cop/lint/loop.rb +29 -0
  21. data/lib/rubocop/cop/lint/rescue_exception.rb +29 -0
  22. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +33 -0
  23. data/lib/rubocop/cop/lint/unreachable_code.rb +35 -0
  24. data/lib/rubocop/cop/lint/unused_local_variable.rb +32 -0
  25. data/lib/rubocop/cop/lint/void.rb +58 -0
  26. data/lib/rubocop/cop/offence.rb +112 -12
  27. data/lib/rubocop/cop/rails/validation.rb +34 -0
  28. data/lib/rubocop/cop/style/access_control.rb +58 -0
  29. data/lib/rubocop/cop/style/alias.rb +28 -0
  30. data/lib/rubocop/cop/style/align_parameters.rb +39 -0
  31. data/lib/rubocop/cop/style/and_or.rb +45 -0
  32. data/lib/rubocop/cop/style/ascii_comments.rb +21 -0
  33. data/lib/rubocop/cop/style/ascii_identifiers.rb +22 -0
  34. data/lib/rubocop/cop/style/attr.rb +20 -0
  35. data/lib/rubocop/cop/style/avoid_class_vars.rb +20 -0
  36. data/lib/rubocop/cop/style/avoid_for.rb +18 -0
  37. data/lib/rubocop/cop/style/avoid_global_vars.rb +65 -0
  38. data/lib/rubocop/cop/style/avoid_perl_backrefs.rb +21 -0
  39. data/lib/rubocop/cop/style/avoid_perlisms.rb +50 -0
  40. data/lib/rubocop/cop/style/begin_block.rb +18 -0
  41. data/lib/rubocop/cop/style/block_comments.rb +20 -0
  42. data/lib/rubocop/cop/style/block_nesting.rb +47 -0
  43. data/lib/rubocop/cop/style/blocks.rb +27 -0
  44. data/lib/rubocop/cop/style/case_equality.rb +22 -0
  45. data/lib/rubocop/cop/style/case_indentation.rb +28 -0
  46. data/lib/rubocop/cop/style/character_literal.rb +37 -0
  47. data/lib/rubocop/cop/style/class_and_module_camel_case.rb +33 -0
  48. data/lib/rubocop/cop/style/class_methods.rb +22 -0
  49. data/lib/rubocop/cop/style/collection_methods.rb +37 -0
  50. data/lib/rubocop/cop/style/colon_method_call.rb +29 -0
  51. data/lib/rubocop/cop/style/constant_name.rb +31 -0
  52. data/lib/rubocop/cop/style/def_parentheses.rb +70 -0
  53. data/lib/rubocop/cop/style/documentation.rb +58 -0
  54. data/lib/rubocop/cop/style/dot_position.rb +25 -0
  55. data/lib/rubocop/cop/style/empty_line_between_defs.rb +26 -0
  56. data/lib/rubocop/cop/style/empty_lines.rb +40 -0
  57. data/lib/rubocop/cop/style/empty_literal.rb +53 -0
  58. data/lib/rubocop/cop/style/encoding.rb +29 -0
  59. data/lib/rubocop/cop/style/end_block.rb +18 -0
  60. data/lib/rubocop/cop/style/end_of_line.rb +23 -0
  61. data/lib/rubocop/cop/style/favor_join.rb +29 -0
  62. data/lib/rubocop/cop/style/favor_modifier.rb +118 -0
  63. data/lib/rubocop/cop/style/favor_sprintf.rb +28 -0
  64. data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +54 -0
  65. data/lib/rubocop/cop/style/hash_syntax.rb +47 -0
  66. data/lib/rubocop/cop/style/if_then_else.rb +80 -0
  67. data/lib/rubocop/cop/style/lambda.rb +47 -0
  68. data/lib/rubocop/cop/style/leading_comment_space.rb +25 -0
  69. data/lib/rubocop/cop/style/line_continuation.rb +26 -0
  70. data/lib/rubocop/cop/style/line_length.rb +30 -0
  71. data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +61 -0
  72. data/lib/rubocop/cop/style/method_call_parentheses.rb +22 -0
  73. data/lib/rubocop/cop/style/method_length.rb +57 -0
  74. data/lib/rubocop/cop/style/not.rb +24 -0
  75. data/lib/rubocop/cop/style/numeric_literals.rb +25 -0
  76. data/lib/rubocop/cop/{op_method.rb → style/op_method.rb} +4 -3
  77. data/lib/rubocop/cop/style/parameter_lists.rb +42 -0
  78. data/lib/rubocop/cop/style/parentheses_around_condition.rb +42 -0
  79. data/lib/rubocop/cop/style/proc.rb +30 -0
  80. data/lib/rubocop/cop/style/reduce_arguments.rb +34 -0
  81. data/lib/rubocop/cop/style/regexp_literal.rb +39 -0
  82. data/lib/rubocop/cop/style/rescue_modifier.rb +55 -0
  83. data/lib/rubocop/cop/style/semicolon.rb +51 -0
  84. data/lib/rubocop/cop/style/single_line_methods.rb +48 -0
  85. data/lib/rubocop/cop/style/space_after_comma_etc.rb +69 -0
  86. data/lib/rubocop/cop/style/space_after_control_keyword.rb +32 -0
  87. data/lib/rubocop/cop/style/string_literals.rb +36 -0
  88. data/lib/rubocop/cop/style/surrounding_space.rb +314 -0
  89. data/lib/rubocop/cop/style/symbol_array.rb +31 -0
  90. data/lib/rubocop/cop/style/symbol_name.rb +27 -0
  91. data/lib/rubocop/cop/style/tab.rb +25 -0
  92. data/lib/rubocop/cop/style/ternary_operator.rb +49 -0
  93. data/lib/rubocop/cop/style/trailing_whitespace.rb +24 -0
  94. data/lib/rubocop/cop/style/trivial_accessors.rb +32 -0
  95. data/lib/rubocop/cop/style/unless_else.rb +26 -0
  96. data/lib/rubocop/cop/style/variable_interpolation.rb +32 -0
  97. data/lib/rubocop/cop/style/when_then.rb +25 -0
  98. data/lib/rubocop/cop/style/while_until_do.rb +45 -0
  99. data/lib/rubocop/cop/style/word_array.rb +44 -0
  100. data/lib/rubocop/cop/util.rb +1 -0
  101. data/lib/rubocop/cop/variable_inspector.rb +280 -0
  102. data/lib/rubocop/formatter/base_formatter.rb +119 -0
  103. data/lib/rubocop/formatter/clang_style_formatter.rb +21 -0
  104. data/lib/rubocop/formatter/emacs_style_formatter.rb +17 -0
  105. data/lib/rubocop/formatter/formatter_set.rb +77 -0
  106. data/lib/rubocop/formatter/json_formatter.rb +76 -0
  107. data/lib/rubocop/formatter/progress_formatter.rb +63 -0
  108. data/lib/rubocop/formatter/simple_text_formatter.rb +62 -0
  109. data/lib/rubocop/version.rb +15 -1
  110. data/rubocop.gemspec +1 -2
  111. data/spec/.rubocop.yml +5 -0
  112. data/spec/project_spec.rb +4 -7
  113. data/spec/rubocop/cli_spec.rb +383 -146
  114. data/spec/rubocop/config_spec.rb +61 -0
  115. data/spec/rubocop/config_store_spec.rb +2 -2
  116. data/spec/rubocop/cops/cop_spec.rb +14 -7
  117. data/spec/rubocop/cops/lint/assignment_in_condition_spec.rb +111 -0
  118. data/spec/rubocop/cops/lint/end_alignment_spec.rb +426 -0
  119. data/spec/rubocop/cops/lint/end_in_method_spec.rb +35 -0
  120. data/spec/rubocop/cops/lint/ensure_return_spec.rb +37 -0
  121. data/spec/rubocop/cops/lint/eval_spec.rb +41 -0
  122. data/spec/rubocop/cops/lint/handle_exceptions_spec.rb +36 -0
  123. data/spec/rubocop/cops/lint/literal_in_condition_spec.rb +35 -0
  124. data/spec/rubocop/cops/lint/loop_spec.rb +33 -0
  125. data/spec/rubocop/cops/lint/rescue_exception_spec.rb +127 -0
  126. data/spec/rubocop/cops/lint/shadowing_outer_local_variable_spec.rb +180 -0
  127. data/spec/rubocop/cops/lint/unreachable_code_spec.rb +69 -0
  128. data/spec/rubocop/cops/lint/unused_local_variable_spec.rb +484 -0
  129. data/spec/rubocop/cops/lint/void_spec.rb +63 -0
  130. data/spec/rubocop/cops/offence_spec.rb +107 -10
  131. data/spec/rubocop/cops/rails/validation_spec.rb +27 -0
  132. data/spec/rubocop/cops/style/access_control_spec.rb +142 -0
  133. data/spec/rubocop/cops/style/alias_spec.rb +47 -0
  134. data/spec/rubocop/cops/style/align_parameters_spec.rb +199 -0
  135. data/spec/rubocop/cops/style/and_or_spec.rb +39 -0
  136. data/spec/rubocop/cops/style/ascii_comments_spec.rb +28 -0
  137. data/spec/rubocop/cops/style/ascii_identifiers_spec.rb +28 -0
  138. data/spec/rubocop/cops/style/attr_spec.rb +20 -0
  139. data/spec/rubocop/cops/style/avoid_class_vars_spec.rb +27 -0
  140. data/spec/rubocop/cops/style/avoid_for_spec.rb +37 -0
  141. data/spec/rubocop/cops/style/avoid_global_vars_spec.rb +34 -0
  142. data/spec/rubocop/cops/style/avoid_perl_backrefs_spec.rb +20 -0
  143. data/spec/rubocop/cops/style/avoid_perlisms_spec.rb +47 -0
  144. data/spec/rubocop/cops/style/begin_block_spec.rb +19 -0
  145. data/spec/rubocop/cops/style/block_comments_spec.rb +27 -0
  146. data/spec/rubocop/cops/style/block_nesting_spec.rb +159 -0
  147. data/spec/rubocop/cops/style/blocks_spec.rb +35 -0
  148. data/spec/rubocop/cops/style/case_equality_spec.rb +18 -0
  149. data/spec/rubocop/cops/style/case_indentation_spec.rb +88 -0
  150. data/spec/rubocop/cops/style/character_literal_spec.rb +28 -0
  151. data/spec/rubocop/cops/style/class_and_module_camel_case_spec.rb +46 -0
  152. data/spec/rubocop/cops/style/class_methods_spec.rb +51 -0
  153. data/spec/rubocop/cops/style/collection_methods_spec.rb +46 -0
  154. data/spec/rubocop/cops/style/colon_method_call_spec.rb +55 -0
  155. data/spec/rubocop/cops/style/constant_name_spec.rb +56 -0
  156. data/spec/rubocop/cops/style/def_with_parentheses_spec.rb +40 -0
  157. data/spec/rubocop/cops/style/def_without_parentheses_spec.rb +34 -0
  158. data/spec/rubocop/cops/style/documentation_spec.rb +79 -0
  159. data/spec/rubocop/cops/style/dot_position_spec.rb +30 -0
  160. data/spec/rubocop/cops/style/empty_line_between_defs_spec.rb +85 -0
  161. data/spec/rubocop/cops/style/empty_lines_spec.rb +40 -0
  162. data/spec/rubocop/cops/style/empty_literal_spec.rb +91 -0
  163. data/spec/rubocop/cops/style/encoding_spec.rb +49 -0
  164. data/spec/rubocop/cops/style/end_block_spec.rb +19 -0
  165. data/spec/rubocop/cops/style/end_of_line_spec.rb +25 -0
  166. data/spec/rubocop/cops/style/favor_join_spec.rb +37 -0
  167. data/spec/rubocop/cops/style/favor_modifier_spec.rb +160 -0
  168. data/spec/rubocop/cops/style/favor_sprintf_spec.rb +53 -0
  169. data/spec/rubocop/cops/style/favor_unless_over_negated_if_spec.rb +64 -0
  170. data/spec/rubocop/cops/style/favor_until_over_negated_while_spec.rb +47 -0
  171. data/spec/rubocop/cops/style/hash_syntax_spec.rb +51 -0
  172. data/spec/rubocop/cops/style/if_with_semicolon_spec.rb +25 -0
  173. data/spec/rubocop/cops/style/lambda_spec.rb +45 -0
  174. data/spec/rubocop/cops/style/leading_comment_space_spec.rb +65 -0
  175. data/spec/rubocop/cops/style/line_continuation_spec.rb +26 -0
  176. data/spec/rubocop/cops/style/line_length_spec.rb +25 -0
  177. data/spec/rubocop/cops/style/method_and_variable_snake_case_spec.rb +95 -0
  178. data/spec/rubocop/cops/style/method_call_parentheses_spec.rb +25 -0
  179. data/spec/rubocop/cops/style/method_length_spec.rb +151 -0
  180. data/spec/rubocop/cops/style/multiline_if_then_spec.rb +81 -0
  181. data/spec/rubocop/cops/style/not_spec.rb +28 -0
  182. data/spec/rubocop/cops/style/numeric_literals_spec.rb +51 -0
  183. data/spec/rubocop/cops/style/one_line_conditional_spec.rb +18 -0
  184. data/spec/rubocop/cops/style/op_method_spec.rb +80 -0
  185. data/spec/rubocop/cops/style/parameter_lists_spec.rb +49 -0
  186. data/spec/rubocop/cops/style/parentheses_around_condition_spec.rb +59 -0
  187. data/spec/rubocop/cops/style/proc_spec.rb +28 -0
  188. data/spec/rubocop/cops/style/reduce_arguments_spec.rb +59 -0
  189. data/spec/rubocop/cops/style/regexp_literal_spec.rb +83 -0
  190. data/spec/rubocop/cops/style/rescue_modifier_spec.rb +122 -0
  191. data/spec/rubocop/cops/style/semicolon_spec.rb +95 -0
  192. data/spec/rubocop/cops/style/single_line_methods_spec.rb +54 -0
  193. data/spec/rubocop/cops/style/space_after_colon_spec.rb +29 -0
  194. data/spec/rubocop/cops/style/space_after_comma_spec.rb +31 -0
  195. data/spec/rubocop/cops/style/space_after_control_keyword_spec.rb +69 -0
  196. data/spec/rubocop/cops/style/space_after_semicolon_spec.rb +24 -0
  197. data/spec/rubocop/cops/style/space_around_braces_spec.rb +49 -0
  198. data/spec/rubocop/cops/style/space_around_equals_in_default_parameter_spec.rb +34 -0
  199. data/spec/rubocop/cops/style/space_around_operators_spec.rb +216 -0
  200. data/spec/rubocop/cops/style/space_inside_brackets_spec.rb +51 -0
  201. data/spec/rubocop/cops/style/space_inside_hash_literal_braces_spec.rb +99 -0
  202. data/spec/rubocop/cops/style/space_inside_parens_spec.rb +33 -0
  203. data/spec/rubocop/cops/style/string_literals_spec.rb +62 -0
  204. data/spec/rubocop/cops/style/symbol_array_spec.rb +45 -0
  205. data/spec/rubocop/cops/style/symbol_name_spec.rb +122 -0
  206. data/spec/rubocop/cops/style/tab_spec.rb +23 -0
  207. data/spec/rubocop/cops/style/ternary_operator_spec.rb +42 -0
  208. data/spec/rubocop/cops/style/trailing_whitespace_spec.rb +29 -0
  209. data/spec/rubocop/cops/style/trivial_accessors_spec.rb +338 -0
  210. data/spec/rubocop/cops/style/unless_else_spec.rb +31 -0
  211. data/spec/rubocop/cops/style/variable_interpolation_spec.rb +53 -0
  212. data/spec/rubocop/cops/style/when_then_spec.rb +40 -0
  213. data/spec/rubocop/cops/style/while_until_do_spec.rb +47 -0
  214. data/spec/rubocop/cops/style/word_array_spec.rb +61 -0
  215. data/spec/rubocop/cops/variable_inspector_spec.rb +374 -0
  216. data/spec/rubocop/formatter/base_formatter_spec.rb +190 -0
  217. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +70 -0
  218. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +32 -0
  219. data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
  220. data/spec/rubocop/formatter/json_formatter_spec.rb +142 -0
  221. data/spec/rubocop/formatter/progress_formatter_spec.rb +196 -0
  222. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +74 -0
  223. data/spec/spec_helper.rb +23 -8
  224. data/spec/support/mri_syntax_checker.rb +69 -0
  225. data/spec/support/shared_examples.rb +33 -0
  226. metadata +315 -243
  227. data/lib/rubocop/cop/access_control.rb +0 -41
  228. data/lib/rubocop/cop/alias.rb +0 -17
  229. data/lib/rubocop/cop/align_parameters.rb +0 -37
  230. data/lib/rubocop/cop/and_or.rb +0 -36
  231. data/lib/rubocop/cop/ascii_comments.rb +0 -17
  232. data/lib/rubocop/cop/ascii_identifiers.rb +0 -19
  233. data/lib/rubocop/cop/avoid_class_vars.rb +0 -15
  234. data/lib/rubocop/cop/avoid_for.rb +0 -17
  235. data/lib/rubocop/cop/avoid_global_vars.rb +0 -61
  236. data/lib/rubocop/cop/avoid_perl_backrefs.rb +0 -17
  237. data/lib/rubocop/cop/avoid_perlisms.rb +0 -47
  238. data/lib/rubocop/cop/block_comments.rb +0 -17
  239. data/lib/rubocop/cop/block_nesting.rb +0 -35
  240. data/lib/rubocop/cop/blocks.rb +0 -23
  241. data/lib/rubocop/cop/case_indentation.rb +0 -22
  242. data/lib/rubocop/cop/class_and_module_camel_case.rb +0 -29
  243. data/lib/rubocop/cop/class_methods.rb +0 -15
  244. data/lib/rubocop/cop/collection_methods.rb +0 -29
  245. data/lib/rubocop/cop/colon_method_call.rb +0 -20
  246. data/lib/rubocop/cop/constant_name.rb +0 -24
  247. data/lib/rubocop/cop/def_parentheses.rb +0 -62
  248. data/lib/rubocop/cop/empty_line_between_defs.rb +0 -22
  249. data/lib/rubocop/cop/empty_lines.rb +0 -34
  250. data/lib/rubocop/cop/empty_literal.rb +0 -49
  251. data/lib/rubocop/cop/encoding.rb +0 -19
  252. data/lib/rubocop/cop/end_of_line.rb +0 -15
  253. data/lib/rubocop/cop/ensure_return.rb +0 -19
  254. data/lib/rubocop/cop/eval.rb +0 -19
  255. data/lib/rubocop/cop/favor_join.rb +0 -22
  256. data/lib/rubocop/cop/favor_modifier.rb +0 -92
  257. data/lib/rubocop/cop/favor_percent_r.rb +0 -19
  258. data/lib/rubocop/cop/favor_sprintf.rb +0 -21
  259. data/lib/rubocop/cop/favor_unless_over_negated_if.rb +0 -49
  260. data/lib/rubocop/cop/handle_exceptions.rb +0 -17
  261. data/lib/rubocop/cop/hash_syntax.rb +0 -41
  262. data/lib/rubocop/cop/if_then_else.rb +0 -75
  263. data/lib/rubocop/cop/lambda.rb +0 -42
  264. data/lib/rubocop/cop/leading_comment_space.rb +0 -19
  265. data/lib/rubocop/cop/line_continuation.rb +0 -15
  266. data/lib/rubocop/cop/line_length.rb +0 -23
  267. data/lib/rubocop/cop/loop.rb +0 -33
  268. data/lib/rubocop/cop/method_and_variable_snake_case.rb +0 -55
  269. data/lib/rubocop/cop/method_length.rb +0 -52
  270. data/lib/rubocop/cop/not.rb +0 -21
  271. data/lib/rubocop/cop/numeric_literals.rb +0 -21
  272. data/lib/rubocop/cop/parameter_lists.rb +0 -23
  273. data/lib/rubocop/cop/parentheses_around_condition.rb +0 -40
  274. data/lib/rubocop/cop/percent_r.rb +0 -19
  275. data/lib/rubocop/cop/proc.rb +0 -26
  276. data/lib/rubocop/cop/reduce_arguments.rb +0 -29
  277. data/lib/rubocop/cop/rescue_exception.rb +0 -26
  278. data/lib/rubocop/cop/rescue_modifier.rb +0 -15
  279. data/lib/rubocop/cop/semicolon.rb +0 -31
  280. data/lib/rubocop/cop/single_line_methods.rb +0 -44
  281. data/lib/rubocop/cop/space_after_comma_etc.rb +0 -62
  282. data/lib/rubocop/cop/space_after_control_keyword.rb +0 -29
  283. data/lib/rubocop/cop/string_literals.rb +0 -25
  284. data/lib/rubocop/cop/surrounding_space.rb +0 -285
  285. data/lib/rubocop/cop/symbol_array.rb +0 -31
  286. data/lib/rubocop/cop/symbol_name.rb +0 -23
  287. data/lib/rubocop/cop/syntax.rb +0 -49
  288. data/lib/rubocop/cop/tab.rb +0 -15
  289. data/lib/rubocop/cop/ternary_operator.rb +0 -43
  290. data/lib/rubocop/cop/trailing_whitespace.rb +0 -15
  291. data/lib/rubocop/cop/trivial_accessors.rb +0 -26
  292. data/lib/rubocop/cop/unless_else.rb +0 -23
  293. data/lib/rubocop/cop/variable_interpolation.rb +0 -29
  294. data/lib/rubocop/cop/when_then.rb +0 -17
  295. data/lib/rubocop/cop/word_array.rb +0 -37
  296. data/lib/rubocop/report/emacs_style.rb +0 -17
  297. data/lib/rubocop/report/plain_text.rb +0 -18
  298. data/lib/rubocop/report/report.rb +0 -44
  299. data/spec/rubocop/cops/access_control_spec.rb +0 -129
  300. data/spec/rubocop/cops/alias_spec.rb +0 -39
  301. data/spec/rubocop/cops/align_parameters_spec.rb +0 -197
  302. data/spec/rubocop/cops/and_or_spec.rb +0 -37
  303. data/spec/rubocop/cops/ascii_comments_spec.rb +0 -26
  304. data/spec/rubocop/cops/ascii_identifiers_spec.rb +0 -26
  305. data/spec/rubocop/cops/avoid_class_vars_spec.rb +0 -25
  306. data/spec/rubocop/cops/avoid_for_spec.rb +0 -35
  307. data/spec/rubocop/cops/avoid_global_vars_spec.rb +0 -32
  308. data/spec/rubocop/cops/avoid_perl_backrefs_spec.rb +0 -18
  309. data/spec/rubocop/cops/avoid_perlisms_spec.rb +0 -44
  310. data/spec/rubocop/cops/block_comments_spec.rb +0 -25
  311. data/spec/rubocop/cops/block_nesting_spec.rb +0 -148
  312. data/spec/rubocop/cops/blocks_spec.rb +0 -33
  313. data/spec/rubocop/cops/case_indentation_spec.rb +0 -86
  314. data/spec/rubocop/cops/class_and_module_camel_case_spec.rb +0 -44
  315. data/spec/rubocop/cops/class_methods_spec.rb +0 -49
  316. data/spec/rubocop/cops/collection_methods_spec.rb +0 -44
  317. data/spec/rubocop/cops/colon_method_call_spec.rb +0 -53
  318. data/spec/rubocop/cops/constant_name_spec.rb +0 -42
  319. data/spec/rubocop/cops/def_with_parentheses_spec.rb +0 -38
  320. data/spec/rubocop/cops/def_without_parentheses_spec.rb +0 -32
  321. data/spec/rubocop/cops/empty_line_between_defs_spec.rb +0 -83
  322. data/spec/rubocop/cops/empty_lines_spec.rb +0 -38
  323. data/spec/rubocop/cops/empty_literal_spec.rb +0 -90
  324. data/spec/rubocop/cops/encoding_spec.rb +0 -47
  325. data/spec/rubocop/cops/end_of_line_spec.rb +0 -23
  326. data/spec/rubocop/cops/ensure_return_spec.rb +0 -35
  327. data/spec/rubocop/cops/eval_spec.rb +0 -39
  328. data/spec/rubocop/cops/favor_join_spec.rb +0 -35
  329. data/spec/rubocop/cops/favor_modifier_spec.rb +0 -146
  330. data/spec/rubocop/cops/favor_percent_r_spec.rb +0 -29
  331. data/spec/rubocop/cops/favor_sprintf_spec.rb +0 -51
  332. data/spec/rubocop/cops/favor_unless_over_negated_if_spec.rb +0 -62
  333. data/spec/rubocop/cops/favor_until_over_negated_while_spec.rb +0 -45
  334. data/spec/rubocop/cops/handle_exceptions_spec.rb +0 -34
  335. data/spec/rubocop/cops/hash_syntax_spec.rb +0 -49
  336. data/spec/rubocop/cops/if_with_semicolon_spec.rb +0 -23
  337. data/spec/rubocop/cops/lambda_spec.rb +0 -43
  338. data/spec/rubocop/cops/leading_comment_space_spec.rb +0 -54
  339. data/spec/rubocop/cops/line_continuation_spec.rb +0 -24
  340. data/spec/rubocop/cops/line_length_spec.rb +0 -23
  341. data/spec/rubocop/cops/loop_spec.rb +0 -31
  342. data/spec/rubocop/cops/method_and_variable_snake_case_spec.rb +0 -93
  343. data/spec/rubocop/cops/method_length_spec.rb +0 -147
  344. data/spec/rubocop/cops/multiline_if_then_spec.rb +0 -79
  345. data/spec/rubocop/cops/not_spec.rb +0 -26
  346. data/spec/rubocop/cops/numeric_literals_spec.rb +0 -49
  347. data/spec/rubocop/cops/one_line_conditional_spec.rb +0 -16
  348. data/spec/rubocop/cops/op_method_spec.rb +0 -78
  349. data/spec/rubocop/cops/parameter_lists_spec.rb +0 -24
  350. data/spec/rubocop/cops/parentheses_around_condition_spec.rb +0 -61
  351. data/spec/rubocop/cops/percent_r_spec.rb +0 -29
  352. data/spec/rubocop/cops/proc_spec.rb +0 -26
  353. data/spec/rubocop/cops/reduce_arguments_spec.rb +0 -57
  354. data/spec/rubocop/cops/rescue_exception_spec.rb +0 -125
  355. data/spec/rubocop/cops/rescue_modifier_spec.rb +0 -37
  356. data/spec/rubocop/cops/semicolon_spec.rb +0 -88
  357. data/spec/rubocop/cops/single_line_methods_spec.rb +0 -50
  358. data/spec/rubocop/cops/space_after_colon_spec.rb +0 -27
  359. data/spec/rubocop/cops/space_after_comma_spec.rb +0 -29
  360. data/spec/rubocop/cops/space_after_control_keyword_spec.rb +0 -67
  361. data/spec/rubocop/cops/space_after_semicolon_spec.rb +0 -22
  362. data/spec/rubocop/cops/space_around_braces_spec.rb +0 -47
  363. data/spec/rubocop/cops/space_around_equals_in_default_parameter_spec.rb +0 -32
  364. data/spec/rubocop/cops/space_around_operators_spec.rb +0 -209
  365. data/spec/rubocop/cops/space_inside_brackets_spec.rb +0 -49
  366. data/spec/rubocop/cops/space_inside_hash_literal_braces_spec.rb +0 -86
  367. data/spec/rubocop/cops/space_inside_parens_spec.rb +0 -31
  368. data/spec/rubocop/cops/string_literals_spec.rb +0 -58
  369. data/spec/rubocop/cops/symbol_array_spec.rb +0 -41
  370. data/spec/rubocop/cops/symbol_name_spec.rb +0 -119
  371. data/spec/rubocop/cops/syntax_spec.rb +0 -41
  372. data/spec/rubocop/cops/tab_spec.rb +0 -21
  373. data/spec/rubocop/cops/ternary_operator_spec.rb +0 -40
  374. data/spec/rubocop/cops/trailing_whitespace_spec.rb +0 -27
  375. data/spec/rubocop/cops/trivial_accessors_spec.rb +0 -337
  376. data/spec/rubocop/cops/unless_else_spec.rb +0 -29
  377. data/spec/rubocop/cops/variable_interpolation_spec.rb +0 -49
  378. data/spec/rubocop/cops/when_then_spec.rb +0 -38
  379. data/spec/rubocop/cops/word_array_spec.rb +0 -47
  380. data/spec/rubocop/reports/emacs_style_spec.rb +0 -25
  381. data/spec/rubocop/reports/report_spec.rb +0 -29
@@ -84,6 +84,67 @@ describe Rubocop::Config do
84
84
  end
85
85
  end
86
86
 
87
+ context 'when multiple config files exist in ancestor directories' do
88
+ let(:file_path) { 'dir/.rubocop.yml' }
89
+
90
+ before do
91
+ create_file('.rubocop.yml',
92
+ ['AllCops:',
93
+ ' Excludes:',
94
+ ' - vendor/**',
95
+ ])
96
+
97
+ create_file(file_path,
98
+ ['AllCops:',
99
+ ' Excludes: []',
100
+ ])
101
+ end
102
+
103
+ it 'gets AllCops/Exclude from the highest directory level' do
104
+ excludes = configuration_from_file['AllCops']['Excludes']
105
+ expect(excludes).to eq(['../vendor/**'])
106
+ end
107
+ end
108
+
109
+ context 'when a file inherits from a parent file' do
110
+ let(:file_path) { 'dir/.rubocop.yml' }
111
+
112
+ before do
113
+ create_file('.rubocop.yml',
114
+ ['AllCops:',
115
+ ' Excludes:',
116
+ ' - vendor/**',
117
+ ' - !ruby/regexp /[A-Z]/',
118
+ ])
119
+
120
+ create_file(file_path, ['inherit_from: ../.rubocop.yml'])
121
+ end
122
+
123
+ it 'gets AllCops/Exclude relative to its own directory' do
124
+ excludes = configuration_from_file['AllCops']['Excludes']
125
+ expect(excludes).to eq(['../vendor/**', /[A-Z]/])
126
+ end
127
+ end
128
+
129
+ context 'when a file inherits from a sibling file' do
130
+ let(:file_path) { 'dir/.rubocop.yml' }
131
+
132
+ before do
133
+ create_file('src/.rubocop.yml',
134
+ ['AllCops:',
135
+ ' Excludes:',
136
+ ' - vendor/**',
137
+ ])
138
+
139
+ create_file(file_path, ['inherit_from: ../src/.rubocop.yml'])
140
+ end
141
+
142
+ it 'gets AllCops/Exclude relative to its own directory' do
143
+ excludes = configuration_from_file['AllCops']['Excludes']
144
+ expect(excludes).to eq(['../src/vendor/**'])
145
+ end
146
+ end
147
+
87
148
  context 'when a file inherits from a parent and grandparent file' do
88
149
  let(:file_path) { 'dir/subdir/.rubocop.yml' }
89
150
 
@@ -47,8 +47,8 @@ module Rubocop
47
47
  Config.should_receive(:configuration_file_for).once.with('dir/' +
48
48
  'subdir')
49
49
  # The stub returns the same config path for dir and dir/subdir.
50
- Config.should_receive(:configuration_from_file).once.
51
- with('dir/.rubocop.yml')
50
+ Config.should_receive(:configuration_from_file).once
51
+ .with('dir/.rubocop.yml')
52
52
 
53
53
  ConfigStore.for('dir/file2')
54
54
  ConfigStore.for('dir/file2')
@@ -6,25 +6,32 @@ module Rubocop
6
6
  module Cop
7
7
  describe Cop do
8
8
  let(:cop) { Cop.new }
9
+ let(:location) do
10
+ source_buffer = Parser::Source::Buffer.new('test', 1)
11
+ source_buffer.source = "a\n"
12
+ Parser::Source::Range.new(source_buffer, 0, 1)
13
+ end
9
14
 
10
15
  it 'initially has 0 offences' do
11
16
  expect(cop.offences).to be_empty
12
17
  end
13
18
 
14
- it 'initially has nothing to report' do
15
- expect(cop.has_report?).to be_false
16
- end
17
-
18
19
  it 'keeps track of offences' do
19
- cop.add_offence(:convention, 1, 'message')
20
+ cop.add_offence(:convention, location, 'message')
20
21
 
21
22
  expect(cop.offences.size).to eq(1)
22
23
  end
23
24
 
24
25
  it 'will report registered offences' do
25
- cop.add_offence(:convention, 1, 'message')
26
+ cop.add_offence(:convention, location, 'message')
27
+
28
+ expect(cop.offences).not_to be_empty
29
+ end
26
30
 
27
- expect(cop.has_report?).to be_true
31
+ it 'registers offence with its name' do
32
+ cop = Style::AvoidFor.new
33
+ cop.add_offence(:convention, location, 'message')
34
+ expect(cop.offences.first.cop_name).to eq('AvoidFor')
28
35
  end
29
36
  end
30
37
  end
@@ -0,0 +1,111 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Lint
8
+ describe AssignmentInCondition do
9
+ let(:cop) { AssignmentInCondition.new }
10
+ before do
11
+ AssignmentInCondition.config = { 'AllowSafeAssignment' => true }
12
+ end
13
+
14
+ it 'registers an offence for lvar assignment in condition' do
15
+ inspect_source(cop,
16
+ ['if test = 10',
17
+ 'end'
18
+ ])
19
+ expect(cop.offences.size).to eq(1)
20
+ end
21
+
22
+ it 'registers an offence for lvar assignment in while condition' do
23
+ inspect_source(cop,
24
+ ['while test = 10',
25
+ 'end'
26
+ ])
27
+ expect(cop.offences.size).to eq(1)
28
+ end
29
+
30
+ it 'registers an offence for lvar assignment in until condition' do
31
+ inspect_source(cop,
32
+ ['until test = 10',
33
+ 'end'
34
+ ])
35
+ expect(cop.offences.size).to eq(1)
36
+ end
37
+
38
+ it 'registers an offence for ivar assignment in condition' do
39
+ inspect_source(cop,
40
+ ['if @test = 10',
41
+ 'end'
42
+ ])
43
+ expect(cop.offences.size).to eq(1)
44
+ end
45
+
46
+ it 'registers an offence for clvar assignment in condition' do
47
+ inspect_source(cop,
48
+ ['if @@test = 10',
49
+ 'end'
50
+ ])
51
+ expect(cop.offences.size).to eq(1)
52
+ end
53
+
54
+ it 'registers an offence for gvar assignment in condition' do
55
+ inspect_source(cop,
56
+ ['if $test = 10',
57
+ 'end'
58
+ ])
59
+ expect(cop.offences.size).to eq(1)
60
+ end
61
+
62
+ it 'registers an offence for constant assignment in condition' do
63
+ inspect_source(cop,
64
+ ['if TEST = 10',
65
+ 'end'
66
+ ])
67
+ expect(cop.offences.size).to eq(1)
68
+ end
69
+
70
+ it 'accepts == in condition' do
71
+ inspect_source(cop,
72
+ ['if test == 10',
73
+ 'end'
74
+ ])
75
+ expect(cop.offences).to be_empty
76
+ end
77
+
78
+ it 'accepts ||= in condition' do
79
+ inspect_source(cop,
80
+ ['raise StandardError unless foo ||= bar'])
81
+ expect(cop.offences).to be_empty
82
+ end
83
+
84
+ context 'safe assignment is allowed' do
85
+ it 'accepts = in condition surrounded with braces' do
86
+ inspect_source(cop,
87
+ ['if (test = 10)',
88
+ 'end'
89
+ ])
90
+ expect(cop.offences).to be_empty
91
+ end
92
+
93
+ end
94
+
95
+ context 'safe assignment is not allowed' do
96
+ before do
97
+ AssignmentInCondition.config['AllowSafeAssignment'] = false
98
+ end
99
+
100
+ it 'does not accepts = in condition surrounded with braces' do
101
+ inspect_source(cop,
102
+ ['if (test == 10)',
103
+ 'end'
104
+ ])
105
+ expect(cop.offences).to be_empty
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,426 @@
1
+ # encoding: utf-8
2
+ # rubocop:disable LineLength
3
+
4
+ require 'spec_helper'
5
+
6
+ module Rubocop
7
+ module Cop
8
+ module Lint
9
+ describe EndAlignment do
10
+ let(:cop) { EndAlignment.new }
11
+ before do
12
+ # TODO: Initialize the config to a default {} value. Currently it's nil.
13
+ EndAlignment.config = {}
14
+ end
15
+
16
+ it 'registers an offence for mismatched class end' do
17
+ inspect_source(cop,
18
+ ['class Test',
19
+ ' end'
20
+ ])
21
+ expect(cop.offences.size).to eq(1)
22
+ end
23
+
24
+ it 'registers an offence for mismatched module end' do
25
+ inspect_source(cop,
26
+ ['module Test',
27
+ ' end'
28
+ ])
29
+ expect(cop.offences.size).to eq(1)
30
+ end
31
+
32
+ it 'registers an offence for mismatched def end' do
33
+ inspect_source(cop,
34
+ ['def test',
35
+ ' end'
36
+ ])
37
+ expect(cop.offences.size).to eq(1)
38
+ end
39
+
40
+ it 'registers an offence for mismatched defs end' do
41
+ inspect_source(cop,
42
+ ['def Test.test',
43
+ ' end'
44
+ ])
45
+ expect(cop.offences.size).to eq(1)
46
+ end
47
+
48
+ it 'registers an offence for mismatched if end' do
49
+ inspect_source(cop,
50
+ ['if test',
51
+ ' end'
52
+ ])
53
+ expect(cop.offences.size).to eq(1)
54
+ end
55
+
56
+ it 'registers an offence for mismatched while end' do
57
+ inspect_source(cop,
58
+ ['while test',
59
+ ' end'
60
+ ])
61
+ expect(cop.offences.size).to eq(1)
62
+ end
63
+
64
+ it 'registers an offence for mismatched until end' do
65
+ inspect_source(cop,
66
+ ['until test',
67
+ ' end'
68
+ ])
69
+ expect(cop.offences.size).to eq(1)
70
+ end
71
+
72
+ it 'registers an offence for mismatched block end' do
73
+ inspect_source(cop,
74
+ ['test do |ala|',
75
+ ' end'
76
+ ])
77
+ expect(cop.offences.size).to eq(1)
78
+ end
79
+
80
+ context 'with BlockAlignSchema set to StartOfAssignment' do
81
+ before do
82
+ EndAlignment.config = { 'BlockAlignSchema' => 'StartOfAssignment' }
83
+ end
84
+
85
+ it 'accepts end aligned with a variable' do
86
+ inspect_source(cop,
87
+ ['variable = test do |ala|',
88
+ 'end'
89
+ ])
90
+ expect(cop.offences).to be_empty
91
+ end
92
+
93
+ it 'registers an offence for mismatched block end with a variable' do
94
+ inspect_source(cop,
95
+ ['variable = test do |ala|',
96
+ ' end'
97
+ ])
98
+ expect(cop.offences.size).to eq(1)
99
+ end
100
+
101
+ it 'accepts end aligned with an instance variable' do
102
+ inspect_source(cop,
103
+ ['@variable = test do |ala|',
104
+ 'end'
105
+ ])
106
+ expect(cop.offences).to be_empty
107
+ end
108
+
109
+ it 'registers an offence for mismatched block end with an instance variable' do
110
+ inspect_source(cop,
111
+ ['@variable = test do |ala|',
112
+ ' end'
113
+ ])
114
+ expect(cop.offences.size).to eq(1)
115
+ end
116
+
117
+ it 'accepts end aligned with a class variable' do
118
+ inspect_source(cop,
119
+ ['@@variable = test do |ala|',
120
+ 'end'
121
+ ])
122
+ expect(cop.offences).to be_empty
123
+ end
124
+
125
+ it 'registers an offence for mismatched block end with a class variable' do
126
+ inspect_source(cop,
127
+ ['@@variable = test do |ala|',
128
+ ' end'
129
+ ])
130
+ expect(cop.offences.size).to eq(1)
131
+ end
132
+
133
+ it 'accepts end aligned with a global variable' do
134
+ inspect_source(cop,
135
+ ['$variable = test do |ala|',
136
+ 'end'
137
+ ])
138
+ expect(cop.offences).to be_empty
139
+ end
140
+
141
+ it 'registers an offence for mismatched block end with a global variable' do
142
+ inspect_source(cop,
143
+ ['$variable = test do |ala|',
144
+ ' end'
145
+ ])
146
+ expect(cop.offences.size).to eq(1)
147
+ end
148
+
149
+ it 'accepts end aligned with a constant' do
150
+ inspect_source(cop,
151
+ ['CONSTANT = test do |ala|',
152
+ 'end'
153
+ ])
154
+ expect(cop.offences).to be_empty
155
+ end
156
+
157
+ it 'registers an offence for mismatched block end with a constant' do
158
+ inspect_source(cop,
159
+ ['Module::CONSTANT = test do |ala|',
160
+ ' end'
161
+ ])
162
+ expect(cop.offences.size).to eq(1)
163
+ end
164
+
165
+ it 'accepts end aligned with an attribute writer method' do
166
+ inspect_source(cop,
167
+ ['parser.child.consumer = lambda do |token|',
168
+ ' token << 1',
169
+ 'end'
170
+ ])
171
+ expect(cop.offences).to be_empty
172
+ end
173
+
174
+ it 'registers an offence for mismatched block end with an attribute writer method' do
175
+ inspect_source(cop,
176
+ ['parser.child.consumer = lambda do |token|',
177
+ ' token << 1',
178
+ ' end'
179
+ ])
180
+ expect(cop.offences.size).to eq(1)
181
+ end
182
+
183
+ it 'accepts end aligned with an op-asgn (+=, -=)' do
184
+ inspect_source(cop,
185
+ ['rb += files.select do |file|',
186
+ ' file << something',
187
+ 'end'
188
+ ])
189
+ expect(cop.offences).to be_empty
190
+ end
191
+
192
+ it 'registers an offence for mismatched block end with an op-asgn (+=, -=)' do
193
+ inspect_source(cop,
194
+ ['rb += files.select do |file|',
195
+ ' file << something',
196
+ ' end'
197
+ ])
198
+ expect(cop.offences.size).to eq(1)
199
+ end
200
+
201
+ it 'accepts end aligned with an and-asgn (&&=)' do
202
+ inspect_source(cop,
203
+ ['variable &&= test do |ala|',
204
+ 'end'
205
+ ])
206
+ expect(cop.offences).to be_empty
207
+ end
208
+
209
+ it 'registers an offence for mismatched block end with an and-asgn (&&=)' do
210
+ inspect_source(cop,
211
+ ['variable &&= test do |ala|',
212
+ ' end'
213
+ ])
214
+ expect(cop.offences.size).to eq(1)
215
+ end
216
+
217
+ it 'accepts end aligned with an or-asgn (||=)' do
218
+ inspect_source(cop,
219
+ ['variable ||= test do |ala|',
220
+ 'end'
221
+ ])
222
+ expect(cop.offences).to be_empty
223
+ end
224
+
225
+ it 'registers an offence for mismatched block end with an or-asgn (||=)' do
226
+ inspect_source(cop,
227
+ ['variable ||= test do |ala|',
228
+ ' end'
229
+ ])
230
+ expect(cop.offences.size).to eq(1)
231
+ end
232
+
233
+ it 'accepts end aligned with a mass assignment' do
234
+ inspect_source(cop,
235
+ ['var1, var2 = lambda do |test|',
236
+ ' [1, 2]',
237
+ 'end'
238
+ ])
239
+ expect(cop.offences).to be_empty
240
+ end
241
+
242
+ it 'registers an offence for mismatched block end with a mass assignment' do
243
+ inspect_source(cop,
244
+ ['var1, var2 = lambda do |test|',
245
+ ' [1, 2]',
246
+ ' end'
247
+ ])
248
+ expect(cop.offences.size).to eq(1)
249
+ end
250
+ end
251
+
252
+ context 'with BlockAlignSchema set to StartOfBlockCommand' do
253
+ before do
254
+ EndAlignment.config = { 'BlockAlignSchema' => 'StartOfBlockCommand' }
255
+ end
256
+
257
+ it 'accepts end aligned with the method that invokes the block' do
258
+ inspect_source(cop,
259
+ ['variable = test do |ala|',
260
+ ' end'
261
+ ])
262
+ expect(cop.offences).to be_empty
263
+ end
264
+
265
+ it 'registers an offence for mismatched block end with the method that invokes the block' do
266
+ inspect_source(cop,
267
+ ['variable = test do |ala|',
268
+ 'end'
269
+ ])
270
+ expect(cop.offences.size).to eq(1)
271
+ end
272
+
273
+ it 'accepts end aligned with the method when return value is assigned to instance variable' do
274
+ inspect_source(cop,
275
+ ['@variable = test do |ala|',
276
+ ' end'
277
+ ])
278
+ expect(cop.offences).to be_empty
279
+ end
280
+
281
+ it 'registers an offence for mismatched block end when return value is assigned to instance variable' do
282
+ inspect_source(cop,
283
+ ['@variable = test do |ala|',
284
+ 'end'
285
+ ])
286
+ expect(cop.offences.size).to eq(1)
287
+ end
288
+
289
+ it 'accepts end aligned with the method when return value is assigned to class variable' do
290
+ inspect_source(cop,
291
+ ['@@variable = test do |ala|',
292
+ ' end'
293
+ ])
294
+ expect(cop.offences).to be_empty
295
+ end
296
+
297
+ it 'registers an offence for mismatched block end when return value is assigned to class variable' do
298
+ inspect_source(cop,
299
+ ['@@variable = test do |ala|',
300
+ 'end'
301
+ ])
302
+ expect(cop.offences.size).to eq(1)
303
+ end
304
+
305
+ it 'accepts end aligned with the method when return value is assigned to global variable' do
306
+ inspect_source(cop,
307
+ ['$variable = test do |ala|',
308
+ ' end'
309
+ ])
310
+ expect(cop.offences).to be_empty
311
+ end
312
+
313
+ it 'registers an offence for mismatched block end when return value is assigned to global variable' do
314
+ inspect_source(cop,
315
+ ['$variable = test do |ala|',
316
+ 'end'
317
+ ])
318
+ expect(cop.offences.size).to eq(1)
319
+ end
320
+
321
+ it 'accepts end aligned with the method when return value is assigned to constant' do
322
+ inspect_source(cop,
323
+ ['CONSTANT = test do |ala|',
324
+ ' end'
325
+ ])
326
+ expect(cop.offences).to be_empty
327
+ end
328
+
329
+ it 'registers an offence for mismatched block end when return value is assigned to constant' do
330
+ inspect_source(cop,
331
+ ['Module::CONSTANT = test do |ala|',
332
+ 'end'
333
+ ])
334
+ expect(cop.offences.size).to eq(1)
335
+ end
336
+
337
+ it 'accepts end aligned with the method when return value is assigned to attribute writer method' do
338
+ inspect_source(cop,
339
+ ['parser.child.consumer = lambda do |token|',
340
+ ' token << 1',
341
+ ' end'
342
+ ])
343
+ expect(cop.offences).to be_empty
344
+ end
345
+
346
+ it 'registers an offence for mismatched block end when return value is assigned to attribute writer method' do
347
+ inspect_source(cop,
348
+ ['parser.child.consumer = lambda do |token|',
349
+ ' token << 1',
350
+ 'end'
351
+ ])
352
+ expect(cop.offences.size).to eq(1)
353
+ end
354
+
355
+ it 'accepts end aligned with the method when return value is assigned using op-asgn (+=, -=)' do
356
+ inspect_source(cop,
357
+ ['rb += files.select do |file|',
358
+ ' file << something',
359
+ ' end'
360
+ ])
361
+ expect(cop.offences).to be_empty
362
+ end
363
+
364
+ it 'registers an offence for mismatched block end when return value is assigned using op-asgn (+=, -=)' do
365
+ inspect_source(cop,
366
+ ['rb += files.select do |file|',
367
+ ' file << something',
368
+ 'end'
369
+ ])
370
+ expect(cop.offences.size).to eq(1)
371
+ end
372
+
373
+ it 'accepts end aligned with the method when return value is assigned using and-asgn (&&=)' do
374
+ inspect_source(cop,
375
+ ['variable &&= test do |ala|',
376
+ ' end'
377
+ ])
378
+ expect(cop.offences).to be_empty
379
+ end
380
+
381
+ it 'registers an offence for mismatched block end when return value is assigned using and-asgn (&&=)' do
382
+ inspect_source(cop,
383
+ ['variable &&= test do |ala|',
384
+ 'end'
385
+ ])
386
+ expect(cop.offences.size).to eq(1)
387
+ end
388
+
389
+ it 'accepts end aligned with the method when return value is assigned using or-asgn (||=)' do
390
+ inspect_source(cop,
391
+ ['variable ||= test do |ala|',
392
+ ' end'
393
+ ])
394
+ expect(cop.offences).to be_empty
395
+ end
396
+
397
+ it 'registers an offence for mismatched block end when return value is assigned using or-asgn (||=)' do
398
+ inspect_source(cop,
399
+ ['variable ||= test do |ala|',
400
+ 'end'
401
+ ])
402
+ expect(cop.offences.size).to eq(1)
403
+ end
404
+
405
+ it 'accepts end aligned with the method when return value is assigned using mass assignment' do
406
+ inspect_source(cop,
407
+ ['var1, var2 = lambda do |test|',
408
+ ' [1, 2]',
409
+ ' end'
410
+ ])
411
+ expect(cop.offences).to be_empty
412
+ end
413
+
414
+ it 'registers an offence for mismatched block end when return value is assigned using mass assignment' do
415
+ inspect_source(cop,
416
+ ['var1, var2 = lambda do |test|',
417
+ ' [1, 2]',
418
+ 'end'
419
+ ])
420
+ expect(cop.offences.size).to eq(1)
421
+ end
422
+ end
423
+ end
424
+ end
425
+ end
426
+ end