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,63 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Lint
8
+ describe Void do
9
+ let(:void_op) { Void.new }
10
+
11
+ Void::OPS.each do |op|
12
+ it "registers an offence for void op #{op} if not on last line" do
13
+ inspect_source(void_op,
14
+ ["a #{op} b",
15
+ "a #{op} b",
16
+ "a #{op} b"
17
+ ])
18
+ expect(void_op.offences.size).to eq(2)
19
+ end
20
+ end
21
+
22
+ Void::OPS.each do |op|
23
+ it "accepts void op #{op} if on last line" do
24
+ inspect_source(void_op,
25
+ ['something',
26
+ "a #{op} b"
27
+ ])
28
+ expect(void_op.offences).to be_empty
29
+ end
30
+ end
31
+
32
+ Void::OPS.each do |op|
33
+ it "accepts void op #{op} by itself without a begin block" do
34
+ inspect_source(void_op, ["a #{op} b"])
35
+ expect(void_op.offences).to be_empty
36
+ end
37
+ end
38
+
39
+ %w(var @var @@var VAR).each do |var|
40
+ it "registers an offence for void var #{var} if not on last line" do
41
+ inspect_source(void_op,
42
+ ["#{var} = 5",
43
+ "#{var}",
44
+ 'top'
45
+ ])
46
+ expect(void_op.offences.size).to eq(1)
47
+ end
48
+ end
49
+
50
+ %w(1 2.0 /test/ [1] {}).each do |lit|
51
+ it "registers an offence for void lit #{lit} if not on last line" do
52
+ inspect_source(void_op,
53
+ ["#{lit}",
54
+ 'top'
55
+ ])
56
+ expect(void_op.offences.size).to eq(1)
57
+ end
58
+ end
59
+
60
+ end
61
+ end
62
+ end
63
+ end
@@ -5,32 +5,129 @@ require 'spec_helper'
5
5
  module Rubocop
6
6
  module Cop
7
7
  describe Offence do
8
- it 'has a few required attributes' do
9
- offence = Offence.new(:convention, 1, 'message')
8
+ let(:location) do
9
+ source_buffer = Parser::Source::Buffer.new('test', 1)
10
+ source_buffer.source = "a\n"
11
+ Parser::Source::Range.new(source_buffer, 0, 1)
12
+ end
13
+ subject(:offence) do
14
+ Offence.new(:convention, location, 'message', 'CopName')
15
+ end
10
16
 
17
+ it 'has a few required attributes' do
11
18
  expect(offence.severity).to eq(:convention)
12
- expect(offence.line_number).to eq(1)
19
+ expect(offence.line).to eq(1)
13
20
  expect(offence.message).to eq('message')
21
+ expect(offence.cop_name).to eq('CopName')
14
22
  end
15
23
 
16
24
  it 'overrides #to_s' do
17
- offence = Offence.new(:convention, 1, 'message')
18
-
19
- expect(offence.to_s).to eq('C: 1: message')
25
+ expect(offence.to_s).to eq('C: 1: 1: message')
20
26
  end
21
27
 
22
28
  it 'does not blow up if a message contains %' do
23
- offence = Offence.new(:convention, 1, 'message % test')
29
+ offence = Offence.new(:convention, location, 'message % test',
30
+ 'CopName')
24
31
 
25
- expect(offence.to_s).to eq('C: 1: message % test')
32
+ expect(offence.to_s).to eq('C: 1: 1: message % test')
26
33
  end
27
34
 
28
35
  it 'redefines == to compare offences based on their contents' do
29
- o1 = Offence.new(:test, 1, 'message')
30
- o2 = Offence.new(:test, 1, 'message')
36
+ o1 = Offence.new(:convention, location, 'message', 'CopName')
37
+ o2 = Offence.new(:convention, location, 'message', 'CopName')
31
38
 
32
39
  expect(o1 == o2).to be_true
33
40
  end
