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,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe SymbolArray do
9
+ let(:sa) { SymbolArray.new }
10
+
11
+ it 'registers an offence for arrays of symbols', { ruby: 2.0 } do
12
+ inspect_source(sa,
13
+ ['[:one, :two, :three]'])
14
+ expect(sa.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'does not reg an offence for array with non-syms', { ruby: 2.0 } do
18
+ inspect_source(sa,
19
+ ['[:one, :two, "three"]'])
20
+ expect(sa.offences).to be_empty
21
+ end
22
+
23
+ it 'does not reg an offence for array starting with %i',
24
+ { ruby: 2.0 } do
25
+ inspect_source(sa,
26
+ ['%i(one two three)'])
27
+ expect(sa.offences).to be_empty
28
+ end
29
+
30
+ it 'does not reg an offence for array with one element',
31
+ { ruby: 2.0 } do
32
+ inspect_source(sa,
33
+ ['[:three]'])
34
+ expect(sa.offences).to be_empty
35
+ end
36
+
37
+ it 'does nothing on Ruby 1.9', { ruby: 1.9 } do
38
+ inspect_source(sa,
39
+ ['[:one, :two, :three]'])
40
+ expect(sa.offences).to be_empty
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,122 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe SymbolName do
9
+ let(:symbol_name) { SymbolName.new }
10
+
11
+ before do
12
+ SymbolName.config =
13
+ Config.default_configuration.for_cop('SymbolName')
14
+ end
15
+
16
+ context 'when AllowCamelCase is true' do
17
+ before do
18
+ SymbolName.config = {
19
+ 'AllowCamelCase' => true
20
+ }
21
+ end
22
+
23
+ it 'does not register an offence for camel case in names' do
24
+ inspect_source(symbol_name,
25
+ ['test = :BadIdea'])
26
+ expect(symbol_name.offences).to be_empty
27
+ end
28
+ end
29
+
30
+ context 'when AllowCamelCase is false' do
31
+ before do
32
+ SymbolName.config = {
33
+ 'AllowCamelCase' => false
34
+ }
35
+ end
36
+
37
+ it 'registers an offence for camel case in names' do
38
+ inspect_source(symbol_name,
39
+ ['test = :BadIdea'])
40
+ expect(symbol_name.offences.map(&:message)).to eq(
41
+ ['Use snake_case for symbols.'])
42
+ end
43
+ end
44
+
45
+ it 'registers an offence for symbol used as hash label' do
46
+ inspect_source(symbol_name,
47
+ ['{ KEY_ONE: 1, KEY_TWO: 2 }'])
48
+ expect(symbol_name.offences.map(&:message)).to eq(
49
+ ['Use snake_case for symbols.'] * 2)
50
+ end
51
+
52
+ it 'accepts snake case in names' do
53
+ inspect_source(symbol_name,
54
+ ['test = :good_idea'])
55
+ expect(symbol_name.offences).to be_empty
56
+ end
57
+
58
+ it 'accepts snake case in hash label names' do
59
+ inspect_source(symbol_name,
60
+ ['{ one: 1, one_more_3: 2 }'])
61
+ expect(symbol_name.offences).to be_empty
62
+ end
63
+
64
+ it 'accepts snake case with a prefix @ in names' do
65
+ inspect_source(symbol_name,
66
+ ['test = :@good_idea'])
67
+ expect(symbol_name.offences).to be_empty
68
+ end
69
+
70
+ it 'accepts snake case with ? suffix' do
71
+ inspect_source(symbol_name,
72
+ ['test = :good_idea?'])
73
+ expect(symbol_name.offences).to be_empty
74
+ end
75
+
76
+ it 'accepts snake case with ! suffix' do
77
+ inspect_source(symbol_name,
78
+ ['test = :good_idea!'])
79
+ expect(symbol_name.offences).to be_empty
80
+ end
81
+
82
+ it 'accepts snake case with = suffix' do
83
+ inspect_source(symbol_name,
84
+ ['test = :good_idea='])
85
+ expect(symbol_name.offences).to be_empty
86
+ end
87
+
88
+ it 'accepts special cases - !, [] and **' do
89
+ inspect_source(symbol_name,
90
+ ['test = :**',
91
+ 'test = :!',
92
+ 'test = :[]',
93
+ 'test = :[]='])
94
+ expect(symbol_name.offences).to be_empty
95
+ end
96
+
97
+ it 'accepts special cases - ==, <=>, >, <, >=, <=' do
98
+ inspect_source(symbol_name,
99
+ ['test = :==',
100
+ 'test = :<=>',
101
+ 'test = :>',
102
+ 'test = :<',
103
+ 'test = :>=',
104
+ 'test = :<='])
105
+ expect(symbol_name.offences).to be_empty
106
+ end
107
+
108
+ it 'can handle an alias of and operator without crashing' do
109
+ inspect_source(symbol_name,
110
+ ['alias + add'])
111
+ expect(symbol_name.offences).to be_empty
112
+ end
113
+
114
+ it 'registers an offence for SCREAMING_symbol_name' do
115
+ inspect_source(symbol_name,
116
+ ['test = :BAD_IDEA'])
117
+ expect(symbol_name.offences.size).to eq(1)
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe Tab do
9
+ let(:tab) { Tab.new }
10
+
11
+ it 'registers an offence for a line indented with tab' do
12
+ inspect_source(tab, ["\tx = 0"])
13
+ expect(tab.offences.size).to eq(1)
14
+ end
15
+
16
+ it 'accepts a line with tab in a string' do
17
+ inspect_source(tab, ["(x = \"\t\")"])
18
+ expect(tab.offences).to be_empty
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe MultilineTernaryOperator do
9
+ let(:op) { MultilineTernaryOperator.new }
10
+
11
+ it 'registers offence for a multiline ternary operator expression' do
12
+ inspect_source(op, ['a = cond ?',
13
+ ' b : c'])
14
+ expect(op.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'accepts a single line ternary operator expression' do
18
+ inspect_source(op, ['a = cond ? b : c'])
19
+ expect(op.offences).to be_empty
20
+ end
21
+ end
22
+
23
+ describe NestedTernaryOperator do
24
+ let(:op) { NestedTernaryOperator.new }
25
+
26
+ it 'registers an offence for a nested ternary operator expression' do
27
+ inspect_source(op, ['a ? (b ? b1 : b2) : a2'])
28
+ expect(op.offences.size).to eq(1)
29
+ end
30
+
31
+ it 'accepts a non-nested ternary operator within an if' do
32
+ inspect_source(op, ['a = if x',
33
+ ' cond ? b : c',
34
+ 'else',
35
+ ' d',
36
+ 'end'])
37
+ expect(op.offences).to be_empty
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe TrailingWhitespace do
9
+ let(:tws) { TrailingWhitespace.new }
10
+
11
+ it 'registers an offence for a line ending with space' do
12
+ source = ['x = 0 ']
13
+ inspect_source(tws, source)
14
+ expect(tws.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'registers an offence for a line ending with tab' do
18
+ inspect_source(tws, ["x = 0\t"])
19
+ expect(tws.offences.size).to eq(1)
20
+ end
21
+
22
+ it 'accepts a line without trailing whitespace' do
23
+ inspect_source(tws, ["x = 0\n"])
24
+ expect(tws.offences).to be_empty
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,338 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe TrivialAccessors do
9
+ let(:trivial_accessors_finder) { TrivialAccessors.new }
10
+
11
+ before :each do
12
+ trivial_accessors_finder.offences.clear
13
+ end
14
+
15
+ it 'finds trivial reader' do
16
+ inspect_source(trivial_accessors_finder,
17
+ ['def foo',
18
+ ' @foo',
19
+ 'end',
20
+ '',
21
+ 'def Foo',
22
+ ' @Foo',
23
+ 'end'])
24
+ expect(trivial_accessors_finder.offences.size).to eq(2)
25
+ expect(trivial_accessors_finder.offences
26
+ .map(&:line).sort).to eq([1, 5])
27
+ end
28
+
29
+ it 'finds trivial reader in a class' do
30
+ inspect_source(trivial_accessors_finder,
31
+ ['class TrivialFoo',
32
+ ' def foo',
33
+ ' @foo',
34
+ ' end',
35
+ ' def bar',
36
+ ' !foo',
37
+ ' end',
38
+ 'end'])
39
+ expect(trivial_accessors_finder.offences.size).to eq(1)
40
+ expect(trivial_accessors_finder.offences
41
+ .map(&:line).sort).to eq([2])
42
+ end
43
+
44
+ it 'finds trivial reader in a nested class' do
45
+ inspect_source(trivial_accessors_finder,
46
+ ['class TrivialFoo',
47
+ ' class Nested',
48
+ ' def foo',
49
+ ' @foo',
50
+ ' end',
51
+ ' end',
52
+ 'end'])
53
+ expect(trivial_accessors_finder.offences.size).to eq(1)
54
+ expect(trivial_accessors_finder.offences
55
+ .map(&:line).sort).to eq([3])
56
+ end
57
+
58
+ it 'finds trivial readers in a little less trivial class' do
59
+ inspect_source(trivial_accessors_finder,
60
+ ['class TrivialFoo',
61
+ ' def foo',
62
+ ' @foo',
63
+ ' end',
64
+ ' def foo_and_bar',
65
+ ' @foo_bar = @foo + @bar',
66
+ ' end',
67
+ ' def foo_bar',
68
+ ' @foo_bar',
69
+ ' end',
70
+ ' def foo?',
71
+ ' foo.present?',
72
+ ' end',
73
+ ' def bar?',
74
+ ' !bar',
75
+ ' end',
76
+ ' def foobar',
77
+ ' foo? ? foo.value : "bar"',
78
+ ' end',
79
+ ' def bar',
80
+ ' foo.bar',
81
+ ' end',
82
+ ' def foo_required?',
83
+ ' super && !bar_required?',
84
+ ' end',
85
+ ' def self.from_omniauth(auth)',
86
+ ' foobars.each do |f|',
87
+ ' # do stuff',
88
+ ' end',
89
+ ' end',
90
+ ' def regex',
91
+ ' %r{\A#{visit node}\Z}',
92
+ ' end',
93
+ ' def array',
94
+ ' [foo, bar].join',
95
+ ' end',
96
+ ' def string',
97
+ ' "string"',
98
+ ' end',
99
+ ' def class',
100
+ ' Foo.class',
101
+ ' end',
102
+ ' def with_return',
103
+ ' return foo',
104
+ ' end',
105
+ ' def captures',
106
+ ' (length - 1).times.map { |i| self[i + 1] }',
107
+ ' end',
108
+ ' def foo val',
109
+ ' super',
110
+ ' @val',
111
+ ' end',
112
+ 'end'])
113
+ expect(trivial_accessors_finder.offences.size).to eq(2)
114
+ expect(trivial_accessors_finder.offences
115
+ .map(&:line).sort).to eq([2, 8])
116
+ end
117
+
118
+ it 'finds trivial reader with braces' do
119
+ inspect_source(trivial_accessors_finder,
120
+ ['class Test',
121
+ ' # trivial reader with braces',
122
+ ' def name()',
123
+ ' @name',
124
+ ' end',
125
+ 'end'])
126
+ expect(trivial_accessors_finder.offences.size).to eq(1)
127
+ expect(trivial_accessors_finder.offences
128
+ .map(&:line).sort).to eq([3])
129
+ end
130
+
131
+ it 'finds trivial writer without braces' do
132
+ inspect_source(trivial_accessors_finder,
133
+ ['class Test',
134
+ ' # trivial writer without braces',
135
+ ' def name= name',
136
+ ' @name = name',
137
+ ' end',
138
+ 'end'])
139
+ expect(trivial_accessors_finder.offences.size).to eq(1)
140
+ expect(trivial_accessors_finder.offences
141
+ .map(&:line).sort).to eq([3])
142
+ end
143
+
144
+ it 'does not find trivial writer with function calls' do
145
+ inspect_source(trivial_accessors_finder,
146
+ ['class TrivialTest',
147
+ ' def test=(val)',
148
+ ' @test = val',
149
+ ' some_function_call',
150
+ ' or_more_of_them',
151
+ ' end',
152
+ 'end'])
153
+ expect(trivial_accessors_finder.offences).to be_empty
154
+ end
155
+
156
+ it 'finds trivials with less peculiar methods' do
157
+ inspect_source(trivial_accessors_finder,
158
+ ['class NilStats',
159
+ 'def most_traded_pair',
160
+ 'end',
161
+ 'def win_ratio',
162
+ 'end',
163
+ 'def win_ratio_percentage()',
164
+ 'end',
165
+ 'def pips_won',
166
+ ' 0.0',
167
+ 'end',
168
+ 'def gain_at(date)',
169
+ ' 1',
170
+ 'end',
171
+ 'def gain_percentage',
172
+ ' 0',
173
+ 'end',
174
+ 'def gain_breakdown(options = {})',
175
+ ' []',
176
+ 'end',
177
+ 'def copy_to_all_ratio',
178
+ ' nil',
179
+ 'end',
180
+ 'def trade_population',
181
+ ' {}',
182
+ 'end',
183
+ 'def average_leverage',
184
+ ' 1',
185
+ 'end',
186
+ 'def with_yield',
187
+ ' yield',
188
+ 'rescue Error => e',
189
+ ' #do stuff',
190
+ 'end',
191
+ 'end'])
192
+ expect(trivial_accessors_finder.offences).to be_empty
193
+ end
194
+
195
+ it 'finds oneliner trivials' do
196
+ inspect_source(trivial_accessors_finder,
197
+ ['class Oneliner',
198
+ ' def foo; @foo; end',
199
+ ' def foo= foo; @foo = foo; end',
200
+ 'end'])
201
+ expect(trivial_accessors_finder.offences.size).to eq(2)
202
+ expect(trivial_accessors_finder.offences
203
+ .map(&:line).sort).to eq([2, 3])
204
+ end
205
+
206
+ it 'does not find a trivial reader' do
207
+ inspect_source(trivial_accessors_finder,
208
+ ['def bar',
209
+ ' @bar + foo',
210
+ 'end'])
211
+ expect(trivial_accessors_finder.offences).to be_empty
212
+ end
213
+
214
+ it 'finds trivial writer' do
215
+ inspect_source(trivial_accessors_finder,
216
+ ['def foo=(val)',
217
+ ' @foo = val',
218
+ 'end'])
219
+ expect(trivial_accessors_finder.offences.size).to eq(1)
220
+ expect(trivial_accessors_finder.offences
221
+ .map(&:line).sort).to eq([1])
222
+ end
223
+
224
+ it 'finds trivial writer in a class' do
225
+ inspect_source(trivial_accessors_finder,
226
+ ['class TrivialFoo',
227
+ ' def foo=(val)',
228
+ ' @foo = val',
229
+ ' end',
230
+ ' def void(no_value)',
231
+ ' end',
232
+ ' def inspect(sexp)',
233
+ ' each(:def, sexp) do |item|',
234
+ ' #do stuff',
235
+ ' end',
236
+ ' end',
237
+ ' def if_method(foo)',
238
+ ' if true',
239
+ ' unless false',
240
+ ' #do stuff',
241
+ ' end',
242
+ ' end',
243
+ ' end',
244
+ 'end'])
245
+ expect(trivial_accessors_finder.offences.size).to eq(1)
246
+ expect(trivial_accessors_finder.offences
247
+ .map(&:line).sort).to eq([2])
248
+ end
249
+
250
+ it 'finds trivial accessors in a little less trivial class' do
251
+ inspect_source(trivial_accessors_finder,
252
+ ['class TrivialFoo',
253
+ ' def foo',
254
+ ' @foo',
255
+ ' end',
256
+ ' def foo_and_bar',
257
+ ' @foo_bar = @foo + @bar',
258
+ ' end',
259
+ ' def foo_bar',
260
+ ' @foo_bar',
261
+ ' end',
262
+ ' def bar=(bar_value)',
263
+ ' @bar = bar_value',
264
+ ' end',
265
+ 'end'])
266
+ expect(trivial_accessors_finder.offences.size).to eq(3)
267
+ expect(trivial_accessors_finder.offences
268
+ .map(&:line).sort).to eq([2, 8, 11])
269
+ end
270
+
271
+ it 'does not find a trivial writer' do
272
+ inspect_source(trivial_accessors_finder,
273
+ ['def bar=(value)',
274
+ ' @bar = value + 42',
275
+ 'end'])
276
+ expect(trivial_accessors_finder.offences).to be_empty
277
+ end
278
+
279
+ it 'finds trivial writers in a little less trivial class' do
280
+ inspect_source(trivial_accessors_finder,
281
+ ['class TrivialFoo',
282
+ ' def foo_bar=(foo, bar)',
283
+ ' @foo_bar = foo + bar',
284
+ ' end',
285
+ ' def universal=(answer=42)',
286
+ ' @universal = answer',
287
+ ' end',
288
+ ' def bar=(bar_value)',
289
+ ' @bar = bar_value',
290
+ ' end',
291
+ 'end'])
292
+ expect(trivial_accessors_finder.offences.size).to eq(2)
293
+ expect(trivial_accessors_finder.offences
294
+ .map(&:line).sort).to eq([5, 8])
295
+ end
296
+
297
+ it 'does not find trivial accessors with method calls' do
298
+ inspect_source(trivial_accessors_finder,
299
+ ['class TrivialFoo',
300
+ ' def foo_bar(foo)',
301
+ ' foo_bar = foo + 42',
302
+ ' end',
303
+ ' def foo(value)',
304
+ ' foo = []',
305
+ ' # do stuff',
306
+ ' foo',
307
+ ' end',
308
+ ' def bar',
309
+ ' foo_method',
310
+ ' end',
311
+ 'end'])
312
+ expect(trivial_accessors_finder.offences).to be_empty
313
+ end
314
+
315
+ it 'does not find trivial writer with exceptions' do
316
+ inspect_source(trivial_accessors_finder,
317
+ [' def expiration_formatted=(value)',
318
+ ' begin',
319
+ ' @expiration = foo_stuff',
320
+ ' rescue ArgumentError',
321
+ ' @expiration = nil',
322
+ ' end',
323
+ ' self[:expiration] = @expiration',
324
+ ' end'])
325
+ expect(trivial_accessors_finder.offences).to be_empty
326
+ end
327
+
328
+ it 'accepts an initialize method looking like a writer' do
329
+ inspect_source(trivial_accessors_finder,
330
+ [' def initialize(value)',
331
+ ' @top = value',
332
+ ' end'])
333
+ expect(trivial_accessors_finder.offences).to be_empty
334
+ end
335
+ end
336
+ end
337
+ end
338
+ end