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,228 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::StringLiterals, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'configured with single quotes preferred' do
9
- let(:cop_config) { { 'EnforcedStyle' => 'single_quotes' } }
10
-
11
- it 'registers offense for double quotes when single quotes ' \
12
- 'suffice' do
13
- inspect_source(cop, ['s = "abc"',
14
- 'x = "a\\\\b"',
15
- 'y ="\\\\b"',
16
- 'z = "a\\\\"'])
17
- expect(cop.highlights).to eq(['"abc"',
18
- '"a\\\\b"',
19
- '"\\\\b"',
20
- '"a\\\\"'])
21
- expect(cop.messages)
22
- .to eq(["Prefer single-quoted strings when you don't need " \
23
- 'string interpolation or special symbols.'] * 4)
24
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' =>
25
- 'double_quotes')
26
- end
27
-
28
- it 'registers offense for correct + opposite' do
29
- inspect_source(cop, ['s = "abc"',
30
- "x = 'abc'"])
31
- expect(cop.messages)
32
- .to eq(["Prefer single-quoted strings when you don't need " \
33
- 'string interpolation or special symbols.'])
34
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
35
- end
36
-
37
- it 'accepts single quotes' do
38
- inspect_source(cop, "a = 'x'")
39
- expect(cop.offenses).to be_empty
40
- end
41
-
42
- it 'accepts single quotes in interpolation' do
43
- inspect_source(cop, %q("hello#{hash['there']}"))
44
- expect(cop.offenses).to be_empty
45
- end
46
-
47
- it 'accepts %q and %Q quotes' do
48
- inspect_source(cop, 'a = %q(x) + %Q[x]')
49
- expect(cop.offenses).to be_empty
50
- end
51
-
52
- it 'accepts % quotes' do
53
- inspect_source(cop, 'a = %(x)')
54
- expect(cop.offenses).to be_empty
55
- end
56
-
57
- it 'accepts heredocs' do
58
- inspect_source(cop,
59
- ['execute <<-SQL',
60
- ' SELECT name from users',
61
- 'SQL'])
62
-
63
- expect(cop.offenses).to be_empty
64
- end
65
-
66
- it 'accepts double quotes when they are needed' do
67
- src = ['a = "\n"',
68
- 'b = "#{encode_severity}:' \
69
- '#{sprintf(\'%3d\', line_number)}: #{m}"',
70
- 'c = "\'"',
71
- 'd = "#@test"',
72
- 'e = "#$test"',
73
- 'f = "\e"',
74
- 'g = "#@@test"']
75
- inspect_source(cop, src)
76
- expect(cop.offenses).to be_empty
77
- end
78
-
79
- it 'accepts double quotes at the start of regexp literals' do
80
- inspect_source(cop, 's = /"((?:[^\\"]|\\.)*)"/')
81
- expect(cop.offenses).to be_empty
82
- end
83
-
84
- it 'accepts double quotes with some other special symbols' do
85
- # "Substitutions in double-quoted strings"
86
- # http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html
87
- src = ['g = "\xf9"',
88
- 'copyright = "\u00A9"']
89
- inspect_source(cop, src)
90
- expect(cop.offenses).to be_empty
91
- end
92
-
93
- it 'accepts " in a %w' do
94
- inspect_source(cop, '%w(")')
95
- expect(cop.offenses).to be_empty
96
- end
97
-
98
- it 'accepts \\\\\n in a string' do # this would be: "\\\n"
99
- inspect_source(cop, '"foo \\\\\n bar"')
100
- expect(cop.offenses).to be_empty
101
- end
102
-
103
- it 'accepts double quotes in interpolation' do
104
- src = '"#{"A"}"'
105
- inspect_source(cop, src)
106
- expect(cop.offenses).to be_empty
107
- end
108
-
109
- it 'detects unneeded double quotes within concatenated string' do
110
- src = ['"#{x}" \\', '"y"']
111
- inspect_source(cop, src)
112
- expect(cop.offenses.size).to eq(1)
113
- end
114
-
115
- it 'can handle a built-in constant parsed as string' do
116
- # Parser will produce str nodes for constants such as __FILE__.
117
- src = ['if __FILE__ == $PROGRAM_NAME',
118
- 'end']
119
- inspect_source(cop, src)
120
- expect(cop.offenses).to be_empty
121
- end
122
-
123
- it 'can handle character literals' do
124
- src = 'a = ?/'
125
- inspect_source(cop, src)
126
- expect(cop.offenses).to be_empty
127
- end
128
-
129
- it 'auto-corrects " with \'' do
130
- new_source = autocorrect_source(cop, 's = "abc"')
131
- expect(new_source).to eq("s = 'abc'")
132
- end
133
- end
134
-
135
- context 'configured with double quotes preferred' do
136
- let(:cop_config) { { 'EnforcedStyle' => 'double_quotes' } }
137
-
138
- it 'registers offense for single quotes when double quotes would ' \
139
- 'be equivalent' do
140
- inspect_source(cop, "s = 'abc'")
141
- expect(cop.highlights).to eq(["'abc'"])
142
- expect(cop.messages)
143
- .to eq(['Prefer double-quoted strings unless you need ' \
144
- 'single quotes to avoid extra backslashes for ' \
145
- 'escaping.'])
146
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' =>
147
- 'single_quotes')
148
- end
149
-
150
- it 'registers offense for opposite + correct' do
151
- inspect_source(cop, ['s = "abc"',
152
- "x = 'abc'"])
153
- expect(cop.messages)
154
- .to eq(['Prefer double-quoted strings unless you need ' \
155
- 'single quotes to avoid extra backslashes for ' \
156
- 'escaping.'])
157
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
158
- end
159
-
160
- it 'accepts double quotes' do
161
- inspect_source(cop, 'a = "x"')
162
- expect(cop.offenses).to be_empty
163
- end
164
-
165
- it 'accepts single quotes in interpolation' do
166
- inspect_source(cop, %q("hello#{hash['there']}"))
167
- expect(cop.offenses).to be_empty
168
- end
169
-
170
- it 'accepts %q and %Q quotes' do
171
- inspect_source(cop, 'a = %q(x) + %Q[x]')
172
- expect(cop.offenses).to be_empty
173
- end
174
-
175
- it 'accepts % quotes' do
176
- inspect_source(cop, 'a = %(x)')
177
- expect(cop.offenses).to be_empty
178
- end
179
-
180
- it 'accepts heredocs' do
181
- inspect_source(cop,
182
- ['execute <<-SQL',
183
- ' SELECT name from users',
184
- 'SQL'])
185
-
186
- expect(cop.offenses).to be_empty
187
- end
188
-
189
- it 'accepts single quotes when they are needed' do
190
- src = ["a = '\\n'",
191
- "b = '\"'"]
192
- inspect_source(cop, src)
193
- expect(cop.offenses).to be_empty
194
- end
195
-
196
- it 'accepts single quotes at the start of regexp literals' do
197
- inspect_source(cop, "s = /'((?:[^\\']|\\.)*)'/")
198
- expect(cop.offenses).to be_empty
199
- end
200
-
201
- it "accepts ' in a %w" do
202
- inspect_source(cop, "%w(')")
203
- expect(cop.offenses).to be_empty
204
- end
205
-
206
- it 'can handle a built-in constant parsed as string' do
207
- # Parser will produce str nodes for constants such as __FILE__.
208
- src = ['if __FILE__ == $PROGRAM_NAME',
209
- 'end']
210
- inspect_source(cop, src)
211
- expect(cop.offenses).to be_empty
212
- end
213
-
214
- it "auto-corrects ' with \"" do
215
- new_source = autocorrect_source(cop, "s = 'abc'")
216
- expect(new_source).to eq('s = "abc"')
217
- end
218
- end
219
-
220
- context 'when configured with a bad value' do
221
- let(:cop_config) { { 'EnforcedStyle' => 'other' } }
222
-
223
- it 'fails' do
224
- expect { inspect_source(cop, 'a = "b"') }
225
- .to raise_error(RuntimeError)
226
- end
227
- end
228
- end
@@ -1,44 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::StructInheritance do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense when extending instance of Struct' do
9
- inspect_source(cop,
10
- ['class Person < Struct.new(:first_name, :last_name)',
11
- 'end'
12
- ])
13
- expect(cop.offenses.size).to eq(1)
14
- end
15
-
16
- it 'registers an offense when extending instance of Struct' do
17
- inspect_source(cop,
18
- ['class Person < Struct.new(:first_name, :last_name) do end',
19
- 'end'
20
- ])
21
- expect(cop.offenses).to be_empty
22
- end
23
-
24
- it 'accepts plain class' do
25
- inspect_source(cop,
26
- ['class Person',
27
- 'end'
28
- ])
29
- expect(cop.offenses).to be_empty
30
- end
31
-
32
- it 'accepts extending DelegateClass' do
33
- inspect_source(cop,
34
- ['class Person < DelegateClass(Animal)',
35
- 'end'
36
- ])
37
- expect(cop.offenses).to be_empty
38
- end
39
-
40
- it 'accepts assignment to Struct.new' do
41
- inspect_source(cop, 'Person = Struct.new(:first_name, :last_name)')
42
- expect(cop.offenses).to be_empty
43
- end
44
- end
@@ -1,37 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::SymbolArray do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for arrays of symbols', ruby: 2 do
9
- inspect_source(cop,
10
- '[:one, :two, :three]')
11
- expect(cop.offenses.size).to eq(1)
12
- end
13
-
14
- it 'does not reg an offense for array with non-syms', ruby: 2 do
15
- inspect_source(cop,
16
- '[:one, :two, "three"]')
17
- expect(cop.offenses).to be_empty
18
- end
19
-
20
- it 'does not reg an offense for array starting with %i', ruby: 2 do
21
- inspect_source(cop,
22
- '%i(one two three)')
23
- expect(cop.offenses).to be_empty
24
- end
25
-
26
- it 'does not reg an offense for array with one element', ruby: 2 do
27
- inspect_source(cop,
28
- '[:three]')
29
- expect(cop.offenses).to be_empty
30
- end
31
-
32
- it 'does nothing on Ruby 1.9', ruby: 1.9 do
33
- inspect_source(cop,
34
- '[:one, :two, :three]')
35
- expect(cop.offenses).to be_empty
36
- end
37
- end
@@ -1,100 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::SymbolProc, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- let(:cop_config) { { 'IgnoredMethods' => %w(respond_to) } }
9
-
10
- it 'registers an offense for a block with parameterless method call on ' \
11
- 'param' do
12
- inspect_source(cop, 'coll.map { |e| e.upcase }')
13
- expect(cop.offenses.size).to eq(1)
14
- expect(cop.messages)
15
- .to eq(['Pass `&:upcase` as an argument to `map` instead of a block.'])
16
- end
17
-
18
- it 'registers an offense for a block when method in body is unary -/=' do
19
- inspect_source(cop, 'something.map { |x| -x }')
20
- expect(cop.offenses.size).to eq(1)
21
- expect(cop.messages)
22
- .to eq(['Pass `&:-@` as an argument to `map` instead of a block.'])
23
- end
24
-
25
- it 'accepts method receiving another argument beside the block' do
26
- inspect_source(cop, 'File.open(file) { |f| f.readlines }')
27
-
28
- expect(cop.offenses).to be_empty
29
- end
30
-
31
- it 'accepts block with more than 1 arguments' do
32
- inspect_source(cop, 'something { |x, y| x.method }')
33
-
34
- expect(cop.offenses).to be_empty
35
- end
36
-
37
- it 'accepts lambda with 1 argument' do
38
- inspect_source(cop, '->(x) { x.method }')
39
-
40
- expect(cop.offenses).to be_empty
41
- end
42
-
43
- it 'accepts proc with 1 argument' do
44
- inspect_source(cop, 'proc { |x| x.method }')
45
-
46
- expect(cop.offenses).to be_empty
47
- end
48
-
49
- it 'accepts Proc.new with 1 argument' do
50
- inspect_source(cop, 'Proc.new { |x| x.method }')
51
-
52
- expect(cop.offenses).to be_empty
53
- end
54
-
55
- it 'accepts ignored method' do
56
- inspect_source(cop, 'respond_to { |format| format.xml }')
57
-
58
- expect(cop.offenses).to be_empty
59
- end
60
-
61
- it 'accepts block with no arguments' do
62
- inspect_source(cop, 'something { x.method }')
63
-
64
- expect(cop.offenses).to be_empty
65
- end
66
-
67
- it 'accepts empty block body' do
68
- inspect_source(cop, 'something { |x| }')
69
-
70
- expect(cop.offenses).to be_empty
71
- end
72
-
73
- it 'accepts block with more than 1 expression in body' do
74
- inspect_source(cop, 'something { |x| x.method; something_else }')
75
-
76
- expect(cop.offenses).to be_empty
77
- end
78
-
79
- it 'accepts block when method in body is not called on block arg' do
80
- inspect_source(cop, 'something { |x| y.method }')
81
-
82
- expect(cop.offenses).to be_empty
83
- end
84
-
85
- it 'autocorrects alias with symbols as proc' do
86
- corrected = autocorrect_source(cop, ['coll.map { |s| s.upcase }'])
87
- expect(corrected).to eq 'coll.map(&:upcase)'
88
- end
89
-
90
- it 'autocorrects multiple aliases with symbols as proc' do
91
- corrected = autocorrect_source(cop, ['coll.map { |s| s.upcase }' \
92
- '.map { |s| s.downcase }'])
93
- expect(corrected).to eq 'coll.map(&:upcase).map(&:downcase)'
94
- end
95
-
96
- it 'does not crash with a bare method call' do
97
- run = -> { inspect_source(cop, 'coll.map { |s| bare_method }') }
98
- expect(&run).not_to raise_error
99
- end
100
- end
@@ -1,47 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::Tab do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for a line indented with tab' do
9
- inspect_source(cop, "\tx = 0")
10
- expect(cop.offenses.size).to eq(1)
11
- end
12
-
13
- it 'registers an offense for a line indented with multiple tabs' do
14
- inspect_source(cop, "\t\t\tx = 0")
15
- expect(cop.offenses.size).to eq(1)
16
- end
17
-
18
- it 'registers an offense for a line indented with mixed whitespace' do
19
- inspect_source(cop, " \tx = 0")
20
- expect(cop.offenses.size).to eq(1)
21
- end
22
-
23
- it 'accepts a line with tab in a string' do
24
- inspect_source(cop, "(x = \"\t\")")
25
- expect(cop.offenses).to be_empty
26
- end
27
-
28
- it 'auto-corrects a line indented with tab' do
29
- new_source = autocorrect_source(cop, ["\tx = 0"])
30
- expect(new_source).to eq(' x = 0')
31
- end
32
-
33
- it 'auto-corrects a line indented with multiple tabs' do
34
- new_source = autocorrect_source(cop, ["\t\t\tx = 0"])
35
- expect(new_source).to eq(' x = 0')
36
- end
37
-
38
- it 'auto-corrects a line indented with mixed whitespace' do
39
- new_source = autocorrect_source(cop, [" \tx = 0"])
40
- expect(new_source).to eq(' x = 0')
41
- end
42
-
43
- it 'auto-corrects a line with tab in a string indented with tab' do
44
- new_source = autocorrect_source(cop, ["\t(x = \"\t\")"])
45
- expect(new_source).to eq(" (x = \"\t\")")
46
- end
47
- end