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,122 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
- require 'rubocop/rake_task'
5
-
6
- describe RuboCop::RakeTask do
7
- describe 'defining tasks' do
8
- it 'creates a rubocop task' do
9
- RuboCop::RakeTask.new
10
-
11
- expect(Rake::Task.task_defined?(:rubocop)).to be true
12
- end
13
-
14
- it 'creates a rubocop:auto_correct task' do
15
- RuboCop::RakeTask.new
16
-
17
- expect(Rake::Task.task_defined?('rubocop:auto_correct')).to be true
18
- end
19
-
20
- it 'creates a named task' do
21
- RuboCop::RakeTask.new(:lint_lib)
22
-
23
- expect(Rake::Task.task_defined?(:lint_lib)).to be true
24
- end
25
-
26
- it 'creates an auto_correct task for the named task' do
27
- RuboCop::RakeTask.new(:lint_lib)
28
-
29
- expect(Rake::Task.task_defined?('lint_lib:auto_correct')).to be true
30
- end
31
- end
32
-
33
- describe 'running tasks' do
34
- before(:each) do
35
- $stdout = StringIO.new
36
- $stderr = StringIO.new
37
- Rake::Task['rubocop'].clear if Rake::Task.task_defined?('rubocop')
38
- end
39
-
40
- after(:each) do
41
- $stdout = STDOUT
42
- $stderr = STDERR
43
- end
44
-
45
- it 'runs with default options' do
46
- RuboCop::RakeTask.new
47
-
48
- cli = double('cli', run: 0)
49
- allow(RuboCop::CLI).to receive(:new) { cli }
50
- expect(cli).to receive(:run).with(['--format', 'progress'])
51
-
52
- Rake::Task['rubocop'].execute
53
- end
54
-
55
- it 'runs with specified options if a block is given' do
56
- RuboCop::RakeTask.new do |task|
57
- task.patterns = ['lib/**/*.rb']
58
- task.formatters = ['files']
59
- task.fail_on_error = false
60
- task.options = ['--display-cop-names']
61
- task.verbose = false
62
- end
63
-
64
- cli = double('cli', run: 0)
65
- allow(RuboCop::CLI).to receive(:new) { cli }
66
- options = ['--format', 'files', '--display-cop-names', 'lib/**/*.rb']
67
- expect(cli).to receive(:run).with(options)
68
-
69
- Rake::Task['rubocop'].execute
70
- end
71
-
72
- it 'will not error when result is not 0 and fail_on_error is false' do
73
- RuboCop::RakeTask.new do |task|
74
- task.fail_on_error = false
75
- end
76
-
77
- cli = double('cli', run: 1)
78
- allow(RuboCop::CLI).to receive(:new) { cli }
79
-
80
- expect { Rake::Task['rubocop'].execute }.to_not raise_error
81
- end
82
-
83
- it 'exits when result is not 0 and fail_on_error is true' do
84
- RuboCop::RakeTask.new
85
-
86
- cli = double('cli', run: 1)
87
- allow(RuboCop::CLI).to receive(:new) { cli }
88
-
89
- expect { Rake::Task['rubocop'].execute }.to raise_error(SystemExit)
90
- end
91
-
92
- context 'auto_correct' do
93
- it 'runs with --auto-correct' do
94
- RuboCop::RakeTask.new
95
-
96
- cli = double('cli', run: 0)
97
- allow(RuboCop::CLI).to receive(:new) { cli }
98
- options = ['--auto-correct', '--format', 'progress']
99
- expect(cli).to receive(:run).with(options)
100
-
101
- Rake::Task['rubocop:auto_correct'].execute
102
- end
103
-
104
- it 'runs with with the options that were passed to its parent task' do
105
- RuboCop::RakeTask.new do |task|
106
- task.patterns = ['lib/**/*.rb']
107
- task.formatters = ['files']
108
- task.fail_on_error = false
109
- task.options = ['-D']
110
- task.verbose = false
111
- end
112
-
113
- cli = double('cli', run: 0)
114
- allow(RuboCop::CLI).to receive(:new) { cli }
115
- options = ['--auto-correct', '--format', 'files', '-D', 'lib/**/*.rb']
116
- expect(cli).to receive(:run).with(options)
117
-
118
- Rake::Task['rubocop:auto_correct'].execute
119
- end
120
- end
121
- end
122
- end
@@ -1,99 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- module RuboCop
6
- class Runner
7
- attr_writer :errors # Needed only for testing.
8
- end
9
- end
10
-
11
- describe RuboCop::Runner, :isolated_environment do
12
- include FileHelper
13
-
14
- let(:formatter_output_path) { 'formatter_output.txt' }
15
- let(:formatter_output) { File.read(formatter_output_path) }
16
-
17
- before do
18
- create_file('example.rb', source)
19
- end
20
-
21
- describe '#run' do
22
- let(:options) { { formatters: [['progress', formatter_output_path]] } }
23
- subject(:runner) { described_class.new(options, RuboCop::ConfigStore.new) }
24
- context 'if there are no offenses in inspected files' do
25
- let(:source) { <<-END.strip_indent }
26
- # coding: utf-8
27
- def valid_code
28
- end
29
- END
30
-
31
- it 'returns true' do
32
- expect(runner.run([])).to be true
33
- end
34
- end
35
-
36
- context 'if there is an offense in an inspected file' do
37
- let(:source) { <<-END.strip_indent }
38
- # coding: utf-8
39
- def INVALID_CODE
40
- end
41
- END
42
-
43
- it 'returns false' do
44
- expect(runner.run([])).to be false
45
- end
46
-
47
- it 'sends the offense to a formatter' do
48
- runner.run([])
49
- expect(formatter_output).to eq <<-END.strip_indent
50
- Inspecting 1 file
51
- C
52
-
53
- Offenses:
54
-
55
- example.rb:2:5: C: Use snake_case for method names.
56
- def INVALID_CODE
57
- ^^^^^^^^^^^^
58
-
59
- 1 file inspected, 1 offense detected
60
- END
61
- end
62
- end
63
- end
64
-
65
- describe '#run with cops autocorrecting each-other' do
66
- let(:options) do
67
- {
68
- auto_correct: true,
69
- formatters: [['progress', formatter_output_path]]
70
- }
71
- end
72
-
73
- subject(:runner) do
74
- runner_class = Class.new(RuboCop::Runner) do
75
- def mobilized_cop_classes(_config)
76
- [
77
- RuboCop::Cop::Test::ClassMustBeAModuleCop,
78
- RuboCop::Cop::Test::ModuleMustBeAClassCop
79
- ]
80
- end
81
- end
82
- runner_class.new(options, RuboCop::ConfigStore.new)
83
- end
84
-
85
- context 'if there is an offense in an inspected file' do
86
- let(:source) { <<-END.strip_indent }
87
- # coding: utf-8
88
- class Klass
89
- end
90
- END
91
-
92
- it 'aborts because of an infinite loop' do
93
- expect do
94
- runner.run([])
95
- end.to raise_error RuboCop::Runner::InfiniteCorrectionLoop
96
- end
97
- end
98
- end
99
- end
@@ -1,46 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- module RuboCop
6
- module StringUtil
7
- describe Jaro do
8
- {
9
- %w(foo foo) => 1.000,
10
- %w(foo bar) => 0.000,
11
- %w(martha marhta) => 0.944,
12
- %w(dwayne duane) => 0.822
13
- }.each do |strings, expected|
14
- context "with #{strings.first.inspect} and #{strings.last.inspect}" do
15
- subject(:distance) { Jaro.distance(*strings) }
16
-
17
- it "returns #{expected}" do
18
- expect(distance).to be_within(0.001).of(expected)
19
- end
20
- end
21
- end
22
- end
23
-
24
- describe JaroWinkler do
25
- # These samples are derived from Apache Lucene project.
26
- # https://github.com/apache/lucene-solr/blob/lucene_solr_4_9_0/lucene/suggest/src/test/org/apache/lucene/search/spell/TestJaroWinklerDistance.java
27
- {
28
- %w(al al) => 1.000,
29
- %w(martha marhta) => 0.961,
30
- %w(jones johnson) => 0.832,
31
- %w(abcvwxyz cabvwxyz) => 0.958,
32
- %w(dwayne duane) => 0.840,
33
- %w(dixon dicksonx) => 0.813,
34
- %w(fvie ten) => 0.000
35
- }.each do |strings, expected|
36
- context "with #{strings.first.inspect} and #{strings.last.inspect}" do
37
- subject(:distance) { JaroWinkler.distance(*strings) }
38
-
39
- it "returns #{expected}" do
40
- expect(distance).to be_within(0.001).of(expected)
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,245 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::TargetFinder, :isolated_environment do
6
- include FileHelper
7
-
8
- subject(:target_finder) do
9
- described_class.new(config_store, options)
10
- end
11
- let(:config_store) { RuboCop::ConfigStore.new }
12
- let(:options) { { force_exclusion: force_exclusion, debug: debug } }
13
- let(:force_exclusion) { false }
14
- let(:debug) { false }
15
-
16
- before do
17
- create_file('dir1/ruby1.rb', '# encoding: utf-8')
18
- create_file('dir1/ruby2.rb', '# encoding: utf-8')
19
- create_file('dir1/file.txt', '# encoding: utf-8')
20
- create_file('dir1/file', '# encoding: utf-8')
21
- create_file('dir1/executable', '#!/usr/bin/env ruby')
22
- create_file('dir2/ruby3.rb', '# encoding: utf-8')
23
- end
24
-
25
- describe '#find' do
26
- let(:found_files) { target_finder.find(args) }
27
- let(:found_basenames) { found_files.map { |f| File.basename(f) } }
28
- let(:args) { [] }
29
-
30
- it 'returns absolute paths' do
31
- expect(found_files).not_to be_empty
32
- found_files.each do |file|
33
- expect(file).to start_with('/')
34
- end
35
- end
36
-
37
- context 'when no argument is passed' do
38
- let(:args) { [] }
39
-
40
- it 'finds files under the current directory' do
41
- Dir.chdir('dir1') do
42
- expect(found_files).not_to be_empty
43
- found_files.each do |file|
44
- expect(file).to include('/dir1/')
45
- expect(file).not_to include('/dir2/')
46
- end
47
- end
48
- end
49
- end
50
-
51
- context 'when a directory path is passed' do
52
- let(:args) { ['../dir2'] }
53
-
54
- it 'finds files under the specified directory' do
55
- Dir.chdir('dir1') do
56
- expect(found_files).not_to be_empty
57
- found_files.each do |file|
58
- expect(file).to include('/dir2/')
59
- expect(file).not_to include('/dir1/')
60
- end
61
- end
62
- end
63
- end
64
-
65
- context 'when a file is passed' do
66
- let(:args) { ['dir2/file'] }
67
-
68
- it 'picks the file' do
69
- expect(found_basenames).to eq(['file'])
70
- end
71
- end
72
-
73
- context 'when a pattern is passed' do
74
- let(:args) { ['dir1/*2.rb'] }
75
-
76
- it 'finds files which match the pattern' do
77
- expect(found_basenames).to eq(['ruby2.rb'])
78
- end
79
- end
80
-
81
- context 'when same paths are passed' do
82
- let(:args) { %w(dir1 dir1) }
83
-
84
- it 'does not return duplicated file paths' do
85
- count = found_basenames.count { |f| f == 'ruby1.rb' }
86
- expect(count).to eq(1)
87
- end
88
- end
89
-
90
- context 'when some paths are specified in the configuration Exclude ' \
91
- 'and they are explicitly passed as arguments' do
92
- before do
93
- create_file('.rubocop.yml', [
94
- 'AllCops:',
95
- ' Exclude:',
96
- ' - dir1/ruby1.rb',
97
- " - 'dir2/*'"
98
- ])
99
-
100
- create_file('dir1/.rubocop.yml', [
101
- 'AllCops:',
102
- ' Exclude:',
103
- ' - executable'
104
- ])
105
- end
106
-
107
- let(:args) do
108
- ['dir1/ruby1.rb', 'dir1/ruby2.rb', 'dir1/exe*', 'dir2/ruby3.rb']
109
- end
110
-
111
- context 'normally' do
112
- it 'does not exclude them' do
113
- expect(found_basenames)
114
- .to eq(['ruby1.rb', 'ruby2.rb', 'executable', 'ruby3.rb'])
115
- end
116
- end
117
-
118
- context "when it's forced to adhere file exclusion configuration" do
119
- let(:force_exclusion) { true }
120
-
121
- it 'excludes them' do
122
- expect(found_basenames).to eq(['ruby2.rb'])
123
- end
124
- end
125
- end
126
- end
127
-
128
- describe '#find_files' do
129
- let(:found_files) { target_finder.find_files(base_dir, flags) }
130
- let(:found_basenames) { found_files.map { |f| File.basename(f) } }
131
- let(:base_dir) { Dir.pwd }
132
- let(:flags) { 0 }
133
-
134
- it 'does not search excluded top level directories' do
135
- config = double('config')
136
- exclude_property = { 'Exclude' => [File.expand_path('dir1/**/*')] }
137
- allow(config).to receive(:[]).with('AllCops').and_return(exclude_property)
138
- allow(config_store).to receive(:for).and_return(config)
139
-
140
- expect(found_basenames).not_to include('ruby1.rb')
141
- expect(found_basenames).to include('ruby3.rb')
142
- end
143
-
144
- it 'works also if a folder is named ","' do
145
- create_file(',/ruby4.rb', '# encoding: utf-8')
146
-
147
- config = double('config')
148
- exclude_property = { 'Exclude' => [File.expand_path('dir1/**/*')] }
149
- allow(config).to receive(:[]).with('AllCops').and_return(exclude_property)
150
- allow(config_store).to receive(:for).and_return(config)
151
-
152
- expect(found_basenames).not_to include('ruby1.rb')
153
- expect(found_basenames).to include('ruby3.rb')
154
- expect(found_basenames).to include('ruby4.rb')
155
- end
156
- end
157
-
158
- describe '#target_files_in_dir' do
159
- let(:found_files) { target_finder.target_files_in_dir(base_dir) }
160
- let(:found_basenames) { found_files.map { |f| File.basename(f) } }
161
- let(:base_dir) { '.' }
162
-
163
- it 'picks files with extension .rb' do
164
- rb_file_count = found_files.count { |f| f.end_with?('.rb') }
165
- expect(rb_file_count).to eq(3)
166
- end
167
-
168
- it 'picks ruby executable files with no extension' do
169
- expect(found_basenames).to include('executable')
170
- end
171
-
172
- it 'does not pick files with no extension and no ruby shebang' do
173
- expect(found_basenames).not_to include('file')
174
- end
175
-
176
- it 'picks ruby executable files with no extension' do
177
- expect(found_basenames).to include('executable')
178
- end
179
-
180
- it 'does not pick directories' do
181
- found_basenames = found_files.map { |f| File.basename(f) }
182
- expect(found_basenames).not_to include('dir1')
183
- end
184
-
185
- it 'picks files specified to be included in config' do
186
- config = double('config')
187
- allow(config).to receive(:file_to_include?) do |file|
188
- File.basename(file) == 'file'
189
- end
190
- allow(config)
191
- .to receive(:[]).with('AllCops').and_return('Exclude' => [])
192
- allow(config).to receive(:file_to_exclude?).and_return(false)
193
- allow(config_store).to receive(:for).and_return(config)
194
-
195
- expect(found_basenames).to include('file')
196
- end
197
-
198
- it 'does not pick files specified to be excluded in config' do
199
- config = double('config').as_null_object
200
- allow(config)
201
- .to receive(:[]).with('AllCops').and_return('Exclude' => [])
202
- allow(config).to receive(:file_to_include?).and_return(false)
203
- allow(config).to receive(:file_to_exclude?) do |file|
204
- File.basename(file) == 'ruby2.rb'
205
- end
206
- allow(config_store).to receive(:for).and_return(config)
207
-
208
- expect(found_basenames).not_to include('ruby2.rb')
209
- end
210
-
211
- context 'when an exception is raised while reading file' do
212
- around do |example|
213
- original_stderr = $stderr
214
- $stderr = StringIO.new
215
- begin
216
- example.run
217
- ensure
218
- $stderr = original_stderr
219
- end
220
- end
221
-
222
- before do
223
- allow_any_instance_of(File).to receive(:readline).and_raise(EOFError)
224
- end
225
-
226
- context 'and debug mode is enabled' do
227
- let(:debug) { true }
228
-
229
- it 'outputs error message' do
230
- found_files
231
- expect($stderr.string).to include('Unprocessable file')
232
- end
233
- end
234
-
235
- context 'and debug mode is disabled' do
236
- let(:debug) { false }
237
-
238
- it 'outputs nothing' do
239
- found_files
240
- expect($stderr.string).to be_empty
241
- end
242
- end
243
- end
244
- end
245
- end