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,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::NilComparison do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for == nil' do
9
- inspect_source(cop, 'x == nil')
10
- expect(cop.offenses.size).to eq(1)
11
- expect(cop.highlights).to eq(['=='])
12
- end
13
-
14
- it 'registers an offense for === nil' do
15
- inspect_source(cop, 'x === nil')
16
- expect(cop.offenses.size).to eq(1)
17
- expect(cop.highlights).to eq(['==='])
18
- end
19
-
20
- it 'autocorrects by replacing == nil with .nil?' do
21
- corrected = autocorrect_source(cop, 'x == nil')
22
- expect(corrected).to eq 'x.nil?'
23
- end
24
-
25
- it 'autocorrects by replacing === nil with .nil?' do
26
- corrected = autocorrect_source(cop, 'x === nil')
27
- expect(corrected).to eq 'x.nil?'
28
- end
29
- end
@@ -1,132 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::NonNilCheck, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'when not allowing semantic changes' do
9
- let(:cop_config) do
10
- {
11
- 'IncludeSemanticChanges' => false
12
- }
13
- end
14
-
15
- it 'registers an offense for != nil' do
16
- inspect_source(cop, 'x != nil')
17
- expect(cop.offenses.size).to eq(1)
18
- expect(cop.highlights).to eq(['!='])
19
- expect(cop.messages)
20
- .to eq(['Prefer `!expression.nil?` over `expression != nil`.'])
21
- end
22
-
23
- it 'does not register an offense for != 0' do
24
- inspect_source(cop, 'x != 0')
25
- expect(cop.offenses).to be_empty
26
- end
27
-
28
- it 'does not register an offense for !x.nil?' do
29
- inspect_source(cop, '!x.nil?')
30
- expect(cop.offenses).to be_empty
31
- end
32
-
33
- it 'does not register an offense for not x.nil?' do
34
- inspect_source(cop, 'not x.nil?')
35
- expect(cop.offenses).to be_empty
36
- end
37
-
38
- it 'does not register an offense if only expression in predicate' do
39
- inspect_source(cop, ['def signed_in?',
40
- ' !current_user.nil?',
41
- 'end'])
42
- expect(cop.offenses).to be_empty
43
- end
44
-
45
- it 'does not register an offense if only expression in class predicate' do
46
- inspect_source(cop, ['def Test.signed_in?',
47
- ' current_user != nil',
48
- 'end'])
49
- expect(cop.offenses).to be_empty
50
- end
51
-
52
- it 'does not register an offense if last expression in predicate' do
53
- inspect_source(cop, ['def signed_in?',
54
- ' something',
55
- ' current_user != nil',
56
- 'end'])
57
- expect(cop.offenses).to be_empty
58
- end
59
-
60
- it 'does not register an offense if last expression in class predicate' do
61
- inspect_source(cop, ['def Test.signed_in?',
62
- ' something',
63
- ' current_user != nil',
64
- 'end'])
65
- expect(cop.offenses).to be_empty
66
- end
67
-
68
- it 'autocorrects by changing `!= nil` to `!x.nil?`' do
69
- corrected = autocorrect_source(cop, 'x != nil')
70
- expect(corrected).to eq '!x.nil?'
71
- end
72
-
73
- it 'does not autocorrect by removing non-nil (!x.nil?) check' do
74
- corrected = autocorrect_source(cop, '!x.nil?')
75
- expect(corrected).to eq '!x.nil?'
76
- end
77
-
78
- it 'does not blow up when autocorrecting implicit receiver' do
79
- corrected = autocorrect_source(cop, '!nil?')
80
- expect(corrected).to eq '!nil?'
81
- end
82
- end
83
-
84
- context 'when allowing semantic changes' do
85
- subject(:cop) { described_class.new(config) }
86
-
87
- let(:cop_config) do
88
- {
89
- 'IncludeSemanticChanges' => true
90
- }
91
- end
92
-
93
- it 'registers an offense for `!x.nil?`' do
94
- inspect_source(cop, '!x.nil?')
95
- expect(cop.offenses.size).to eq(1)
96
- expect(cop.messages)
97
- .to eq(['Explicit non-nil checks are usually redundant.'])
98
- expect(cop.highlights).to eq(['!x.nil?'])
99
- end
100
-
101
- it 'does not register an offense for `x.nil?`' do
102
- inspect_source(cop, 'x.nil?')
103
- expect(cop.offenses).to be_empty
104
- end
105
-
106
- it 'does not register an offense for `!x`' do
107
- inspect_source(cop, '!x')
108
- expect(cop.offenses).to be_empty
109
- end
110
-
111
- it 'registers an offense for `not x.nil?`' do
112
- inspect_source(cop, 'not x.nil?')
113
- expect(cop.offenses.size).to eq(1)
114
- expect(cop.highlights).to eq(['not x.nil?'])
115
- end
116
-
117
- it 'autocorrects by changing `x != nil` to `x`' do
118
- corrected = autocorrect_source(cop, 'x != nil')
119
- expect(corrected).to eq 'x'
120
- end
121
-
122
- it 'autocorrects by changing `!x.nil?` to `x`' do
123
- corrected = autocorrect_source(cop, '!x.nil?')
124
- expect(corrected).to eq 'x'
125
- end
126
-
127
- it 'does not blow up when autocorrecting implicit receiver' do
128
- corrected = autocorrect_source(cop, '!nil?')
129
- expect(corrected).to eq 'self'
130
- end
131
- end
132
- end
@@ -1,28 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::Not do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for not' do
9
- inspect_source(cop, 'not test')
10
- expect(cop.offenses.size).to eq(1)
11
- end
12
-
13
- it 'does not register an offense for !' do
14
- inspect_source(cop, '!test')
15
- expect(cop.offenses).to be_empty
16
- end
17
-
18
- it 'auto-corrects "not" with !' do
19
- new_source = autocorrect_source(cop, 'x = 10 if not y')
20
- expect(new_source).to eq('x = 10 if !y')
21
- end
22
-
23
- it 'leaves "not" as is if auto-correction changes the meaning' do
24
- src = 'not x < y'
25
- new_source = autocorrect_source(cop, src)
26
- expect(new_source).to eq(src)
27
- end
28
- end
@@ -1,80 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::NumericLiterals, :config do
6
- subject(:cop) { described_class.new(config) }
7
- let(:cop_config) { { 'MinDigits' => 5 } }
8
-
9
- it 'registers an offense for a long undelimited integer' do
10
- inspect_source(cop, 'a = 12345')
11
- expect(cop.offenses.size).to eq(1)
12
- expect(cop.config_to_allow_offenses).to eq('MinDigits' => 6)
13
- end
14
-
15
- it 'registers an offense for a float with a long undelimited integer part' do
16
- inspect_source(cop, 'a = 123456.789')
17
- expect(cop.offenses.size).to eq(1)
18
- expect(cop.config_to_allow_offenses).to eq('MinDigits' => 7)
19
- end
20
-
21
- it 'registers an offense for an integer with misplaced underscore' do
22
- inspect_source(cop, 'a = 123_456_78_90_00')
23
- expect(cop.offenses.size).to eq(1)
24
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
25
- end
26
-
27
- it 'accepts long numbers with underscore' do
28
- inspect_source(cop, ['a = 123_456',
29
- 'b = 123_456.55'])
30
- expect(cop.messages).to be_empty
31
- end
32
-
33
- it 'accepts a short integer without underscore' do
34
- inspect_source(cop, 'a = 123')
35
- expect(cop.messages).to be_empty
36
- end
37
-
38
- it 'does not count a leading minus sign as a digit' do
39
- inspect_source(cop, 'a = -1230')
40
- expect(cop.messages).to be_empty
41
- end
42
-
43
- it 'accepts short numbers without underscore' do
44
- inspect_source(cop, ['a = 123',
45
- 'b = 123.456'])
46
- expect(cop.messages).to be_empty
47
- end
48
-
49
- it 'ignores non-decimal literals' do
50
- inspect_source(cop, ['a = 0b1010101010101',
51
- 'b = 01717171717171',
52
- 'c = 0xab11111111bb'])
53
- expect(cop.offenses).to be_empty
54
- end
55
-
56
- it 'autocorrects a long integer offense' do
57
- corrected = autocorrect_source(cop, ['a = 123456'])
58
- expect(corrected).to eq 'a = 123_456'
59
- end
60
-
61
- it 'autocorrects an integer with misplaced underscore' do
62
- corrected = autocorrect_source(cop, ['a = 123_456_78_90_00'])
63
- expect(corrected).to eq 'a = 123_456_789_000'
64
- end
65
-
66
- it 'autocorrects negative numbers' do
67
- corrected = autocorrect_source(cop, ['a = -123456'])
68
- expect(corrected).to eq 'a = -123_456'
69
- end
70
-
71
- it 'autocorrects floating-point numbers' do
72
- corrected = autocorrect_source(cop, ['a = 123456.78'])
73
- expect(corrected).to eq 'a = 123_456.78'
74
- end
75
-
76
- it 'autocorrects negative floating-point numbers' do
77
- corrected = autocorrect_source(cop, ['a = -123456.78'])
78
- expect(corrected).to eq 'a = -123_456.78'
79
- end
80
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::OneLineConditional do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for one line if/then/end' do
9
- inspect_source(cop, 'if cond then run else dont end')
10
- expect(cop.messages).to eq(['Favor the ternary operator (?:)' \
11
- ' over if/then/else/end constructs.'])
12
- end
13
- end
@@ -1,85 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::OpMethod do
6
- subject(:cop) { described_class.new }
7
-
8
- [:+, :eql?, :equal?].each do |op|
9
- it "registers an offense for #{op} with arg not named other" do
10
- inspect_source(cop,
11
- ["def #{op}(another)",
12
- ' another',
13
- 'end'])
14
- expect(cop.offenses.size).to eq(1)
15
- expect(cop.messages)
16
- .to eq(["When defining the `#{op}` operator, " \
17
- 'name its argument `other`.'])
18
- end
19
- end
20
-
21
- it 'works properly even if the argument not surrounded with braces' do
22
- inspect_source(cop,
23
- ['def + another',
24
- ' another',
25
- 'end'])
26
- expect(cop.offenses.size).to eq(1)
27
- expect(cop.messages)
28
- .to eq(['When defining the `+` operator, name its argument `other`.'])
29
- end
30
-
31
- it 'does not register an offense for arg named other' do
32
- inspect_source(cop,
33
- ['def +(other)',
34
- ' other',
35
- 'end'])
36
- expect(cop.offenses).to be_empty
37
- end
38
-
39
- it 'does not register an offense for arg named _other' do
40
- inspect_source(cop,
41
- ['def <=>(_other)',
42
- ' 0',
43
- 'end'])
44
- expect(cop.offenses).to be_empty
45
- end
46
-
47
- it 'does not register an offense for []' do
48
- inspect_source(cop,
49
- ['def [](index)',
50
- ' other',
51
- 'end'])
52
- expect(cop.offenses).to be_empty
53
- end
54
-
55
- it 'does not register an offense for []=' do
56
- inspect_source(cop,
57
- ['def []=(index, value)',
58
- ' other',
59
- 'end'])
60
- expect(cop.offenses).to be_empty
61
- end
62
-
63
- it 'does not register an offense for <<' do
64
- inspect_source(cop,
65
- ['def <<(cop)',
66
- ' other',
67
- 'end'])
68
- expect(cop.offenses).to be_empty
69
- end
70
-
71
- it 'does not register an offense for non binary operators' do
72
- inspect_source(cop,
73
- ['def -@', # Unary minus
74
- 'end',
75
- '',
76
- # This + is not a unary operator. It can only be
77
- # called with dot notation.
78
- 'def +',
79
- 'end',
80
- '',
81
- 'def *(a, b)', # Quite strange, but legal ruby.
82
- 'end'])
83
- expect(cop.offenses).to be_empty
84
- end
85
- end
@@ -1,161 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::ParenthesesAroundCondition, :config do
6
- subject(:cop) { described_class.new(config) }
7
- let(:cop_config) { { 'AllowSafeAssignment' => true } }
8
-
9
- it 'registers an offense for parentheses around condition' do
10
- inspect_source(cop, ['if (x > 10)',
11
- 'elsif (x < 3)',
12
- 'end',
13
- 'unless (x > 10)',
14
- 'end',
15
- 'while (x > 10)',
16
- 'end',
17
- 'until (x > 10)',
18
- 'end',
19
- 'x += 1 if (x < 10)',
20
- 'x += 1 unless (x < 10)',
21
- 'x += 1 until (x < 10)',
22
- 'x += 1 while (x < 10)'
23
- ])
24
- expect(cop.offenses.size).to eq(9)
25
- expect(cop.messages.first)
26
- .to eq("Don't use parentheses around the condition of an `if`.")
27
- expect(cop.messages.last)
28
- .to eq("Don't use parentheses around the condition of a `while`.")
29
- end
30
-
31
- it 'accepts parentheses if there is no space between the keyword and (.' do
32
- inspect_source(cop, ['if(x > 5) then something end',
33
- 'do_something until(x > 5)'])
34
- expect(cop.offenses).to be_empty
35
- end
36
-
37
- it 'auto-corrects parentheses around condition' do
38
- corrected = autocorrect_source(cop, ['if (x > 10)',
39
- 'elsif (x < 3)',
40
- 'end',
41
- 'unless (x > 10)',
42
- 'end',
43
- 'while (x > 10)',
44
- 'end',
45
- 'until (x > 10)',
46
- 'end',
47
- 'x += 1 if (x < 10)',
48
- 'x += 1 unless (x < 10)',
49
- 'x += 1 while (x < 10)',
50
- 'x += 1 until (x < 10)'
51
- ])
52
- expect(corrected).to eq ['if x > 10',
53
- 'elsif x < 3',
54
- 'end',
55
- 'unless x > 10',
56
- 'end',
57
- 'while x > 10',
58
- 'end',
59
- 'until x > 10',
60
- 'end',
61
- 'x += 1 if x < 10',
62
- 'x += 1 unless x < 10',
63
- 'x += 1 while x < 10',
64
- 'x += 1 until x < 10'
65
- ].join("\n")
66
- end
67
-
68
- it 'accepts condition without parentheses' do
69
- inspect_source(cop, ['if x > 10',
70
- 'end',
71
- 'unless x > 10',
72
- 'end',
73
- 'while x > 10',
74
- 'end',
75
- 'until x > 10',
76
- 'end',
77
- 'x += 1 if x < 10',
78
- 'x += 1 unless x < 10',
79
- 'x += 1 while x < 10',
80
- 'x += 1 until x < 10'
81
- ])
82
- expect(cop.offenses).to be_empty
83
- end
84
-
85
- it 'accepts parentheses around condition in a ternary' do
86
- inspect_source(cop, '(a == 0) ? b : a')
87
- expect(cop.offenses).to be_empty
88
- end
89
-
90
- it 'is not confused by leading parenthesis in subexpression' do
91
- inspect_source(cop, '(a > b) && other ? one : two')
92
- expect(cop.offenses).to be_empty
93
- end
94
-
95
- it 'is not confused by unbalanced parentheses' do
96
- inspect_source(cop, ['if (a + b).c()',
97
- 'end'])
98
- expect(cop.offenses).to be_empty
99
- end
100
-
101
- %w(rescue if unless while until).each do |op|
102
- it "allows parens if the condition node is a modifier #{op} op" do
103
- inspect_source(cop, ["if (something #{op} top)",
104
- 'end'])
105
- expect(cop.offenses).to be_empty
106
- end
107
- end
108
-
109
- it 'does not blow up when the condition is a ternary op' do
110
- inspect_source(cop, 'x if (a ? b : c)')
111
- expect(cop.offenses.size).to eq(1)
112
- end
113
-
114
- context 'safe assignment is allowed' do
115
- it 'accepts variable assignment in condition surrounded with parentheses' do
116
- inspect_source(cop,
117
- ['if (test = 10)',
118
- 'end'
119
- ])
120
- expect(cop.offenses).to be_empty
121
- end
122
-
123
- it 'accepts element assignment in condition surrounded with parentheses' do
124
- inspect_source(cop,
125
- ['if (test[0] = 10)',
126
- 'end'
127
- ])
128
- expect(cop.offenses).to be_empty
129
- end
130
-
131
- it 'accepts setter in condition surrounded with parentheses' do
132
- inspect_source(cop,
133
- ['if (self.test = 10)',
134
- 'end'
135
- ])
136
- expect(cop.offenses).to be_empty
137
- end
138
- end
139
-
140
- context 'safe assignment is not allowed' do
141
- let(:cop_config) { { 'AllowSafeAssignment' => false } }
142
-
143
- it 'does not accept variable assignment in condition surrounded with ' \
144
- 'parentheses' do
145
- inspect_source(cop,
146
- ['if (test = 10)',
147
- 'end'
148
- ])
149
- expect(cop.offenses.size).to eq(1)
150
- end
151
-
152
- it 'does not accept element assignment in condition surrounded with ' \
153
- 'parentheses' do
154
- inspect_source(cop,
155
- ['if (test[0] = 10)',
156
- 'end'
157
- ])
158
- expect(cop.offenses.size).to eq(1)
159
- end
160
- end
161
- end