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