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,105 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::CommentConfig do
6
- subject(:comment_config) { described_class.new(parse_source(source)) }
7
-
8
- describe '#cop_enabled_at_line?' do
9
- let(:source) do
10
- [
11
- '# encoding: utf-8',
12
- '',
13
- '# rubocop:disable Metrics/MethodLength',
14
- 'def some_method',
15
- " puts 'foo'",
16
- 'end',
17
- '# rubocop:enable Metrics/MethodLength',
18
- '',
19
- '# rubocop:disable all',
20
- 'some_method',
21
- '# rubocop:enable all',
22
- '',
23
- "code = 'This is evil.'",
24
- 'eval(code) # rubocop:disable Lint/Eval',
25
- "puts 'This is not evil.'",
26
- '',
27
- 'def some_method',
28
- " puts 'Disabling indented single line' # rubocop:disable " \
29
- 'Metrics/LineLength',
30
- 'end',
31
- '',
32
- 'string = <<END',
33
- 'This is a string not a real comment # rubocop:disable Style/Loop',
34
- 'END',
35
- '',
36
- 'foo # rubocop:disable Style/MethodCallParentheses',
37
- '',
38
- '# rubocop:enable Lint/Void',
39
- '',
40
- '# rubocop:disable Style/For',
41
- 'foo'
42
- ]
43
- end
44
-
45
- def disabled_lines_of_cop(cop)
46
- (1..source.size).each_with_object([]) do |line_number, disabled_lines|
47
- enabled = comment_config.cop_enabled_at_line?(cop, line_number)
48
- disabled_lines << line_number unless enabled
49
- end
50
- end
51
-
52
- it 'supports disabling multiple lines with a pair of directive' do
53
- method_length_disabled_lines =
54
- disabled_lines_of_cop('Metrics/MethodLength')
55
- expected_part = (3..6).to_a
56
- expect(method_length_disabled_lines & expected_part)
57
- .to eq(expected_part)
58
- end
59
-
60
- it 'supports disabling all lines after a directive' do
61
- for_disabled_lines = disabled_lines_of_cop('Style/For')
62
- expected_part = (29..source.size).to_a
63
- expect(for_disabled_lines & expected_part)
64
- .to eq(expected_part)
65
- end
66
-
67
- it 'just ignores unpaired enabling directives' do
68
- void_disabled_lines = disabled_lines_of_cop('Lint/Void')
69
- expected_part = (27..source.size).to_a
70
- expect(void_disabled_lines & expected_part).to be_empty
71
- end
72
-
73
- it 'supports disabling single line with a directive at end of line' do
74
- eval_disabled_lines = disabled_lines_of_cop('Lint/Eval')
75
- expect(eval_disabled_lines).to include(14)
76
- expect(eval_disabled_lines).not_to include(15)
77
- end
78
-
79
- it 'handles indented single line' do
80
- line_length_disabled_lines = disabled_lines_of_cop('Metrics/LineLength')
81
- expect(line_length_disabled_lines).to include(18)
82
- expect(line_length_disabled_lines).not_to include(19)
83
- end
84
-
85
- it 'does not confuse a comment directive embedded in a string literal ' \
86
- 'with a real comment' do
87
- loop_disabled_lines = disabled_lines_of_cop('Loop')
88
- expect(loop_disabled_lines).not_to include(22)
89
- end
90
-
91
- it 'supports disabling all cops with keyword all' do
92
- expected_part = (9..10).to_a
93
-
94
- RuboCop::Cop::Cop.all.each do |cop|
95
- disabled_lines = disabled_lines_of_cop(cop)
96
- expect(disabled_lines & expected_part).to eq(expected_part)
97
- end
98
- end
99
-
100
- it 'does not confuse a cop name including "all" with all cops' do
101
- alias_disabled_lines = disabled_lines_of_cop('Alias')
102
- expect(alias_disabled_lines).not_to include(25)
103
- end
104
- end
105
- end
@@ -1,377 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::ConfigLoader do
6
- include FileHelper
7
-
8
- let(:default_config) { described_class.default_configuration }
9
-
10
- describe '.configuration_file_for', :isolated_environment do
11
- subject(:configuration_file_for) do
12
- described_class.configuration_file_for(dir_path)
13
- end
14
-
15
- context 'when no config file exists in ancestor directories' do
16
- let(:dir_path) { 'dir' }
17
- before { create_file('dir/example.rb', '') }
18
-
19
- context 'but a config file exists in home directory' do
20
- before { create_file('~/.rubocop.yml', '') }
21
-
22
- it 'returns the path to the file in home directory' do
23
- expect(configuration_file_for).to end_with('home/.rubocop.yml')
24
- end
25
- end
26
-
27
- context 'and no config file exists in home directory' do
28
- it 'falls back to the provided default file' do
29
- expect(configuration_file_for).to end_with('config/default.yml')
30
- end
31
- end
32
- end
33
-
34
- context 'when a config file exists in the parent directory' do
35
- let(:dir_path) { 'dir' }
36
-
37
- before do
38
- create_file('dir/example.rb', '')
39
- create_file('.rubocop.yml', '')
40
- end
41
-
42
- it 'returns the path to that configuration file' do
43
- expect(configuration_file_for).to end_with('work/.rubocop.yml')
44
- end
45
- end
46
-
47
- context 'when multiple config files exist in ancestor directories' do
48
- let(:dir_path) { 'dir' }
49
-
50
- before do
51
- create_file('dir/example.rb', '')
52
- create_file('dir/.rubocop.yml', '')
53
- create_file('.rubocop.yml', '')
54
- end
55
-
56
- it 'prefers closer config file' do
57
- expect(configuration_file_for).to end_with('dir/.rubocop.yml')
58
- end
59
- end
60
- end
61
-
62
- describe '.configuration_from_file', :isolated_environment do
63
- subject(:configuration_from_file) do
64
- described_class.configuration_from_file(file_path)
65
- end
66
-
67
- context 'with any config file' do
68
- let(:file_path) { '.rubocop.yml' }
69
-
70
- before do
71
- create_file(file_path, ['Style/Encoding:',
72
- ' Enabled: false'])
73
- end
74
- it 'returns a configuration inheriting from default.yml' do
75
- config = default_config['Style/Encoding'].dup
76
- config['Enabled'] = false
77
- expect(configuration_from_file)
78
- .to eql(default_config.merge('Style/Encoding' => config))
79
- end
80
- end
81
-
82
- context 'when multiple config files exist in ancestor directories' do
83
- let(:file_path) { 'dir/.rubocop.yml' }
84
-
85
- before do
86
- create_file('.rubocop.yml',
87
- ['AllCops:',
88
- ' Exclude:',
89
- ' - vendor/**'
90
- ])
91
-
92
- create_file(file_path,
93
- ['AllCops:',
94
- ' Exclude: []'
95
- ])
96
- end
97
-
98
- it 'gets AllCops/Exclude from the highest directory level' do
99
- excludes = configuration_from_file['AllCops']['Exclude']
100
- expect(excludes).to eq([File.expand_path('vendor/**')])
101
- end
102
- end
103
-
104
- context 'when a file inherits from a parent file' do
105
- let(:file_path) { 'dir/.rubocop.yml' }
106
-
107
- before do
108
- create_file('.rubocop.yml',
109
- ['AllCops:',
110
- ' Exclude:',
111
- ' - vendor/**',
112
- ' - !ruby/regexp /[A-Z]/'
113
- ])
114
-
115
- create_file(file_path, ['inherit_from: ../.rubocop.yml'])
116
- end
117
-
118
- it 'gets an absolute AllCops/Exclude' do
119
- excludes = configuration_from_file['AllCops']['Exclude']
120
- expect(excludes).to eq([File.expand_path('vendor/**'), /[A-Z]/])
121
- end
122
- end
123
-
124
- context 'when a file inherits from an empty parent file' do
125
- let(:file_path) { 'dir/.rubocop.yml' }
126
-
127
- before do
128
- create_file('.rubocop.yml', [''])
129
-
130
- create_file(file_path, ['inherit_from: ../.rubocop.yml'])
131
- end
132
-
133
- it 'does not fail to load' do
134
- expect { configuration_from_file }.not_to raise_error
135
- end
136
- end
137
-
138
- context 'when a file inherits from a sibling file' do
139
- let(:file_path) { 'dir/.rubocop.yml' }
140
-
141
- before do
142
- create_file('src/.rubocop.yml',
143
- ['AllCops:',
144
- ' Exclude:',
145
- ' - vendor/**'
146
- ])
147
-
148
- create_file(file_path, ['inherit_from: ../src/.rubocop.yml'])
149
- end
150
-
151
- it 'gets an absolute AllCops/Exclude' do
152
- excludes = configuration_from_file['AllCops']['Exclude']
153
- expect(excludes).to eq([File.expand_path('src/vendor/**')])
154
- end
155
- end
156
-
157
- context 'when a file inherits from a parent and grandparent file' do
158
- let(:file_path) { 'dir/subdir/.rubocop.yml' }
159
-
160
- before do
161
- create_file('dir/subdir/example.rb', '')
162
-
163
- create_file('.rubocop.yml',
164
- ['Metrics/LineLength:',
165
- ' Enabled: false',
166
- ' Max: 77'])
167
-
168
- create_file('dir/.rubocop.yml',
169
- ['inherit_from: ../.rubocop.yml',
170
- '',
171
- 'Metrics/MethodLength:',
172
- ' Enabled: true',
173
- ' CountComments: false',
174
- ' Max: 10'
175
- ])
176
-
177
- create_file(file_path,
178
- ['inherit_from: ../.rubocop.yml',
179
- '',
180
- 'Metrics/LineLength:',
181
- ' Enabled: true',
182
- '',
183
- 'Metrics/MethodLength:',
184
- ' Max: 5'
185
- ])
186
- end
187
-
188
- it 'returns the ancestor configuration plus local overrides' do
189
- config =
190
- default_config.merge(
191
- 'Metrics/LineLength' => {
192
- 'Description' =>
193
- default_config['Metrics/LineLength']['Description'],
194
- 'StyleGuide' =>
195
- 'https://github.com/bbatsov/ruby-style-guide#80-character-limits',
196
- 'Enabled' => true,
197
- 'Max' => 77,
198
- 'AllowURI' => true,
199
- 'URISchemes' => %w(http https)
200
- },
201
- 'Metrics/MethodLength' => {
202
- 'Description' =>
203
- default_config['Metrics/MethodLength']['Description'],
204
- 'StyleGuide' =>
205
- 'https://github.com/bbatsov/ruby-style-guide#short-methods',
206
- 'Enabled' => true,
207
- 'CountComments' => false,
208
- 'Max' => 5
209
- })
210
- expect(configuration_from_file).to eq(config)
211
- end
212
- end
213
-
214
- context 'when a file inherits from two configurations' do
215
- let(:file_path) { '.rubocop.yml' }
216
-
217
- before do
218
- create_file('example.rb', '')
219
-
220
- create_file('normal.yml',
221
- ['Metrics/MethodLength:',
222
- ' Enabled: false',
223
- ' CountComments: true',
224
- ' Max: 80'])
225
-
226
- create_file('special.yml',
227
- ['Metrics/MethodLength:',
228
- ' Enabled: false',
229
- ' Max: 200'])
230
-
231
- create_file(file_path,
232
- ['inherit_from:',
233
- ' - normal.yml',
234
- ' - special.yml',
235
- '',
236
- 'Metrics/MethodLength:',
237
- ' Enabled: true'
238
- ])
239
- end
240
-
241
- it 'returns values from the last one when possible' do
242
- expected = { 'Enabled' => true, # overridden in .rubocop.yml
243
- 'CountComments' => true, # only defined in normal.yml
244
- 'Max' => 200 } # special.yml takes precedence
245
- expect(configuration_from_file['Metrics/MethodLength'].to_set)
246
- .to be_superset(expected.to_set)
247
- end
248
- end
249
-
250
- context 'when a file inherits from an expanded path' do
251
- let(:file_path) { '.rubocop.yml' }
252
-
253
- before do
254
- create_file('~/.rubocop.yml', [''])
255
- create_file(file_path, ['inherit_from: ~/.rubocop.yml'])
256
- end
257
-
258
- it 'does not fail to load expanded path' do
259
- expect { configuration_from_file }.not_to raise_error
260
- end
261
- end
262
- end
263
-
264
- describe '.load_file', :isolated_environment do
265
- subject(:load_file) do
266
- described_class.load_file(configuration_path)
267
- end
268
-
269
- let(:configuration_path) { '.rubocop.yml' }
270
-
271
- it 'returns a configuration loaded from the passed path' do
272
- create_file(configuration_path, [
273
- 'Style/Encoding:',
274
- ' Enabled: true'
275
- ])
276
- configuration = load_file
277
- expect(configuration['Style/Encoding']).to eq(
278
- 'Enabled' => true
279
- )
280
- end
281
-
282
- it 'fails with a TypeError when loading a malformed configuration file' do
283
- create_file(configuration_path, 'This string is not a YAML hash')
284
- expect { load_file }.to raise_error(
285
- TypeError, /^Malformed configuration in .*\.rubocop\.yml$/
286
- )
287
- end
288
-
289
- it 'returns an empty configuration loaded from an empty file' do
290
- create_file(configuration_path, '')
291
- configuration = load_file
292
- expect(configuration).to eq({})
293
- end
294
- end
295
-
296
- describe '.merge' do
297
- subject(:merge) { described_class.merge(base, derived) }
298
-
299
- let(:base) do
300
- {
301
- 'AllCops' => {
302
- 'Include' => ['**/*.gemspec', '**/Rakefile'],
303
- 'Exclude' => []
304
- }
305
- }
306
- end
307
- let(:derived) do
308
- { 'AllCops' => { 'Exclude' => ['example.rb', 'exclude_*'] } }
309
- end
310
-
311
- it 'returns a recursive merge of its two arguments' do
312
- expect(merge).to eq('AllCops' => {
313
- 'Include' => ['**/*.gemspec', '**/Rakefile'],
314
- 'Exclude' => ['example.rb', 'exclude_*']
315
- })
316
- end
317
- end
318
-
319
- describe 'configuration for SymbolArray', :isolated_environment do
320
- let(:config) do
321
- config_path = described_class.configuration_file_for('.')
322
- described_class.configuration_from_file(config_path)
323
- end
324
-
325
- context 'when no config file exists for the target file' do
326
- it 'is disabled' do
327
- expect(config.cop_enabled?('Style/SymbolArray')).to be_falsey
328
- end
329
- end
330
-
331
- context 'when a config file which does not mention SymbolArray exists' do
332
- it 'is disabled' do
333
- create_file('.rubocop.yml', [
334
- 'Metrics/LineLength:',
335
- ' Max: 80'
336
- ])
337
- expect(config.cop_enabled?('Style/SymbolArray')).to be_falsey
338
- end
339
- end
340
-
341
- context 'when a config file which explicitly enables SymbolArray exists' do
342
- it 'is enabled' do
343
- create_file('.rubocop.yml', [
344
- 'Style/SymbolArray:',
345
- ' Enabled: true'
346
- ])
347
- expect(config.cop_enabled?('Style/SymbolArray')).to be_truthy
348
- end
349
- end
350
- end
351
-
352
- describe 'configuration for AssignmentInCondition' do
353
- describe 'AllowSafeAssignment' do
354
- it 'is enabled by default' do
355
- default_config = described_class.default_configuration
356
- symbol_name_config =
357
- default_config.for_cop('Lint/AssignmentInCondition')
358
- expect(symbol_name_config['AllowSafeAssignment']).to be_truthy
359
- end
360
- end
361
- end
362
-
363
- describe 'when a requirement is defined', :isolated_environment do
364
- let(:required_file_path) { './required_file.rb' }
365
-
366
- before do
367
- create_file('.rubocop.yml', ['require:', " - #{required_file_path}"])
368
- create_file(required_file_path, ['class MyClass', 'end'])
369
- end
370
-
371
- it 'requires the passed path' do
372
- config_path = described_class.configuration_file_for('.')
373
- described_class.configuration_from_file(config_path)
374
- expect(defined?(MyClass)).to be_truthy
375
- end
376
- end
377
- end