41
+
42
+ it 'is frozen' do
43
+ expect(offence).to be_frozen
44
+ end
45
+
46
+ [:severity, :location, :line, :column, :message, :cop_name].each do |a|
47
+ describe "##{a}" do
48
+ it 'is frozen' do
49
+ expect(offence.send(a)).to be_frozen
50
+ end
51
+ end
52
+ end
53
+
54
+ context 'when unknown severity is passed' do
55
+ it 'raises error' do
56
+ expect do
57
+ Offence.new(:foobar, location, 'message', 'CopName')
58
+ end.to raise_error(ArgumentError)
59
+ end
60
+ end
61
+
62
+ describe '#severity_level' do
63
+ subject(:severity_level) do
64
+ Offence.new(severity, location, 'message', 'CopName').severity_level
65
+ end
66
+
67
+ context 'when severity is :refactor' do
68
+ let(:severity) { :refactor }
69
+ it 'is 1' do
70
+ expect(severity_level).to eq(1)
71
+ end
72
+ end
73
+
74
+ context 'when severity is :fatal' do
75
+ let(:severity) { :fatal }
76
+ it 'is 5' do
77
+ expect(severity_level).to eq(5)
78
+ end
79
+ end
80
+ end
81
+
82
+ describe '#<=>' do
83
+ def offence(hash = {})
84
+ attrs = {
85
+ sev: :convention,
86
+ line: 5,
87
+ col: 5,
88
+ mes: 'message',
89
+ cop: 'CopName'
90
+ }.merge(hash)
91
+
92
+ Offence.new(
93
+ attrs[:sev],
94
+ location(attrs[:line], attrs[:col],
95
+ %w(aaaaaa bbbbbb cccccc dddddd eeeeee ffffff)),
96
+ attrs[:mes],
97
+ attrs[:cop]
98
+ )
99
+ end
100
+
101
+ def location(line, column, source)
102
+ source_buffer = Parser::Source::Buffer.new('test', 1)
103
+ source_buffer.source = source.join("\n")
104
+ begin_pos = source[0...(line - 1)].reduce(0) do |a, e|
105
+ a + e.length + "\n".length
106
+ end + column
107
+ Parser::Source::Range.new(source_buffer, begin_pos, begin_pos + 1)
108
+ end
109
+
110
+ [
111
+ [{ }, { }, 0],
112
+
113
+ [{ line: 6 }, { line: 5 }, 1],
114
+
115
+ [{ line: 5, col: 6 }, { line: 5, col: 5 }, 1],
116
+ [{ line: 6, col: 4 }, { line: 5, col: 5 }, 1],
117
+
118
+ [{ cop: 'B' }, { cop: 'A' }, 1],
119
+ [{ line: 6, cop: 'A' }, { line: 5, cop: 'B' }, 1],
120
+ [{ col: 6, cop: 'A' }, { col: 5, cop: 'B' }, 1],
121
+ ].each do |one, other, expectation|
122
+ context "when receiver has #{one} and other has #{other}" do
123
+ it "returns #{expectation}" do
124
+ an_offence = offence(one)
125
+ other_offence = offence(other)
126
+ expect(an_offence <=> other_offence).to eq(expectation)
127
+ end
128
+ end
129
+ end
130
+ end
34
131
  end
35
132
  end
36
133
  end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Rails
