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
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe UnlessElse do
9
+ let(:ue) { UnlessElse.new }
10
+
11
+ it 'registers an offence for an unless with else' do
12
+ inspect_source(ue, ['unless x',
13
+ ' a = 1',
14
+ 'else',
15
+ ' a = 0',
16
+ 'end'])
17
+ expect(ue.offences.map(&:message)).to eq(
18
+ ['Never use unless with else. Rewrite these with the ' +
19
+ 'positive case first.'])
20
+ end
21
+
22
+ it 'accepts an unless without else' do
23
+ inspect_source(ue, ['unless x',
24
+ ' a = 1',
25
+ 'end'])
26
+ expect(ue.offences.map(&:message)).to be_empty
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,53 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe VariableInterpolation do
9
+ let(:vi) { VariableInterpolation.new }
10
+
11
+ it 'registers an offence for interpolated global variables' do
12
+ inspect_source(vi,
13
+ ['puts "this is a #$test"'])
14
+ expect(vi.offences.size).to eq(1)
15
+ expect(vi.offences.map(&:message))
16
+ .to eq(['Replace interpolated var $test' +
17
+ ' with expression #{$test}.'])
18
+ end
19
+
20
+ it 'registers an offence for interpolated regexp back references' do
21
+ inspect_source(vi,
22
+ ['puts "this is a #$1"'])
23
+ expect(vi.offences.size).to eq(1)
24
+ expect(vi.offences.map(&:message))
25
+ .to eq(['Replace interpolated var $1 with expression #{$1}.'])
26
+ end
27
+
28
+ it 'registers an offence for interpolated instance variables' do
29
+ inspect_source(vi,
30
+ ['puts "this is a #@test"'])
31
+ expect(vi.offences.size).to eq(1)
32
+ expect(vi.offences.map(&:message))
33
+ .to eq(['Replace interpolated var @test' +
34
+ ' with expression #{@test}.'])
35
+ end
36
+
37
+ it 'registers an offence for interpolated class variables' do
38
+ inspect_source(vi,
39
+ ['puts "this is a #@@t"'])
40
+ expect(vi.offences.size).to eq(1)
41
+ expect(vi.offences.map(&:message))
42
+ .to eq(['Replace interpolated var @@t with expression #{@@t}.'])
43
+ end
44
+
45
+ it 'does not register an offence for variables in expressions' do
46
+ inspect_source(vi,
47
+ ['puts "this is a #{@test} #{@@t} #{$t} #{$1}"'])
48
+ expect(vi.offences).to be_empty
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe WhenThen do
9
+ let(:wt) { WhenThen.new }
10
+
11
+ it 'registers an offence for when x;' do
12
+ inspect_source(wt, ['case a',
13
+ 'when b; c',
14
+ 'end'])
15
+ expect(wt.offences.map(&:message)).to eq(
16
+ ['Never use "when x;". Use "when x then" instead.'])
17
+ end
18
+
19
+ it 'accepts when x then' do
20
+ inspect_source(wt, ['case a',
21
+ 'when b then c',
22
+ 'end'])
23
+ expect(wt.offences.map(&:message)).to be_empty
24
+ end
25
+
26
+ it 'accepts ; separating statements in the body of when' do
27
+ inspect_source(wt, ['case a',
28
+ 'when b then c; d',
29
+ 'end',
30
+ '',
31
+ 'case e',
32
+ 'when f',
33
+ ' g; h',
34
+ 'end'])
35
+ expect(wt.offences.map(&:message)).to be_empty
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,47 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe WhileUntilDo do
9
+ let(:cop) { WhileUntilDo.new }
10
+
11
+ it 'registers an offence for do in multiline while' do
12
+ inspect_source(cop, ['while cond do',
13
+ 'end'])
14
+ expect(cop.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'registers an offence for do in multiline until' do
18
+ inspect_source(cop, ['until cond do',
19
+ 'end'])
20
+ expect(cop.offences.size).to eq(1)
21
+ end
22
+
23
+ it 'accepts do in single-line while' do
24
+ inspect_source(cop, ['while cond do something end'])
25
+ expect(cop.offences).to be_empty
26
+ end
27
+
28
+ it 'accepts do in single-line until' do
29
+ inspect_source(cop, ['until cond do something end'])
30
+ expect(cop.offences).to be_empty
31
+ end
32
+
33
+ it 'it accepts multi-line while without do' do
34
+ inspect_source(cop, ['while cond',
35
+ 'end'])
36
+ expect(cop.offences).to be_empty
37
+ end
38
+
39
+ it 'it accepts multi-line until without do' do
40
+ inspect_source(cop, ['until cond',
41
+ 'end'])
42
+ expect(cop.offences).to be_empty
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe WordArray do
9
+ let(:wa) { WordArray.new }
10
+
11
+ it 'registers an offence for arrays of single quoted strings' do
12
+ inspect_source(wa,
13
+ ["['one', 'two', 'three']"])
14
+ expect(wa.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'registers an offence for arrays of double quoted strings' do
18
+ inspect_source(wa,
19
+ ['["one", "two", "three"]'])
20
+ expect(wa.offences.size).to eq(1)
21
+ end
22
+
23
+ it 'registers an offence for arrays with character constants' do
24
+ inspect_source(wa,
25
+ ['["one", ?\n]'])
26
+ expect(wa.offences.size).to eq(1)
27
+ end
28
+
29
+ it 'does not register an offence for array of non-words' do
30
+ inspect_source(wa,
31
+ ['["one space", "two", "three"]'])
32
+ expect(wa.offences).to be_empty
33
+ end
34
+
35
+ it 'does not register an offence for array containing non-string' do
36
+ inspect_source(wa,
37
+ ['["one", "two", 3]'])
38
+ expect(wa.offences).to be_empty
39
+ end
40
+
41
+ it 'does not register an offence for array starting with %w' do
42
+ inspect_source(wa,
43
+ ['%w(one two three)'])
44
+ expect(wa.offences).to be_empty
45
+ end
46
+
47
+ it 'does not register an offence for array with one element' do
48
+ inspect_source(wa,
49
+ ['["three"]'])
50
+ expect(wa.offences).to be_empty
51
+ end
52
+
53
+ it 'does not register an offence for array with empty strings' do
54
+ inspect_source(wa,
55
+ ['["", "two", "three"]'])
56
+ expect(wa.offences).to be_empty
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,374 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module VariableInspector
8
+ describe VariableEntry do
9
+ include AST::Sexp
10
+
11
+ describe '.new' do
12
+ context 'when non variable declaration node is passed' do
13
+ it 'raises error' do
14
+ node = s(:def)
15
+ expect { VariableEntry.new(node) }.to raise_error(ArgumentError)
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ describe Scope do
22
+ include AST::Sexp
23
+
24
+ describe '.new' do
25
+ context 'when non scope node is passed' do
26
+ it 'raises error' do
27
+ node = s(:lvasgn)
28
+ expect { Scope.new(node) }.to raise_error(ArgumentError)
29
+ end
30
+ end
31
+
32
+ context 'when begin node is passed' do
33
+ it 'accepts that as pseudo scope for top level scope' do
34
+ node = s(:begin)
35
+ expect { Scope.new(node) }.not_to raise_error(ArgumentError)
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ describe VariableTable do
42
+ include AST::Sexp
43
+
44
+ subject(:variable_table) { VariableTable.new }
45
+
46
+ describe '#push_scope' do
47
+ it 'returns pushed scope object' do
48
+ node = s(:def)
49
+ scope = variable_table.push_scope(node)
50
+ expect(scope).to equal(variable_table.current_scope)
51
+ expect(scope.node).to equal(node)
52
+ end
53
+ end
54
+
55
+ describe '#pop_scope' do
56
+ before do
57
+ node = s(:def)
58
+ variable_table.push_scope(node)
59
+ end
60
+
61
+ it 'returns popped scope object' do
62
+ last_scope = variable_table.current_scope
63
+ popped_scope = variable_table.pop_scope
64
+ expect(popped_scope).to equal(last_scope)
65
+ end
66
+ end
67
+
68
+ describe '#current_scope_level' do
69
+ before do
70
+ variable_table.push_scope(s(:def))
71
+ end
72
+
73
+ it 'increases by pushing scope' do
74
+ last_scope_level = variable_table.current_scope_level
75
+ variable_table.push_scope(s(:def))
76
+ expect(variable_table.current_scope_level)
77
+ .to eq(last_scope_level + 1)
78
+ end
79
+
80
+ it 'decreases by popping scope' do
81
+ last_scope_level = variable_table.current_scope_level
82
+ variable_table.pop_scope
83
+ expect(variable_table.current_scope_level)
84
+ .to eq(last_scope_level - 1)
85
+ end
86
+ end
87
+
88
+ describe '#add_variable_entry' do
89
+ before do
90
+ 2.times do
91
+ node = s(:def)
92
+ variable_table.push_scope(node)
93
+ end
94
+ end
95
+
96
+ it 'adds variable entry to current scope with its name as key' do
97
+ node = s(:lvasgn, :foo)
98
+ variable_table.add_variable_entry(node)
99
+ expect(variable_table.current_scope.variable_entries)
100
+ .to have_key(:foo)
101
+ expect(variable_table.scope_stack[-2].variable_entries)
102
+ .to be_empty
103
+ entry = variable_table.current_scope.variable_entries[:foo]
104
+ expect(entry.node).to equal(node)
105
+ end
106
+
107
+ it 'returns the added variable entry' do
108
+ node = s(:lvasgn, :foo)
109
+ entry = variable_table.add_variable_entry(node)
110
+ expect(entry.node).to equal(node)
111
+ end
112
+ end
113
+
114
+ describe '#find_variable_entry' do
115
+ before do
116
+ variable_table.push_scope(s(:class))
117
+ variable_table.add_variable_entry(s(:lvasgn, :baz))
118
+
119
+ variable_table.push_scope(s(:def))
120
+ variable_table.add_variable_entry(s(:lvasgn, :bar))
121
+ end
122
+
123
+ context 'when current scope is block' do
124
+ before do
125
+ variable_table.push_scope(s(:block))
126
+ end
127
+
128
+ context 'when a variable with the target name exists ' +
129
+ 'in current scope' do
130
+ before do
131
+ variable_table.add_variable_entry(s(:lvasgn, :foo))
132
+ end
133
+
134
+ context 'and does not exist in outer scope' do
135
+ it 'returns the current scope variable entry' do
136
+ found_entry = variable_table.find_variable_entry(:foo)
137
+ expect(found_entry.name).to eq(:foo)
138
+ end
139
+ end
140
+
141
+ context 'and also exists in outer scope' do
142
+ before do
143
+ variable_table.add_variable_entry(s(:lvasgn, :bar))
144
+ end
145
+
146
+ it 'returns the current scope variable entry' do
147
+ found_entry = variable_table.find_variable_entry(:bar)
148
+ expect(found_entry.name).to equal(:bar)
149
+ expect(variable_table.current_scope.variable_entries)
150
+ .to have_value(found_entry)
151
+ expect(variable_table.scope_stack[-2].variable_entries)
152
+ .not_to have_value(found_entry)
153
+ end
154
+ end
155
+ end
156
+
157
+ context 'when a variable with the target name does not exist ' +
158
+ 'in current scope' do
159
+ context 'but exists in the direct outer scope' do
160
+ it 'returns the direct outer scope variable entry' do
161
+ found_entry = variable_table.find_variable_entry(:bar)
162
+ expect(found_entry.name).to equal(:bar)
163
+ end
164
+ end
165
+
166
+ context 'but exists in a indirect outer scope' do
167
+ context 'when the direct outer scope is block' do
168
+ before do
169
+ variable_table.pop_scope
170
+ variable_table.pop_scope
171
+
172
+ variable_table.push_scope(s(:block))
173
+ variable_table.push_scope(s(:block))
174
+ end
175
+
176
+ it 'returns the indirect outer scope variable entry' do
177
+ found_entry = variable_table.find_variable_entry(:baz)
178
+ expect(found_entry.name).to equal(:baz)
179
+ end
180
+ end
181
+
182
+ context 'when the direct outer scope is not block' do
183
+ it 'returns nil' do
184
+ found_entry = variable_table.find_variable_entry(:baz)
185
+ expect(found_entry).to be_nil
186
+ end
187
+ end
188
+ end
189
+
190
+ context 'and does not exist in all outer scopes' do
191
+ it 'returns nil' do
192
+ found_entry = variable_table.find_variable_entry(:non)
193
+ expect(found_entry).to be_nil
194
+ end
195
+ end
196
+ end
197
+ end
198
+
199
+ context 'when current scope is not block' do
200
+ before do
201
+ variable_table.push_scope(s(:def))
202
+ end
203
+
204
+ context 'when a variable with the target name exists ' +
205
+ 'in current scope' do
206
+ before do
207
+ variable_table.add_variable_entry(s(:lvasgn, :foo))
208
+ end
209
+
210
+ context 'and does not exist in outer scope' do
211
+ it 'returns the current scope variable entry' do
212
+ found_entry = variable_table.find_variable_entry(:foo)
213
+ expect(found_entry.name).to eq(:foo)
214
+ end
215
+ end
216
+
217
+ context 'and also exists in outer scope' do
218
+ it 'returns the current scope variable entry' do
219
+ found_entry = variable_table.find_variable_entry(:foo)
220
+ expect(found_entry.name).to equal(:foo)
221
+ expect(variable_table.current_scope.variable_entries)
222
+ .to have_value(found_entry)
223
+ expect(variable_table.scope_stack[-2].variable_entries)
224
+ .not_to have_value(found_entry)
225
+ end
226
+ end
227
+ end
228
+
229
+ context 'when a variable with the target name does not exist ' +
230
+ 'in current scope' do
231
+ context 'but exists in the direct outer scope' do
232
+ it 'returns nil' do
233
+ found_entry = variable_table.find_variable_entry(:bar)
234
+ expect(found_entry).to be_nil
235
+ end
236
+ end
237
+
238
+ context 'and does not exist in all outer scopes' do
239
+ it 'returns nil' do
240
+ found_entry = variable_table.find_variable_entry(:non)
241
+ expect(found_entry).to be_nil
242
+ end
243
+ end
244
+ end
245
+ end
246
+ end
247
+ end
248
+
249
+ describe NodeScanner do
250
+ let(:source) do
251
+ <<-END
252
+ class SomeClass
253
+ foo = 1.to_s
254
+ bar = 2.to_s
255
+ def some_method
256
+ baz = 3.to_s
257
+ end
258
+ end
259
+ END
260
+ end
261
+
262
+ let(:ast) do
263
+ ast, *_ = Rubocop::CLI.parse('(string)') do |sb|
264
+ sb.source = source
265
+ end
266
+ ast
267
+ end
268
+
269
+ # (class
270
+ # (const nil :SomeClass) nil
271
+ # (begin
272
+ # (lvasgn :foo
273
+ # (send
274
+ # (int 1) :to_s))
275
+ # (lvasgn :bar
276
+ # (send
277
+ # (int 2) :to_s))
278
+ # (def :some_method
279
+ # (args)
280
+ # (lvasgn :baz
281
+ # (send
282
+ # (int 3) :to_s)))))
283
+
284
+ describe '.scan_nodes_in_scope' do
285
+ it 'does not scan children of inner scope node' do
286
+ scanned_node_count = 0
287
+
288
+ NodeScanner.scan_nodes_in_scope(ast) do |node|
289
+ scanned_node_count += 1
290
+ fail if node.type == :lvasgn && node.children.first == :baz
291
+ end
292
+
293
+ expect(scanned_node_count).to eq(9)
294
+ end
295
+
296
+ it 'scans nodes with depth first order' do
297
+ index = 0
298
+
299
+ NodeScanner.scan_nodes_in_scope(ast) do |node|
300
+ case index
301
+ when 0
302
+ expect(node.type).to eq(:const)
303
+ when 1
304
+ expect(node.type).to eq(:begin)
305
+ when 2
306
+ expect(node.type).to eq(:lvasgn)
307
+ when 3
308
+ expect(node.type).to eq(:send)
309
+ when 4
310
+ expect(node.type).to eq(:int)
311
+ when 5
312
+ expect(node.type).to eq(:lvasgn)
313
+ end
314
+
315
+ index += 1
316
+ end
317
+
318
+ expect(index).not_to eq(0)
319
+ end
320
+
321
+ it 'passes node index in the scope as second block argument' do
322
+ last_index = -1
323
+
324
+ NodeScanner.scan_nodes_in_scope(ast) do |node, index|
325
+ expect(index).to eq(last_index + 1)
326
+ last_index = index
327
+ end
328
+
329
+ expect(last_index).not_to eq(-1)
330
+ end
331
+ end
332
+ end
333
+
334
+ describe VariableInspector do
335
+ include AST::Sexp
336
+
337
+ class ExampleInspector
338
+ include VariableInspector
339
+ end
340
+
341
+ subject(:inspector) { ExampleInspector.new }
342
+
343
+ describe '#process_node' do
344
+ before do
345
+ inspector.variable_table.push_scope(s(:def))
346
+ end
347
+
348
+ context 'when processing lvar node' do
349
+ let(:node) { s(:lvar, :foo) }
350
+
351
+ context 'when the variable is already declared' do
352
+ before do
353
+ inspector.variable_table.add_variable_entry(s(:lvasgn, :foo))
354
+ end
355
+
356
+ it 'marks the variable as used' do
357
+ entry = inspector.variable_table.find_variable_entry(:foo)
358
+ expect(entry).not_to be_used
359
+ inspector.process_node(node)
360
+ expect(entry).to be_used
361
+ end
362
+ end
363
+
364
+ context 'when the variable is not yet declared' do
365
+ it 'raises error' do
366
+ expect { inspector.process_node(node) }.to raise_error
367
+ end
368
+ end
369
+ end
370
+ end
371
+ end
372
+ end
373
+ end
374
+ end