rubocop 0.29.1 → 0.30.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 (341) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -1
  3. data/README.md +11 -2
  4. data/config/default.yml +194 -6
  5. data/config/disabled.yml +25 -1
  6. data/config/enabled.yml +74 -12
  7. data/lib/rubocop.rb +19 -2
  8. data/lib/rubocop/config.rb +23 -3
  9. data/lib/rubocop/config_loader.rb +9 -1
  10. data/lib/rubocop/cop/autocorrect_logic.rb +26 -0
  11. data/lib/rubocop/cop/cop.rb +33 -17
  12. data/lib/rubocop/cop/lint/assignment_in_condition.rb +16 -4
  13. data/lib/rubocop/cop/lint/block_alignment.rb +5 -14
  14. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  15. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +61 -0
  16. data/lib/rubocop/cop/lint/void.rb +11 -3
  17. data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +17 -0
  18. data/lib/rubocop/cop/performance/detect.rb +72 -0
  19. data/lib/rubocop/cop/performance/flat_map.rb +64 -0
  20. data/lib/rubocop/cop/performance/reverse_each.rb +43 -0
  21. data/lib/rubocop/cop/performance/sample.rb +58 -0
  22. data/lib/rubocop/cop/performance/size.rb +64 -0
  23. data/lib/rubocop/cop/rails/date.rb +121 -0
  24. data/lib/rubocop/cop/rails/find_by.rb +52 -0
  25. data/lib/rubocop/cop/rails/find_each.rb +41 -0
  26. data/lib/rubocop/cop/rails/time_zone.rb +93 -0
  27. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +45 -0
  28. data/lib/rubocop/cop/style/block_delimiters.rb +186 -0
  29. data/lib/rubocop/cop/style/closing_parenthesis_indentation.rb +76 -0
  30. data/lib/rubocop/cop/style/command_literal.rb +120 -0
  31. data/lib/rubocop/cop/style/copyright.rb +87 -0
  32. data/lib/rubocop/cop/style/documentation.rb +32 -0
  33. data/lib/rubocop/cop/style/empty_else.rb +85 -16
  34. data/lib/rubocop/cop/style/encoding.rb +14 -2
  35. data/lib/rubocop/cop/style/end_of_line.rb +5 -0
  36. data/lib/rubocop/cop/style/hash_syntax.rb +86 -23
  37. data/lib/rubocop/cop/style/if_unless_modifier.rb +15 -0
  38. data/lib/rubocop/cop/style/indentation_consistency.rb +13 -6
  39. data/lib/rubocop/cop/style/indentation_width.rb +34 -10
  40. data/lib/rubocop/cop/style/lambda.rb +32 -17
  41. data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -0
  42. data/lib/rubocop/cop/style/missing_else.rb +72 -0
  43. data/lib/rubocop/cop/style/regexp_literal.rb +89 -58
  44. data/lib/rubocop/cop/style/space_around_operators.rb +13 -2
  45. data/lib/rubocop/cop/style/space_before_block_braces.rb +3 -3
  46. data/lib/rubocop/cop/style/space_inside_block_braces.rb +9 -5
  47. data/lib/rubocop/cop/style/symbol_literal.rb +36 -0
  48. data/lib/rubocop/cop/style/trailing_blank_lines.rb +7 -0
  49. data/lib/rubocop/cop/style/trailing_comma.rb +21 -7
  50. data/lib/rubocop/cop/style/trivial_accessors.rb +17 -3
  51. data/lib/rubocop/cop/style/unneeded_capital_w.rb +4 -6
  52. data/lib/rubocop/cop/style/while_until_modifier.rb +10 -0
  53. data/lib/rubocop/cop/util.rb +24 -19
  54. data/lib/rubocop/cop/variable_force.rb +14 -0
  55. data/lib/rubocop/cop/variable_force/reference.rb +10 -4
  56. data/lib/rubocop/formatter/html_formatter.rb +10 -4
  57. data/lib/rubocop/formatter/text_util.rb +5 -7
  58. data/lib/rubocop/options.rb +47 -45
  59. data/lib/rubocop/path_util.rb +12 -8
  60. data/lib/rubocop/processed_source.rb +12 -1
  61. data/lib/rubocop/rake_task.rb +2 -2
  62. data/lib/rubocop/version.rb +1 -1
  63. data/relnotes/v0.30.0.md +145 -0
  64. data/rubocop.gemspec +15 -3
  65. metadata +22 -545
  66. data/.gitignore +0 -54
  67. data/.rspec +0 -1
  68. data/.rubocop.yml +0 -11
  69. data/.rubocop_todo.yml +0 -28
  70. data/.travis.yml +0 -22
  71. data/Gemfile +0 -15
  72. data/Rakefile +0 -41
  73. data/lib/rubocop/cop/style/blocks.rb +0 -80
  74. data/lib/rubocop/cop/style/unneeded_percent_x.rb +0 -25
  75. data/logo/rubocop-final-logo.eps +0 -0
  76. data/spec/.rubocop.yml +0 -5
  77. data/spec/fixtures/html_formatter/expected.html +0 -495
  78. data/spec/fixtures/html_formatter/project/app/controllers/application_controller.rb +0 -5
  79. data/spec/fixtures/html_formatter/project/app/controllers/books_controller.rb +0 -74
  80. data/spec/fixtures/html_formatter/project/app/models/book.rb +0 -5
  81. data/spec/isolated_environment_spec.rb +0 -24
  82. data/spec/project_spec.rb +0 -119
  83. data/spec/rubocop/cli_spec.rb +0 -2740
  84. data/spec/rubocop/comment_config_spec.rb +0 -105
  85. data/spec/rubocop/config_loader_spec.rb +0 -377
  86. data/spec/rubocop/config_spec.rb +0 -235
  87. data/spec/rubocop/config_store_spec.rb +0 -53
  88. data/spec/rubocop/cop/commissioner_spec.rb +0 -85
  89. data/spec/rubocop/cop/cop_spec.rb +0 -135
  90. data/spec/rubocop/cop/corrector_spec.rb +0 -59
  91. data/spec/rubocop/cop/force_spec.rb +0 -29
  92. data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +0 -113
  93. data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +0 -35
  94. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +0 -130
  95. data/spec/rubocop/cop/lint/block_alignment_spec.rb +0 -533
  96. data/spec/rubocop/cop/lint/condition_position_spec.rb +0 -51
  97. data/spec/rubocop/cop/lint/debugger_spec.rb +0 -73
  98. data/spec/rubocop/cop/lint/def_end_alignment_spec.rb +0 -108
  99. data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +0 -38
  100. data/spec/rubocop/cop/lint/duplicate_methods_spec.rb +0 -189
  101. data/spec/rubocop/cop/lint/else_layout_spec.rb +0 -65
  102. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +0 -27
  103. data/spec/rubocop/cop/lint/empty_interpolation_spec.rb +0 -18
  104. data/spec/rubocop/cop/lint/end_alignment_spec.rb +0 -91
  105. data/spec/rubocop/cop/lint/end_in_method_spec.rb +0 -29
  106. data/spec/rubocop/cop/lint/ensure_return_spec.rb +0 -39
  107. data/spec/rubocop/cop/lint/eval_spec.rb +0 -33
  108. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +0 -30
  109. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +0 -33
  110. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +0 -172
  111. data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +0 -31
  112. data/spec/rubocop/cop/lint/loop_spec.rb +0 -27
  113. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +0 -57
  114. data/spec/rubocop/cop/lint/require_parentheses_spec.rb +0 -82
  115. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +0 -123
  116. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +0 -237
  117. data/spec/rubocop/cop/lint/space_before_first_arg_spec.rb +0 -66
  118. data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +0 -51
  119. data/spec/rubocop/cop/lint/syntax_spec.rb +0 -34
  120. data/spec/rubocop/cop/lint/underscore_prefixed_variable_name_spec.rb +0 -179
  121. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +0 -63
  122. data/spec/rubocop/cop/lint/unused_block_argument_spec.rb +0 -231
  123. data/spec/rubocop/cop/lint/unused_method_argument_spec.rb +0 -278
  124. data/spec/rubocop/cop/lint/useless_access_modifier_spec.rb +0 -192
  125. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +0 -1778
  126. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +0 -30
  127. data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +0 -48
  128. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +0 -211
  129. data/spec/rubocop/cop/lint/void_spec.rb +0 -64
  130. data/spec/rubocop/cop/metrics/abc_size_spec.rb +0 -109
  131. data/spec/rubocop/cop/metrics/block_nesting_spec.rb +0 -156
  132. data/spec/rubocop/cop/metrics/class_length_spec.rb +0 -131
  133. data/spec/rubocop/cop/metrics/cyclomatic_complexity_spec.rb +0 -204
  134. data/spec/rubocop/cop/metrics/line_length_spec.rb +0 -136
  135. data/spec/rubocop/cop/metrics/method_length_spec.rb +0 -147
  136. data/spec/rubocop/cop/metrics/parameter_lists_spec.rb +0 -44
  137. data/spec/rubocop/cop/metrics/perceived_complexity_spec.rb +0 -222
  138. data/spec/rubocop/cop/offense_spec.rb +0 -133
  139. data/spec/rubocop/cop/rails/action_filter_spec.rb +0 -64
  140. data/spec/rubocop/cop/rails/default_scope_spec.rb +0 -37
  141. data/spec/rubocop/cop/rails/delegate_spec.rb +0 -177
  142. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +0 -13
  143. data/spec/rubocop/cop/rails/output_spec.rb +0 -37
  144. data/spec/rubocop/cop/rails/read_write_attribute_spec.rb +0 -130
  145. data/spec/rubocop/cop/rails/scope_args_spec.rb +0 -25
  146. data/spec/rubocop/cop/rails/validation_spec.rb +0 -28
  147. data/spec/rubocop/cop/severity_spec.rb +0 -113
  148. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +0 -421
  149. data/spec/rubocop/cop/style/accessor_method_name_spec.rb +0 -81
  150. data/spec/rubocop/cop/style/alias_spec.rb +0 -59
  151. data/spec/rubocop/cop/style/align_array_spec.rb +0 -123
  152. data/spec/rubocop/cop/style/align_hash_spec.rb +0 -411
  153. data/spec/rubocop/cop/style/align_parameters_spec.rb +0 -431
  154. data/spec/rubocop/cop/style/and_or_spec.rb +0 -235
  155. data/spec/rubocop/cop/style/array_join_spec.rb +0 -29
  156. data/spec/rubocop/cop/style/ascii_comments_spec.rb +0 -21
  157. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +0 -36
  158. data/spec/rubocop/cop/style/attr_spec.rb +0 -29
  159. data/spec/rubocop/cop/style/bare_percent_literals_spec.rb +0 -132
  160. data/spec/rubocop/cop/style/begin_block_spec.rb +0 -13
  161. data/spec/rubocop/cop/style/block_comments_spec.rb +0 -45
  162. data/spec/rubocop/cop/style/block_end_newline_spec.rb +0 -61
  163. data/spec/rubocop/cop/style/blocks_spec.rb +0 -121
  164. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +0 -288
  165. data/spec/rubocop/cop/style/case_equality_spec.rb +0 -13
  166. data/spec/rubocop/cop/style/case_indentation_spec.rb +0 -293
  167. data/spec/rubocop/cop/style/character_literal_spec.rb +0 -37
  168. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +0 -40
  169. data/spec/rubocop/cop/style/class_and_module_children_spec.rb +0 -133
  170. data/spec/rubocop/cop/style/class_check_spec.rb +0 -41
  171. data/spec/rubocop/cop/style/class_methods_spec.rb +0 -80
  172. data/spec/rubocop/cop/style/class_vars_spec.rb +0 -19
  173. data/spec/rubocop/cop/style/collection_methods_spec.rb +0 -48
  174. data/spec/rubocop/cop/style/colon_method_call_spec.rb +0 -65
  175. data/spec/rubocop/cop/style/comment_annotation_spec.rb +0 -86
  176. data/spec/rubocop/cop/style/comment_indentation_spec.rb +0 -179
  177. data/spec/rubocop/cop/style/constant_name_spec.rb +0 -65
  178. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +0 -43
  179. data/spec/rubocop/cop/style/deprecated_hash_methods_spec.rb +0 -45
  180. data/spec/rubocop/cop/style/documentation_spec.rb +0 -146
  181. data/spec/rubocop/cop/style/dot_position_spec.rb +0 -132
  182. data/spec/rubocop/cop/style/double_negation_spec.rb +0 -22
  183. data/spec/rubocop/cop/style/each_with_object_spec.rb +0 -73
  184. data/spec/rubocop/cop/style/else_alignment_spec.rb +0 -506
  185. data/spec/rubocop/cop/style/empty_else_spec.rb +0 -100
  186. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +0 -135
  187. data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +0 -178
  188. data/spec/rubocop/cop/style/empty_lines_around_block_body_spec.rb +0 -103
  189. data/spec/rubocop/cop/style/empty_lines_around_class_body_spec.rb +0 -135
  190. data/spec/rubocop/cop/style/empty_lines_around_method_body_spec.rb +0 -90
  191. data/spec/rubocop/cop/style/empty_lines_around_module_body_spec.rb +0 -79
  192. data/spec/rubocop/cop/style/empty_lines_spec.rb +0 -51
  193. data/spec/rubocop/cop/style/empty_literal_spec.rb +0 -117
  194. data/spec/rubocop/cop/style/encoding_spec.rb +0 -139
  195. data/spec/rubocop/cop/style/end_block_spec.rb +0 -13
  196. data/spec/rubocop/cop/style/end_of_line_spec.rb +0 -65
  197. data/spec/rubocop/cop/style/even_odd_spec.rb +0 -164
  198. data/spec/rubocop/cop/style/extra_spacing_spec.rb +0 -68
  199. data/spec/rubocop/cop/style/file_name_spec.rb +0 -84
  200. data/spec/rubocop/cop/style/first_parameter_indentation_spec.rb +0 -304
  201. data/spec/rubocop/cop/style/flip_flop_spec.rb +0 -23
  202. data/spec/rubocop/cop/style/for_spec.rb +0 -105
  203. data/spec/rubocop/cop/style/format_string_spec.rb +0 -184
  204. data/spec/rubocop/cop/style/global_vars_spec.rb +0 -34
  205. data/spec/rubocop/cop/style/guard_clause_spec.rb +0 -172
  206. data/spec/rubocop/cop/style/hash_syntax_spec.rb +0 -137
  207. data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +0 -146
  208. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +0 -24
  209. data/spec/rubocop/cop/style/indent_array_spec.rb +0 -173
  210. data/spec/rubocop/cop/style/indent_hash_spec.rb +0 -367
  211. data/spec/rubocop/cop/style/indentation_consistency_spec.rb +0 -509
  212. data/spec/rubocop/cop/style/indentation_width_spec.rb +0 -885
  213. data/spec/rubocop/cop/style/infinite_loop_spec.rb +0 -48
  214. data/spec/rubocop/cop/style/inline_comment_spec.rb +0 -13
  215. data/spec/rubocop/cop/style/lambda_call_spec.rb +0 -65
  216. data/spec/rubocop/cop/style/lambda_spec.rb +0 -76
  217. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +0 -64
  218. data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +0 -184
  219. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +0 -59
  220. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +0 -60
  221. data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +0 -108
  222. data/spec/rubocop/cop/style/method_name_spec.rb +0 -125
  223. data/spec/rubocop/cop/style/module_function_spec.rb +0 -24
  224. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +0 -78
  225. data/spec/rubocop/cop/style/multiline_block_layout_spec.rb +0 -199
  226. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +0 -134
  227. data/spec/rubocop/cop/style/multiline_operation_indentation_spec.rb +0 -464
  228. data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +0 -18
  229. data/spec/rubocop/cop/style/negated_if_spec.rb +0 -102
  230. data/spec/rubocop/cop/style/negated_while_spec.rb +0 -64
  231. data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +0 -21
  232. data/spec/rubocop/cop/style/next_spec.rb +0 -301
  233. data/spec/rubocop/cop/style/nil_comparison_spec.rb +0 -29
  234. data/spec/rubocop/cop/style/non_nil_check_spec.rb +0 -132
  235. data/spec/rubocop/cop/style/not_spec.rb +0 -28
  236. data/spec/rubocop/cop/style/numeric_literals_spec.rb +0 -80
  237. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +0 -13
  238. data/spec/rubocop/cop/style/op_method_spec.rb +0 -85
  239. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +0 -161
  240. data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +0 -316
  241. data/spec/rubocop/cop/style/percent_q_literals_spec.rb +0 -122
  242. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +0 -22
  243. data/spec/rubocop/cop/style/predicate_name_spec.rb +0 -57
  244. data/spec/rubocop/cop/style/proc_spec.rb +0 -27
  245. data/spec/rubocop/cop/style/raise_args_spec.rb +0 -87
  246. data/spec/rubocop/cop/style/redundant_begin_spec.rb +0 -121
  247. data/spec/rubocop/cop/style/redundant_exception_spec.rb +0 -59
  248. data/spec/rubocop/cop/style/redundant_return_spec.rb +0 -171
  249. data/spec/rubocop/cop/style/redundant_self_spec.rb +0 -186
  250. data/spec/rubocop/cop/style/regexp_literal_spec.rb +0 -188
  251. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +0 -116
  252. data/spec/rubocop/cop/style/self_assignment_spec.rb +0 -49
  253. data/spec/rubocop/cop/style/semicolon_spec.rb +0 -114
  254. data/spec/rubocop/cop/style/signal_exception_spec.rb +0 -289
  255. data/spec/rubocop/cop/style/single_line_block_params_spec.rb +0 -82
  256. data/spec/rubocop/cop/style/single_line_methods_spec.rb +0 -94
  257. data/spec/rubocop/cop/style/single_space_before_first_arg_spec.rb +0 -63
  258. data/spec/rubocop/cop/style/space_after_colon_spec.rb +0 -55
  259. data/spec/rubocop/cop/style/space_after_comma_spec.rb +0 -30
  260. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +0 -84
  261. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +0 -70
  262. data/spec/rubocop/cop/style/space_after_not_spec.rb +0 -22
  263. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +0 -23
  264. data/spec/rubocop/cop/style/space_around_block_parameters_spec.rb +0 -155
  265. data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +0 -95
  266. data/spec/rubocop/cop/style/space_around_operators_spec.rb +0 -330
  267. data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +0 -73
  268. data/spec/rubocop/cop/style/space_before_comma_spec.rb +0 -42
  269. data/spec/rubocop/cop/style/space_before_comment_spec.rb +0 -34
  270. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +0 -70
  271. data/spec/rubocop/cop/style/space_before_semicolon_spec.rb +0 -28
  272. data/spec/rubocop/cop/style/space_inside_block_braces_spec.rb +0 -317
  273. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +0 -83
  274. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +0 -147
  275. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +0 -44
  276. data/spec/rubocop/cop/style/space_inside_range_literal_spec.rb +0 -64
  277. data/spec/rubocop/cop/style/special_global_vars_spec.rb +0 -62
  278. data/spec/rubocop/cop/style/string_literals_in_interpolation_spec.rb +0 -99
  279. data/spec/rubocop/cop/style/string_literals_spec.rb +0 -228
  280. data/spec/rubocop/cop/style/struct_inheritance_spec.rb +0 -44
  281. data/spec/rubocop/cop/style/symbol_array_spec.rb +0 -37
  282. data/spec/rubocop/cop/style/symbol_proc_spec.rb +0 -100
  283. data/spec/rubocop/cop/style/tab_spec.rb +0 -47
  284. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +0 -83
  285. data/spec/rubocop/cop/style/trailing_comma_spec.rb +0 -390
  286. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +0 -31
  287. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +0 -558
  288. data/spec/rubocop/cop/style/unless_else_spec.rb +0 -23
  289. data/spec/rubocop/cop/style/unneeded_capital_w_spec.rb +0 -90
  290. data/spec/rubocop/cop/style/unneeded_percent_q_spec.rb +0 -127
  291. data/spec/rubocop/cop/style/unneeded_percent_x_spec.rb +0 -34
  292. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +0 -76
  293. data/spec/rubocop/cop/style/variable_name_spec.rb +0 -107
  294. data/spec/rubocop/cop/style/when_then_spec.rb +0 -42
  295. data/spec/rubocop/cop/style/while_until_do_spec.rb +0 -55
  296. data/spec/rubocop/cop/style/while_until_modifier_spec.rb +0 -93
  297. data/spec/rubocop/cop/style/word_array_spec.rb +0 -117
  298. data/spec/rubocop/cop/team_spec.rb +0 -190
  299. data/spec/rubocop/cop/util_spec.rb +0 -102
  300. data/spec/rubocop/cop/variable_force/assignment_spec.rb +0 -200
  301. data/spec/rubocop/cop/variable_force/locatable_spec.rb +0 -699
  302. data/spec/rubocop/cop/variable_force/reference_spec.rb +0 -19
  303. data/spec/rubocop/cop/variable_force/scope_spec.rb +0 -319
  304. data/spec/rubocop/cop/variable_force/variable_spec.rb +0 -59
  305. data/spec/rubocop/cop/variable_force/variable_table_spec.rb +0 -276
  306. data/spec/rubocop/cop/variable_force_spec.rb +0 -26
  307. data/spec/rubocop/formatter/base_formatter_spec.rb +0 -191
  308. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +0 -114
  309. data/spec/rubocop/formatter/colorizable_spec.rb +0 -107
  310. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +0 -50
  311. data/spec/rubocop/formatter/disabled_lines_formatter_spec.rb +0 -67
  312. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +0 -63
  313. data/spec/rubocop/formatter/file_list_formatter_spec.rb +0 -33
  314. data/spec/rubocop/formatter/formatter_set_spec.rb +0 -141
  315. data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +0 -129
  316. data/spec/rubocop/formatter/html_formatter_spec.rb +0 -48
  317. data/spec/rubocop/formatter/json_formatter_spec.rb +0 -152
  318. data/spec/rubocop/formatter/offense_count_formatter_spec.rb +0 -75
  319. data/spec/rubocop/formatter/progress_formatter_spec.rb +0 -182
  320. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +0 -135
  321. data/spec/rubocop/formatter/text_util_spec.rb +0 -55
  322. data/spec/rubocop/options_spec.rb +0 -181
  323. data/spec/rubocop/path_util_spec.rb +0 -77
  324. data/spec/rubocop/processed_source_spec.rb +0 -184
  325. data/spec/rubocop/rake_task_spec.rb +0 -122
  326. data/spec/rubocop/runner_spec.rb +0 -99
  327. data/spec/rubocop/string_util_spec.rb +0 -46
  328. data/spec/rubocop/target_finder_spec.rb +0 -245
  329. data/spec/rubocop/token_spec.rb +0 -29
  330. data/spec/spec_helper.rb +0 -39
  331. data/spec/support/cop_helper.rb +0 -75
  332. data/spec/support/cops/class_must_be_a_module_cop.rb +0 -19
  333. data/spec/support/cops/module_must_be_a_class_cop.rb +0 -19
  334. data/spec/support/coverage.rb +0 -15
  335. data/spec/support/custom_matchers.rb +0 -58
  336. data/spec/support/file_helper.rb +0 -23
  337. data/spec/support/jruby_workaround.rb +0 -15
  338. data/spec/support/mri_syntax_checker.rb +0 -73
  339. data/spec/support/shared_contexts.rb +0 -53
  340. data/spec/support/shared_examples.rb +0 -55
  341. data/spec/support/statement_modifier_helper.rb +0 -41
