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,190 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Formatter
7
+ describe BaseFormatter do
8
+ include FileHelper
9
+
10
+ describe 'how the API methods are invoked', :isolated_environment do
11
+ subject(:formatter) { double('formatter').as_null_object }
12
+ let(:cli) { CLI.new }
13
+ let(:output) { $stdout.string }
14
+
15
+ before do
16
+ create_file('1_offence.rb', [
17
+ '# encoding: utf-8',
18
+ '#' * 90
19
+ ])
20
+
21
+ create_file('4_offences.rb', [
22
+ '# encoding: utf-8',
23
+ 'puts x ',
24
+ 'test;',
25
+ 'top;',
26
+ '#' * 90
27
+ ])
28
+
29
+ create_file('no_offence.rb', [
30
+ '# encoding: utf-8'
31
+ ])
32
+
33
+ SimpleTextFormatter.stub(:new).and_return(formatter)
34
+ $stdout = StringIO.new
35
+ end
36
+
37
+ after do
38
+ $stdout = STDOUT
39
+ end
40
+
41
+ def run
42
+ cli.run([])
43
+ end
44
+
45
+ describe 'invocation order' do
46
+ subject(:formatter) do
47
+ formatter = double('formatter')
48
+ def formatter.method_missing(method_name, *args)
49
+ return if method_name == :output
50
+ puts method_name
51
+ end
52
+ formatter
53
+ end
54
+
55
+ it 'is called in the proper sequence' do
56
+ run
57
+ expect(output).to eq([
58
+ 'started',
59
+ 'file_started',
60
+ 'file_finished',
61
+ 'file_started',
62
+ 'file_finished',
63
+ 'file_started',
64
+ 'file_finished',
65
+ 'finished',
66
+ ''
67
+ ].join("\n"))
68
+ end
69
+ end
70
+
71
+ shared_examples 'receives all file paths' do |method_name|
72
+ it 'receives all file paths' do
73
+ expected_paths = [
74
+ '1_offence.rb',
75
+ '4_offences.rb',
76
+ 'no_offence.rb'
77
+ ].map { |path| File.expand_path(path) }.sort
78
+
79
+ formatter.should_receive(method_name) do |all_files|
80
+ expect(all_files.sort).to eq(expected_paths)
81
+ end
82
+
83
+ run
84
+ end
85
+
86
+ describe 'the passed files paths' do
87
+ it 'is frozen' do
88
+ formatter.should_receive(method_name) do |all_files|
89
+ all_files.each do |path|
90
+ expect(path).to be_frozen
91
+ end
92
+ end
93
+ run
94
+ end
95
+ end
96
+ end
97
+
98
+ describe '#started' do
99
+ include_examples 'receives all file paths', :started
100
+ end
101
+
102
+ describe '#finished' do
103
+ context 'when RuboCop finished inspecting all files normally' do
104
+ include_examples 'receives all file paths', :started
105
+ end
106
+
107
+ context 'when RuboCop is interrupted by user' do
108
+ it 'received processed file paths' do
109
+ class << formatter
110
+ attr_reader :processed_file_count
111
+
112
+ def file_finished(file, offences)
113
+ @processed_file_count ||= 0
114
+ @processed_file_count += 1
115
+ end
116
+ end
117
+
118
+ cli.stub(:wants_to_quit?) do
119
+ formatter.processed_file_count == 2
120
+ end
121
+
122
+ formatter.should_receive(:finished) do |processed_files|
123
+ expect(processed_files).to have(2).items
124
+ end
125
+
126
+ run
127
+ end
128
+ end
129
+ end
130
+
131
+ shared_examples 'receives a file path' do |method_name|
132
+ it 'receives a file path' do
133
+ formatter.should_receive(method_name)
134
+ .with(File.expand_path('1_offence.rb'), anything)
135
+
136
+ formatter.should_receive(method_name)
137
+ .with(File.expand_path('4_offences.rb'), anything)
138
+
139
+ formatter.should_receive(method_name)
140
+ .with(File.expand_path('no_offence.rb'), anything)
141
+
142
+ run
143
+ end
144
+
145
+ describe 'the passed path' do
146
+ it 'is frozen' do
147
+ formatter.should_receive(method_name).exactly(3).times do |path|
148
+ expect(path).to be_frozen
149
+ end
150
+ run
151
+ end
152
+ end
153
+ end
154
+
155
+ describe '#file_started' do
156
+ include_examples 'receives a file path', :file_started
157
+
158
+ it 'receives file specific information hash' do
159
+ formatter.should_receive(:file_started)
160
+ .with(anything, an_instance_of(Hash)).exactly(3).times
161
+ run
162
+ end
163
+ end
164
+
165
+ describe '#file_finished' do
166
+ include_examples 'receives a file path', :file_finished
167
+
168
+ it 'receives an array of detected offences for the file' do
169
+ formatter.should_receive(:file_finished)
170
+ .exactly(3).times do |file, offences|
171
+ case File.basename(file)
172
+ when '1_offence.rb'
173
+ expect(offences).to have(1).item
174
+ when '4_offences.rb'
175
+ expect(offences).to have(4).items
176
+ when 'no_offence.rb'
177
+ expect(offences).to be_empty
178
+ else
179
+ fail
180
+ end
181
+ expect(offences.all? { |o| o.is_a?(Rubocop::Cop::Offence) })
182
+ .to be_true
183
+ end
184
+ run
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
190
+ end
@@ -0,0 +1,70 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'stringio'
5
+
6
+ module Rubocop
7
+ module Formatter
8
+ describe ClangStyleFormatter do
9
+ subject(:formatter) { ClangStyleFormatter.new(output) }
10
+ let(:output) { StringIO.new }
11
+
12
+ describe '#report_summary' do
13
+ context 'when no files inspected' do
14
+ it 'handles pluralization correctly' do
15
+ formatter.report_summary(0, 0)
16
+ expect(output.string).to eq(
17
+ "\n0 files inspected, no offences detected\n")
18
+ end
19
+ end
20
+
21
+ context 'when a file inspected and no offences detected' do
22
+ it 'handles pluralization correctly' do
23
+ formatter.report_summary(1, 0)
24
+ expect(output.string).to eq(
25
+ "\n1 file inspected, no offences detected\n")
26
+ end
27
+ end
28
+
29
+ context 'when a offence detected' do
30
+ it 'handles pluralization correctly' do
31
+ formatter.report_summary(1, 1)
32
+ expect(output.string).to eq(
33
+ "\n1 file inspected, 1 offence detected\n")
34
+ end
35
+ end
36
+
37
+ context 'when 2 offences detected' do
38
+ it 'handles pluralization correctly' do
39
+ formatter.report_summary(2, 2)
40
+ expect(output.string).to eq(
41
+ "\n2 files inspected, 2 offences detected\n")
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '#report_file' do
47
+ it 'displays text containing the offending source line' do
48
+ cop = Cop::Cop.new
49
+ source_buffer = Parser::Source::Buffer.new('test', 1)
50
+ source_buffer.source = ('aa'..'az').to_a.join($RS)
51
+ cop.add_offence(:convention,
52
+ Parser::Source::Range.new(source_buffer, 0, 2),
53
+ 'message 1')
54
+ cop.add_offence(:fatal,
55
+ Parser::Source::Range.new(source_buffer, 30, 32),
56
+ 'message 2')
57
+
58
+ formatter.report_file('test', cop.offences)
59
+ expect(output.string).to eq ['test:1:1: C: message 1',
60
+ 'aa',
61
+ '^^',
62
+ 'test:11:1: F: message 2',
63
+ 'ak',
64
+ '^^',
65
+ ''].join("\n")
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'stringio'
5
+
6
+ module Rubocop
7
+ module Formatter
8
+ describe EmacsStyleFormatter do
9
+ let(:formatter) { EmacsStyleFormatter.new(output) }
10
+ let(:output) { StringIO.new }
11
+
12
+ describe '#report_file' do
13
+ it 'displays parsable text' do
14
+ cop = Cop::Cop.new
15
+ source_buffer = Parser::Source::Buffer.new('test', 1)
16
+ source_buffer.source = %w(a b cdefghi).join("\n")
17
+
18
+ cop.add_offence(:convention,
19
+ Parser::Source::Range.new(source_buffer, 0, 1),
20
+ 'message 1')
21
+ cop.add_offence(:fatal,
22
+ Parser::Source::Range.new(source_buffer, 9, 10),
23
+ 'message 2')
24
+
25
+ formatter.report_file('test', cop.offences)
26
+ expect(output.string).to eq ['test:1:1: C: message 1',
27
+ "test:3:6: F: message 2\n"].join("\n")
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,132 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'tempfile'
5
+
6
+ module Rubocop
7
+ module Formatter
8
+ describe FormatterSet do
9
+ subject(:formatter_set) { FormatterSet.new }
10
+
11
+ it 'responds to all formatter API methods' do
12
+ [:started, :file_started, :file_finished, :finished].each do |method|
13
+ expect(formatter_set).to respond_to(method)
14
+ end
15
+ end
16
+
17
+ describe 'formatter API method' do
18
+ before do
19
+ formatter_set.add_formatter('simple')
20
+ formatter_set.add_formatter('emacs')
21
+ end
22
+
23
+ let(:files) { ['/path/to/file1', '/path/to/file2'] }
24
+
25
+ it 'invokes same method of all containing formatters' do
26
+ formatter_set.each do |formatter|
27
+ formatter.should_receive(:started).with(files)
28
+ end
29
+ formatter_set.started(files)
30
+ end
31
+ end
32
+
33
+ describe 'add_formatter' do
34
+ it 'adds a formatter to itself' do
35
+ formatter_set.add_formatter('simple')
36
+ expect(formatter_set).to have(1).item
37
+ end
38
+
39
+ it 'adds a formatter with specified formatter type' do
40
+ formatter_set.add_formatter('simple')
41
+ expect(formatter_set.first.class).to eq(SimpleTextFormatter)
42
+ end
43
+
44
+ it 'can add multiple formatters by being invoked multiple times' do
45
+ formatter_set.add_formatter('simple')
46
+ formatter_set.add_formatter('emacs')
47
+ expect(formatter_set[0].class).to eq(SimpleTextFormatter)
48
+ expect(formatter_set[1].class).to eq(EmacsStyleFormatter)
49
+ end
50
+
51
+ context 'when output path is omitted' do
52
+ it 'adds a formatter outputs to $stdout' do
53
+ formatter_set.add_formatter('simple')
54
+ expect(formatter_set.first.output).to eq($stdout)
55
+ end
56
+ end
57
+
58
+ context 'when output path is specified' do
59
+ it 'adds a formatter outputs to the specified file' do
60
+ output_path = Tempfile.new('').path
61
+ formatter_set.add_formatter('simple', output_path)
62
+ expect(formatter_set.first.output.class).to eq(File)
63
+ expect(formatter_set.first.output.path).to eq(output_path)
64
+ end
65
+ end
66
+ end
67
+
68
+ describe '#close_output_files' do
69
+ before do
70
+ 2.times do
71
+ output_path = Tempfile.new('').path
72
+ formatter_set.add_formatter('simple', output_path)
73
+ end
74
+ formatter_set.add_formatter('simple')
75
+ end
76
+
77
+ it 'closes all output files' do
78
+ formatter_set.close_output_files
79
+ formatter_set[0..1].each do |formatter|
80
+ expect(formatter.output).to be_closed
81
+ end
82
+ end
83
+
84
+ it 'does not close non file output' do
85
+ expect(formatter_set[2].output).not_to be_closed
86
+ end
87
+ end
88
+
89
+ describe '#builtin_formatter_class' do
90
+ def builtin_formatter_class(string)
91
+ FormatterSet.new.send(:builtin_formatter_class, string)
92
+ end
93
+
94
+ it 'returns class which matches passed alias name exactly' do
95
+ expect(builtin_formatter_class('simple'))
96
+ .to eq(SimpleTextFormatter)
97
+ end
98
+
99
+ it 'returns class whose first letter of alias name ' +
100
+ 'matches passed letter' do
101
+ expect(builtin_formatter_class('s'))
102
+ .to eq(SimpleTextFormatter)
103
+ end
104
+ end
105
+
106
+ describe '#custom_formatter_class' do
107
+ def custom_formatter_class(string)
108
+ FormatterSet.new.send(:custom_formatter_class, string)
109
+ end
110
+
111
+ it 'returns constant represented by the passed string' do
112
+ expect(custom_formatter_class('Rubocop')).to eq(Rubocop)
113
+ end
114
+
115
+ it 'can handle namespaced constant name' do
116
+ expect(custom_formatter_class('Rubocop::CLI')).to eq(Rubocop::CLI)
117
+ end
118
+
119
+ it 'can handle top level namespaced constant name' do
120
+ expect(custom_formatter_class('::Rubocop::CLI')).to eq(Rubocop::CLI)
121
+ end
122
+
123
+ context 'when non-existent constant name is passed' do
124
+ it 'raises error' do
125
+ expect { custom_formatter_class('Rubocop::NonExistentClass') }
126
+ .to raise_error(NameError)
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,142 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'stringio'
5
+
6
+ module Rubocop
7
+ describe Formatter::JSONFormatter do
8
+ subject(:formatter) { Formatter::JSONFormatter.new(output) }
9
+ let(:output) { StringIO.new }
10
+ let(:files) { %w(/path/to/file1 /path/to/file2) }
11
+ let(:location) do
12
+ source_buffer = Parser::Source::Buffer.new('test', 1)
13
+ source_buffer.source = %w(a b cdefghi).join("\n")
14
+ Parser::Source::Range.new(source_buffer, 9, 10)
15
+ end
16
+ let(:offence) do
17
+ Cop::Offence.new(:convention, location, 'This is message', 'CopName')
18
+ end
19
+
20
+ describe '#started' do
21
+ let(:summary) { formatter.output_hash[:summary] }
22
+
23
+ it 'sets target file count in summary' do
24
+ expect(summary[:target_file_count]).to be_nil
25
+ formatter.started(%w(/path/to/file1 /path/to/file2))
26
+ expect(summary[:target_file_count]).to eq(2)
27
+ end
28
+ end
29
+
30
+ describe '#file_finished' do
31
+ before do
32
+ count = 0
33
+ formatter.stub(:hash_for_file) do
34
+ count += 1
35
+ end
36
+ end
37
+
38
+ let(:summary) { formatter.output_hash[:summary] }
39
+
40
+ it 'adds detected offence count in summary' do
41
+ expect(summary[:offence_count]).to eq(0)
42
+
43
+ formatter.file_started(files[0], {})
44
+ expect(summary[:offence_count]).to eq(0)
45
+ formatter.file_finished(files[0], [
46
+ double('offence1'), double('offence2')
47
+ ])
48
+ expect(summary[:offence_count]).to eq(2)
49
+ end
50
+
51
+ it 'adds value of #hash_for_file to #output_hash[:files]' do
52
+ expect(formatter.output_hash[:files]).to be_empty
53
+
54
+ formatter.file_started(files[0], {})
55
+ expect(formatter.output_hash[:files]).to be_empty
56
+ formatter.file_finished(files[0], [])
57
+ expect(formatter.output_hash[:files]).to eq([1])
58
+
59
+ formatter.file_started(files[1], {})
60
+ expect(formatter.output_hash[:files]).to eq([1])
61
+ formatter.file_finished(files[1], [])
62
+ expect(formatter.output_hash[:files]).to eq([1, 2])
63
+ end
64
+ end
65
+
66
+ describe '#finished' do
67
+ let(:summary) { formatter.output_hash[:summary] }
68
+
69
+ it 'sets inspected file count in summary' do
70
+ expect(summary[:inspected_file_count]).to be_nil
71
+ formatter.finished(%w(/path/to/file1 /path/to/file2))
72
+ expect(summary[:inspected_file_count]).to eq(2)
73
+ end
74
+
75
+ it 'outputs #output_hash as JSON' do
76
+ formatter.finished(files)
77
+ json = output.string
78
+ restored_hash = JSON.parse(json, { symbolize_names: true })
79
+ expect(restored_hash).to eq(formatter.output_hash)
80
+ end
81
+ end
82
+
83
+ describe '#hash_for_file' do
84
+ subject(:hash) { formatter.hash_for_file(file, offences) }
85
+ let(:file) { File.expand_path('spec/spec_helper.rb') }
86
+ let(:offences) { [double('offence1'), double('offence2')] }
87
+
88
+ it 'sets relative file path for :path key' do
89
+ expect(hash[:path]).to eq('spec/spec_helper.rb')
90
+ end
91
+
92
+ before do
93
+ count = 0
94
+ formatter.stub(:hash_for_offence) do
95
+ count += 1
96
+ end
97
+ end
98
+
99
+ it 'sets an array of #hash_for_offence values for :offences key' do
100
+ expect(hash[:offences]).to eq([1, 2])
101
+ end
102
+ end
103
+
104
+ describe '#hash_for_offence' do
105
+ subject(:hash) { formatter.hash_for_offence(offence) }
106
+
107
+ it 'sets Offence#severity value for :severity key' do
108
+ expect(hash[:severity]).to eq(:convention)
109
+ end
110
+
111
+ it 'sets Offence#message value for :message key' do
112
+ expect(hash[:message]).to eq('This is message')
113
+ end
114
+
115
+ it 'sets Offence#cop_name value for :cop_name key' do
116
+ expect(hash[:cop_name]).to eq('CopName')
117
+ end
118
+
119
+ before do
120
+ formatter.stub(:hash_for_location).and_return(location_hash)
121
+ end
122
+
123
+ let(:location_hash) { { line: 1, column: 2 } }
124
+
125
+ it 'sets value of #hash_for_location for :location key' do
126
+ expect(hash[:location]).to eq(location_hash)
127
+ end
128
+ end
129
+
130
+ describe '#hash_for_location' do
131
+ subject(:hash) { formatter.hash_for_location(offence) }
132
+
133
+ it 'sets line value for :line key' do
134
+ expect(hash[:line]).to eq(3)
135
+ end
136
+
137
+ it 'sets column value for :column key' do
138
+ expect(hash[:column]).to eq(6)
139
+ end
140
+ end
141
+ end
142
+ end