8
+ describe Validation do
9
+ let(:val) { Validation.new }
10
+
11
+ Validation::BLACKLIST.each do |validation|
12
+ it "registers an offence for #{validation}" do
13
+ inspect_source(val,
14
+ ["#{validation} :name"])
15
+ expect(val.offences.size).to eq(1)
16
+ end
17
+ end
18
+
19
+ it 'accepts sexy validations' do
20
+ inspect_source(val,
21
+ ['validates :name'])
22
+ expect(val.offences).to be_empty
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,142 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe AccessControl do
9
+ let(:a) { AccessControl.new }
10
+
11
+ it 'registers an offence for misaligned private' do
12
+ inspect_source(a,
13
+ ['class Test',
14
+ '',
15
+ 'private',
16
+ '',
17
+ ' def test; end',
18
+ 'end'])
19
+ expect(a.offences.size).to eq(1)
20
+ expect(a.offences.map(&:message))
21
+ .to eq([format(AccessControl::INDENT_MSG, 'private')])
22
+ end
23
+
24
+ it 'registers an offence for misaligned private in module' do
25
+ inspect_source(a,
26
+ ['module Test',
27
+ '',
28
+ 'private',
29
+ '',
30
+ ' def test; end',
31
+ 'end'])
32
+ expect(a.offences.size).to eq(1)
33
+ expect(a.offences.map(&:message))
34
+ .to eq([format(AccessControl::INDENT_MSG, 'private')])
35
+ end
36
+
37
+ it 'registers an offence for misaligned private in singleton class' do
38
+ inspect_source(a,
39
+ ['class << self',
40
+ '',
41
+ 'private',
42
+ '',
43
+ ' def test; end',
44
+ 'end'])
45
+ expect(a.offences.size).to eq(1)
46
+ expect(a.offences.map(&:message))
47
+ .to eq([format(AccessControl::INDENT_MSG, 'private')])
48
+ end
49
+
50
+ it 'registers an offence for misaligned protected' do
51
+ inspect_source(a,
52
+ ['class Test',
53
+ '',
54
+ 'protected',
55
+ '',
56
+ ' def test; end',
57
+ 'end'])
58
+ expect(a.offences.size).to eq(1)
59
+ expect(a.offences.map(&:message))
60
+ .to eq([format(AccessControl::INDENT_MSG, 'protected')])
61
+ end
62
+
63
+ it 'accepts properly indented private' do
64
+ inspect_source(a,
65
+ ['class Test',
66
+ '',
67
+ ' private',
68
+ '',
69
+ ' def test; end',
70
+ 'end'])
71
+ expect(a.offences).to be_empty
72
+ end
73
+
74
+ it 'accepts properly indented protected' do
75
+ inspect_source(a,
76
+ ['class Test',
77
+ '',
78
+ ' protected',
79
+ '',
80
+ ' def test; end',
81
+ 'end'])
82
+ expect(a.offences).to be_empty
83
+ end
84
+
85
+ it 'handles properly nested classes' do
86
+ inspect_source(a,
87
+ ['class Test',
88
+ '',
89
+ ' class Nested',
90
+ '',
91
+ ' private',
92
+ '',
93
+ ' def a; end',
94
+ ' end',
95
+ '',
96
+ ' protected',
97
+ '',
98
+ ' def test; end',
99
+ 'end'])
100
+ expect(a.offences.size).to eq(1)
101
+ expect(a.offences.map(&:message))
102
+ .to eq([format(AccessControl::INDENT_MSG, 'private')])
103
+ end
104
+
105
+ it 'requires blank line before private/protected' do
106
+ inspect_source(a,
107
+ ['class Test',
108
+ ' protected',
109
+ '',
110
+ ' def test; end',
111
+ 'end'])
112
+ expect(a.offences.size).to eq(1)
113
+ expect(a.offences.map(&:message))
114
+ .to eq([format(AccessControl::BLANK_MSG, 'protected')])
115
+ end
116
+
117
+ it 'requires blank line after private/protected' do
118
+ inspect_source(a,
119
+ ['class Test',
120
+ '',
121
+ ' protected',
122
+ ' def test; end',
123
+ 'end'])
124
+ expect(a.offences.size).to eq(1)
125
+ expect(a.offences.map(&:message))
126
+ .to eq([format(AccessControl::BLANK_MSG, 'protected')])
127
+ end
128
+
129
+ it 'recognizes blank lines with DOS style line endings' do
130
+ inspect_source(a,
131
+ ["class Test\r",
132
+ "\r",
133
+ " protected\r",
134
+ "\r",
135
+ " def test; end\r",
136
+ "end\r"])
137
+ expect(a.offences.size).to eq(0)
138
+ end
139
+ end
140
+ end
141
+ end
142
+ 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 Alias do
9
+ let(:a) { Alias.new }
10
+
11
+ it 'registers an offence for alias with symbol args' do
12
+ inspect_source(a,
13
+ ['alias :ala :bala'])
14
+ expect(a.offences.size).to eq(1)
15
+ expect(a.offences.map(&:message))
16
+ .to eq([Alias::MSG])
17
+ end
18
+
19
+ it 'registers an offence for alias with bareword args' do
20
+ inspect_source(a,
21
+ ['alias ala bala'])
22
+ expect(a.offences.size).to eq(1)
23
+ expect(a.offences.map(&:message))
24
+ .to eq([Alias::MSG])
25
+ end
26
+
27
+ it 'does not register an offence for alias_method' do
28
+ inspect_source(a,
29
+ ['alias_method :ala, :bala'])
30
+ expect(a.offences).to be_empty
31
+ end
32
+
33
+ it 'does not register an offence for :alias' do
34
+ inspect_source(a,
35
+ ['[:alias, :ala, :bala]'])
36
+ expect(a.offences).to be_empty
37
+ end
38
+
39
+ it 'does not register an offence for alias with gvars' do
40
+ inspect_source(a,
41
+ ['alias $ala $bala'])
42
+ expect(a.offences).to be_empty
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,199 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe AlignParameters do
9
+ let(:align) { AlignParameters.new }
10
+
11
+ it 'registers an offence for parameters with single indent' do
12
+ inspect_source(align, ['function(a,',
13
+ ' if b then c else d end)'])
14
+ expect(align.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'registers an offence for parameters with double indent' do
18
+ inspect_source(align, ['function(a,',
19
+ ' if b then c else d end)'])
20
+ expect(align.offences.size).to eq(1)
21
+ end
22
+
23
+ it 'accepts multiline []= method call' do
24
+ inspect_source(align, ['Test.config["something"] =',
25
+ ' true'])
26
+ expect(align.offences).to be_empty
27
+ end
28
+
29
+ it 'accepts correctly aligned parameters' do
30
+ inspect_source(align, ['function(a,',
31
+ ' 0, 1,',
32
+ ' (x + y),',
33
+ ' if b then c else d end)'])
34
+ expect(align.offences).to be_empty
35
+ end
36
+
37
+ it 'accepts calls that only span one line' do
38
+ inspect_source(align, ['find(path, s, @special[sexp[0]])'])
39
+ expect(align.offences).to be_empty
40
+ end
41
+
42
+ it "doesn't get confused by a symbol argument" do
43
+ inspect_source(align,
44
+ ['add_offence(:convention, index,',
45
+ ' MSG % kind)'])
46
+ expect(align.offences).to be_empty
47
+ end
48
+
49
+ it "doesn't get confused by splat operator" do
50
+ inspect_source(align,
51
+ ['func1(*a,',
52
+ ' *b,',
53
+ ' c)',
54
+ 'func2(a,',
55
+ ' *b,',
56
+ ' c)',
57
+ 'func3(*a)',
58
+ ])
59
+ expect(align.offences.map(&:to_s)).to eq(
60
+ ['C: 5: 6: Align the parameters of a method call if they span ' +
61
+ 'more than one line.'])
62
+ end
63
+
64
+ it "doesn't get confused by extra comma at the end" do
65
+ inspect_source(align,
66
+ ['func1(a,',
67
+ ' b,)'])
68
+ expect(align.offences.map(&:to_s)).to eq(
69
+ ['C: 2: 6: Align the parameters of a method call if they span ' +
70
+ 'more than one line.'])
71
+ end
72
+
73
+ it 'can handle a correctly aligned string literal as first argument' do
74
+ inspect_source(align,
75
+ ['add_offence(:convention, x,',
76
+ ' a)'])
77
+ expect(align.offences).to be_empty
78
+ end
79
+
80
+ it 'can handle a string literal as other argument' do
81
+ inspect_source(align,
82
+ ['add_offence(:convention,',
83
+ ' "", a)'])
84
+ expect(align.offences).to be_empty
85
+ end
86
+
87
+ it "doesn't get confused by a line break inside a parameter" do
88
+ inspect_source(align,
89
+ ['read(path, { headers: true,',
90
+ ' converters: :numeric })'])
91
+ expect(align.offences).to be_empty
92
+ end
93
+
94
+ it "doesn't get confused by symbols with embedded expressions" do
95
+ inspect_source(align,
96
+ ['send(:"#{name}_comments_path")'])
97
+ expect(align.offences).to be_empty
98
+ end
99
+
100
+ it "doesn't get confused by regexen with embedded expressions" do
101
+ inspect_source(align,
102
+ ['a(/#{name}/)'])
103
+ expect(align.offences).to be_empty
104
+ end
105
+
106
+ it 'accepts braceless hashes' do
107
+ inspect_source(align,
108
+ ['run(collection, :entry_name => label,',
109
+ ' :paginator => paginator)'])
110
+ expect(align.offences).to be_empty
111
+ end
112
+
113
+ it 'accepts the first parameter being on a new row' do
114
+ inspect_source(align,
115
+ [' match(',
116
+ ' a,',
117
+ ' b',
118
+ ' )'])
119
+ expect(align.offences).to be_empty
120
+ end
121
+
122
+ it 'can handle heredoc strings' do
123
+ src = ['class_eval(<<-EOS, __FILE__, __LINE__ + 1)',
124
+ ' def run_#{name}_callbacks(*args)',
125
+ ' a = 1',
126
+ ' return value',
127
+ ' end',
128
+ ' EOS']
129
+ inspect_source(align, src)
130
+ expect(align.offences).to be_empty
131
+ end
132
+
133
+ it 'can handle a method call within a method call' do
134
+ inspect_source(align,
135
+ ['a(a1,',
136
+ ' b(b1,',
137
+ ' b2),',
138
+ ' a2)'])
139
+ expect(align.offences).to be_empty
140
+ end
141
+
142
+ it 'can handle a call embedded in a string' do
143
+ inspect_source(align,
144
+ ['model("#{index(name)}", child)'])
145
+ expect(align.offences).to be_empty
146
+ end
147
+
148
+ it 'can handle do-end' do
149
+ inspect_source(align,
150
+ [' run(lambda do |e|',
151
+ " w = e['warden']",
152
+ ' end)'])
153
+ expect(align.offences).to be_empty
154
+ end
155
+
156
+ it 'can handle a call with a block inside another call' do
157
+ src = ['new(table_name,',
158
+ ' exec_query("info(\'#{row[\'name\']}\')").map { |col|',
159
+ " col['name']",
160
+ ' })']
161
+ inspect_source(align, src)
162
+ expect(align.offences).to be_empty
163
+ end
164
+
165
+ it 'can handle a ternary condition with a block reference' do
166
+ src = ['cond ? a : func(&b)']
167
+ inspect_source(align, src)
168
+ expect(align.offences).to be_empty
169
+ end
170
+
171
+ it 'can handle parentheses used with no parameters' do
172
+ src = ['func()']
173
+ inspect_source(align, src)
174
+ expect(align.offences).to be_empty
175
+ end
176
+
177
+ it 'can handle a multiline hash as second parameter' do
178
+ src = ['tag(:input, {',
179
+ ' :value => value',
180
+ '})']
181
+ inspect_source(align, src)
182
+ expect(align.offences).to be_empty
183
+ end
184
+
185
+ it 'can handle method calls without parentheses' do
186
+ src = ['a(b c, d)']
187
+ inspect_source(align, src)
188
+ expect(align.offences).to be_empty
189
+ end
190
+
191
+ it 'can handle other method calls without parentheses' do
192
+ src = ['chars(Unicode.apply_mapping @wrapped_string, :uppercase)']
193
+ inspect_source(align, src)
194
+ expect(align.offences).to be_empty
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end