@@ -1,235 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Config do
6
- include FileHelper
7
-
8
- subject(:configuration) { described_class.new(hash, loaded_path) }
9
- let(:hash) { {} }
10
- let(:loaded_path) { 'example/.rubocop.yml' }
11
-
12
- describe '#validate', :isolated_environment do
13
- # TODO: Because Config.load_file now outputs the validation warning,
14
- # it is inserting text into the rspec test output here.
15
- # The next 2 lines should be removed eventually.
16
- before(:each) { $stderr = StringIO.new }
17
- after(:each) { $stderr = STDERR }
18
-
19
- subject(:configuration) do
20
- RuboCop::ConfigLoader.load_file(configuration_path)
21
- end
22
-
23
- let(:configuration_path) { '.rubocop.yml' }
24
-
25
- context 'when the configuration includes any unrecognized cop name' do
26
- before do
27
- create_file(configuration_path, [
28
- 'LyneLenth:',
29
- ' Enabled: true',
30
- ' Max: 100'
31
- ])
32
- end
33
-
34
- it 'raises validation error' do
35
- expect { configuration.validate }
36
- .to raise_error(described_class::ValidationError,
37
- /^unrecognized cop LyneLenth/)
38
- end
39
- end
40
-
41
- context 'when the configuration includes any unrecognized parameter' do
42
- before do
43
- create_file(configuration_path, [
44
- 'Metrics/LineLength:',
45
- ' Enabled: true',
46
- ' Min: 10'
47
- ])
48
- end
49
-
50
- it 'raises validation error' do
51
- expect { configuration.validate }
52
- .to raise_error(described_class::ValidationError,
53
- /^unrecognized parameter Metrics\/LineLength:Min/)
54
- end
55
- end
56
-
57
- context 'when the configuration includes any common parameter' do
58
- # Common parameters are parameters that are not in the default
59
- # configuration, but are nonetheless allowed for any cop.
60
- before do
61
- create_file(configuration_path, [
62
- 'Metrics/LineLength:',
63
- ' Exclude:',
64
- ' - lib/file.rb',
65
- ' Include:',
66
- ' - lib/file.xyz',
67
- ' Severity: warning'
68
- ])
69
- end
70
-
71
- it 'does not raise validation error' do
72
- expect { configuration.validate }.to_not raise_error
73
- end
74
- end
75
- end
76
-
77
- describe '#file_to_include?' do
78
- let(:hash) do
79
- {
80
- 'AllCops' => {
81
- 'Include' => ['**/Gemfile', 'config/unicorn.rb.example']
82
- }
83
- }
84
- end
85
-
86
- let(:loaded_path) { '/home/foo/project/.rubocop.yml' }
87
-
88
- context 'when the passed path matches any of patterns to include' do
89
- it 'returns true' do
90
- file_path = '/home/foo/project/Gemfile'
91
- expect(configuration.file_to_include?(file_path)).to be_truthy
92
- end
93
- end
94
-
95
- context 'when the passed path does not match any of patterns to include' do
96
- it 'returns false' do
97
- file_path = '/home/foo/project/Gemfile.lock'
98
- expect(configuration.file_to_include?(file_path)).to be_falsey
99
- end
100
- end
101
- end
102
-
103
- describe '#file_to_exclude?' do
104
- before { $stderr = StringIO.new }
105
- after { $stderr = STDERR }
106
-
107
- let(:hash) do
108
- {
109
- 'AllCops' => {
110
- 'Exclude' => [
111
- "#{Dir.pwd}/log/**/*",
112
- '**/bar.rb'
113
- ]
114
- }
115
- }
116
- end
117
-
118
- let(:loaded_path) { '/home/foo/project/.rubocop.yml' }
119
-
120
- context 'when the passed path matches any of patterns to exclude' do
121
- it 'returns true' do
122
- file_path = "#{Dir.pwd}/log/foo.rb"
123
- expect(configuration.file_to_exclude?(file_path)).to be_truthy
124
-
125
- expect(configuration.file_to_exclude?('log/foo.rb')).to be_truthy
126
-
127
- expect(configuration.file_to_exclude?('bar.rb')).to be_truthy
128
- end
129
- end
130
-
131
- context 'when the passed path does not match any of patterns to exclude' do
132
- it 'returns false' do
133
- file_path = "#{Dir.pwd}/log_file.rb"
134
- expect(configuration.file_to_exclude?(file_path)).to be_falsey
135
-
136
- expect(configuration.file_to_exclude?('app/controller.rb')).to be_falsey
137
-
138
- expect(configuration.file_to_exclude?('baz.rb')).to be_falsey
139
- end
140
- end
141
- end
142
-
143
- describe '#patterns_to_include' do
144
- subject(:patterns_to_include) do
145
- configuration = described_class.new(hash, loaded_path)
146
- configuration.patterns_to_include
147
- end
148
-
149
- let(:hash) { {} }
150
- let(:loaded_path) { 'example/.rubocop.yml' }
151
-
152
- context 'when config file has AllCops => Include key' do
153
- let(:hash) do
154
- {
155
- 'AllCops' => {
156
- 'Include' => ['**/Gemfile', 'config/unicorn.rb.example']
157
- }
158
- }
159
- end
160
-
161
- it 'returns the Include value' do
162
- expect(patterns_to_include).to eq([
163
- '**/Gemfile',
164
- 'config/unicorn.rb.example'
165
- ])
166
- end
167
- end
168
- end
169
-
170
- describe '#patterns_to_exclude' do
171
- subject(:patterns_to_exclude) do
172
- configuration = described_class.new(hash, loaded_path)
173
- configuration.patterns_to_exclude
174
- end
175
-
176
- let(:hash) { {} }
177
- let(:loaded_path) { 'example/.rubocop.yml' }
178
-
179
- context 'when config file has AllCops => Exclude key' do
180
- let(:hash) do
181
- {
182
- 'AllCops' => {
183
- 'Exclude' => ['log/*']
184
- }
185
- }
186
- end
187
-
188
- it 'returns the Exclude value' do
189
- expect(patterns_to_exclude).to eq(['log/*'])
190
- end
191
- end
192
- end
193
-
194
- describe '#deprecation_check' do
195
- context 'when there is no AllCops configuration' do
196
- let(:hash) { {} }
197
-
198
- it 'does not yield' do
199
- expect { |b| configuration.deprecation_check(&b) }.not_to yield_control
200
- end
201
- end
202
-
203
- context 'when there is AllCops configuration' do
204
- context 'if there are no Excludes or Includes keys' do
205
- let(:hash) { { 'AllCops' => { 'Exclude' => [], 'Include' => [] } } }
206
-
207
- it 'does not yield' do
208
- expect do |b|
209
- configuration.deprecation_check(&b)
210
- end.not_to yield_control
211
- end
212
- end
213
-
214
- context 'if there are is an Includes key' do
215
- let(:hash) { { 'AllCops' => { 'Includes' => [] } } }
216
-
217
- it 'yields' do
218
- expect do |b|
219
- configuration.deprecation_check(&b)
220
- end.to yield_with_args(String)
221
- end
222
- end
223
-
224
- context 'if there are is an Excludes key' do
225
- let(:hash) { { 'AllCops' => { 'Excludes' => [] } } }
226
-
227
- it 'yields' do
228
- expect do |b|
229
- configuration.deprecation_check(&b)
230
- end.to yield_with_args(String)
231
- end
232
- end
233
- end
234
- end
235
- end
@@ -1,53 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::ConfigStore do
6
- subject(:config_store) { described_class.new }
7
-
8
- before do
9
- allow(RuboCop::ConfigLoader).to receive(:configuration_file_for) do |arg|
10
- # File tree:
11
- # file1
12
- # dir/.rubocop.yml
13
- # dir/file2
14
- # dir/subdir/file3
15
- (arg =~ /dir/ ? 'dir' : '.') + '/.rubocop.yml'
16
- end
17
- allow(RuboCop::ConfigLoader)
18
- .to receive(:configuration_from_file) { |arg| arg }
19
- allow(RuboCop::ConfigLoader)
20
- .to receive(:load_file) { |arg| RuboCop::Config.new(arg) }
21
- allow(RuboCop::ConfigLoader)
22
- .to receive(:merge_with_default) { |config| "merged #{config}" }
23
- end
24
-
25
- describe '.for' do
26
- it 'always uses config specified in command line' do
27
- config_store.options_config = :options_config
28
- expect(config_store.for('file1')).to eq('merged options_config')
29
- end
30
-
31
- context 'when no config specified in command line' do
32
- it 'gets config path and config from cache if available' do
33
- expect(RuboCop::ConfigLoader).to receive(:configuration_file_for).once
34
- .with('dir')
35
- expect(RuboCop::ConfigLoader).to receive(:configuration_file_for).once
36
- .with('dir/subdir')
37
- # The stub returns the same config path for dir and dir/subdir.
38
- expect(RuboCop::ConfigLoader).to receive(:configuration_from_file).once
39
- .with('dir/.rubocop.yml')
40
-
41
- config_store.for('dir/file2')
42
- config_store.for('dir/file2')
43
- config_store.for('dir/subdir/file3')
44
- end
45
-
46
- it 'searches for config path if not available in cache' do
47
- expect(RuboCop::ConfigLoader).to receive(:configuration_file_for).once
48
- expect(RuboCop::ConfigLoader).to receive(:configuration_from_file).once
49
- config_store.for('file1')
50
- end
51
- end
52
- end
53
- end
@@ -1,85 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Commissioner do
6
- describe '#investigate' do
7
- let(:cop) { double(RuboCop::Cop, offenses: []).as_null_object }
8
- let(:force) { double(RuboCop::Cop::Force).as_null_object }
9
-
10
- it 'returns all offenses found by the cops' do
11
- allow(cop).to receive(:offenses).and_return([1])
12
-
13
- commissioner = described_class.new([cop], [])
14
- source = []
15
- processed_source = parse_source(source)
16
-
17
- expect(commissioner.investigate(processed_source)).to eq [1]
18
- end
19
-
20
- context 'when a cop has no interest in the file' do
21
- it 'returns all offenses except the ones of the cop' do
22
- cops = []
23
- cops << double('cop A', offenses: %w(foo), relevant_file?: true)
24
- cops << double('cop B', offenses: %w(bar), relevant_file?: false)
25
- cops << double('cop C', offenses: %w(baz), relevant_file?: true)
26
- cops.each(&:as_null_object)
27
-
28
- commissioner = described_class.new(cops, [])
29
- source = []
30
- processed_source = parse_source(source)
31
-
32
- expect(commissioner.investigate(processed_source)).to eq %w(foo baz)
33
- end
34
- end
35
-
36
- it 'traverses the AST and invoke cops specific callbacks' do
37
- expect(cop).to receive(:on_def)
38
-
39
- commissioner = described_class.new([cop], [])
40
- source = ['def method', '1', 'end']
41
- processed_source = parse_source(source)
42
-
43
- commissioner.investigate(processed_source)
44
- end
45
-
46
- it 'passes the input params to all cops/forces that implement their own' \
47
- ' #investigate method' do
48
- source = []
49
- processed_source = parse_source(source)
50
- expect(cop).to receive(:investigate).with(processed_source)
51
- expect(force).to receive(:investigate).with(processed_source)
52
-
53
- commissioner = described_class.new([cop], [force])
54
-
55
- commissioner.investigate(processed_source)
56
- end
57
-
58
- it 'stores all errors raised by the cops' do
59
- allow(cop).to receive(:on_def) { fail RuntimeError }
60
-
61
- commissioner = described_class.new([cop], [])
62
- source = ['def method', '1', 'end']
63
- processed_source = parse_source(source)
64
-
65
- commissioner.investigate(processed_source)
66
-
67
- expect(commissioner.errors[cop].size).to eq(1)
68
- expect(commissioner.errors[cop][0]).to be_instance_of(RuntimeError)
69
- end
70
-
71
- context 'when passed :raise_error option' do
72
- it 're-raises the exception received while processing' do
73
- allow(cop).to receive(:on_def) { fail RuntimeError }
74
-
75
- commissioner = described_class.new([cop], [], raise_error: true)
76
- source = ['def method', '1', 'end']
77
- processed_source = parse_source(source)
78
-
79
- expect do
80
- commissioner.investigate(processed_source)
81
- end.to raise_error(RuntimeError)
82
- end
83
- end
84
- end
85
- end
@@ -1,135 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Cop do
6
- subject(:cop) { described_class.new }
7
- let(:location) do
8
- source_buffer = Parser::Source::Buffer.new('test', 1)
9
- source_buffer.source = "a\n"
10
- Parser::Source::Range.new(source_buffer, 0, 1)
11
- end
12
-
13
- it 'initially has 0 offenses' do
14
- expect(cop.offenses).to be_empty
15
- end
16
-
17
- describe '.qualified_cop_name' do
18
- it 'adds namespace if the cop name is found in exactly one namespace' do
19
- expect(described_class.qualified_cop_name('LineLength', '--only'))
20
- .to eq('Metrics/LineLength')
21
- end
22
-
23
- it 'returns the given cop name if it is not found in any namespace' do
24
- expect(described_class.qualified_cop_name('UnknownCop', '--only'))
25
- .to eq('UnknownCop')
26
- end
27
-
28
- it 'returns the given cop name if it already has a namespace' do
29
- expect(described_class.qualified_cop_name('Metrics/LineLength', '--only'))
30
- .to eq('Metrics/LineLength')
31
- end
32
-
33
- it 'raises an error if the cop name is in more than one namespace' do
34
- skip 'Example needs a cop with same name in two namespaces'
35
- expect { described_class.qualified_cop_name('ExampleCop', '--only') }
36
- .to raise_error(RuboCop::Cop::AmbiguousCopName)
37
- end
38
- end
39
-
40
- it 'keeps track of offenses' do
41
- cop.add_offense(nil, location, 'message')
42
-
43
- expect(cop.offenses.size).to eq(1)
44
- end
45
-
46
- it 'will report registered offenses' do
47
- cop.add_offense(nil, location, 'message')
48
-
49
- expect(cop.offenses).not_to be_empty
50
- end
51
-
52
- it 'will set default severity' do
53
- cop.add_offense(nil, location, 'message')
54
-
55
- expect(cop.offenses.first.severity).to eq(:convention)
56
- end
57
-
58
- it 'will set custom severity if present' do
59
- cop.config[cop.name] = { 'Severity' => 'warning' }
60
- cop.add_offense(nil, location, 'message')
61
-
62
- expect(cop.offenses.first.severity).to eq(:warning)
63
- end
64
-
65
- it 'will warn if custom severity is invalid' do
66
- cop.config[cop.name] = { 'Severity' => 'superbad' }
67
- expect(cop).to receive(:warn)
68
- cop.add_offense(nil, location, 'message')
69
- end
70
-
71
- it 'registers offense with its name' do
72
- cop = RuboCop::Cop::Style::For.new
73
- cop.add_offense(nil, location, 'message')
74
- expect(cop.offenses.first.cop_name).to eq('Style/For')
75
- end
76
-
77
- context 'with no submodule' do
78
- subject(:cop) { described_class }
79
- it('has right name') { expect(cop.cop_name).to eq('Cop/Cop') }
80
- it('has right type') { expect(cop.cop_type).to eq(:cop) }
81
- end
82
-
83
- context 'with style cops' do
84
- subject(:cop) { RuboCop::Cop::Style::For }
85
- it('has right name') { expect(cop.cop_name).to eq('Style/For') }
86
- it('has right type') { expect(cop.cop_type).to eq(:style) }
87
- end
88
-
89
- context 'with lint cops' do
90
- subject(:cop) { RuboCop::Cop::Lint::Loop }
91
- it('has right name') { expect(cop.cop_name).to eq('Lint/Loop') }
92
- it('has right type') { expect(cop.cop_type).to eq(:lint) }
93
- end
94
-
95
- context 'with rails cops' do
96
- subject(:cop) { RuboCop::Cop::Rails::Validation }
97
- it('has right name') { expect(cop.cop_name).to eq('Rails/Validation') }
98
- it('has right type') { expect(cop.cop_type).to eq(:rails) }
99
- end
100
-
101
- describe 'CopStore' do
102
- context '#types' do
103
- subject { described_class.all.types }
104
- it('has types') { expect(subject.length).not_to eq(0) }
105
- it { should include :lint }
106
- it do
107
- should include :rails
108
- end
109
- it { should include :style }
110
- it 'contains every value only once' do
111
- expect(subject.length).to eq(subject.uniq.length)
112
- end
113
- end
114
- context '#with_type' do
115
- let(:types) { described_class.all.types }
116
- it 'has at least one cop per type' do
117
- types.each do |c|
118
- expect(described_class.all.with_type(c).length).to be > 0
119
- end
120
- end
121
-
122
- it 'has each cop in exactly one type' do
123
- sum = 0
124
- types.each do |c|
125
- sum += described_class.all.with_type(c).length
126
- end
127
- expect(sum).to be described_class.all.length
128
- end
129
-
130
- it 'returns 0 for an invalid type' do
131
- expect(described_class.all.with_type('x').length).to be 0
132
- end
133
- end
134
- end
135
- end