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,184 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::FormatString, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'when enforced style is sprintf' do
9
- let(:cop_config) { { 'EnforcedStyle' => 'sprintf' } }
10
- it 'registers an offense for a string followed by something' do
11
- inspect_source(cop,
12
- 'puts "%d" % 10')
13
- expect(cop.offenses.size).to eq(1)
14
- expect(cop.messages)
15
- .to eq(['Favor `sprintf` over `String#%`.'])
16
- end
17
-
18
- it 'registers an offense for something followed by an array' do
19
- inspect_source(cop,
20
- 'puts x % [10, 11]')
21
- expect(cop.offenses.size).to eq(1)
22
- expect(cop.messages)
23
- .to eq(['Favor `sprintf` over `String#%`.'])
24
- end
25
-
26
- it 'does not register an offense for numbers' do
27
- inspect_source(cop,
28
- 'puts 10 % 4')
29
- expect(cop.offenses).to be_empty
30
- end
31
-
32
- it 'does not register an offense for ambiguous cases' do
33
- inspect_source(cop,
34
- 'puts x % 4')
35
- expect(cop.offenses).to be_empty
36
-
37
- inspect_source(cop,
38
- 'puts x % Y')
39
- expect(cop.offenses).to be_empty
40
- end
41
-
42
- it 'works if the first operand contains embedded expressions' do
43
- inspect_source(cop,
44
- 'puts "#{x * 5} %d #{@test}" % 10')
45
- expect(cop.offenses.size).to eq(1)
46
- expect(cop.messages)
47
- .to eq(['Favor `sprintf` over `String#%`.'])
48
- end
49
-
50
- it 'registers an offense for format' do
51
- inspect_source(cop,
52
- 'format(something, a, b)')
53
- expect(cop.offenses.size).to eq(1)
54
- expect(cop.messages)
55
- .to eq(['Favor `sprintf` over `format`.'])
56
- end
57
-
58
- it 'registers an offense for format with 2 arguments' do
59
- inspect_source(cop,
60
- 'format("%X", 123)')
61
- expect(cop.offenses.size).to eq(1)
62
- expect(cop.messages)
63
- .to eq(['Favor `sprintf` over `format`.'])
64
- end
65
- end
66
-
67
- context 'when enforced style is format' do
68
- let(:cop_config) { { 'EnforcedStyle' => 'format' } }
69
-
70
- it 'registers an offense for a string followed by something' do
71
- inspect_source(cop,
72
- 'puts "%d" % 10')
73
- expect(cop.offenses.size).to eq(1)
74
- expect(cop.messages)
75
- .to eq(['Favor `format` over `String#%`.'])
76
- end
77
-
78
- it 'registers an offense for something followed by an array' do
79
- inspect_source(cop,
80
- 'puts x % [10, 11]')
81
- expect(cop.offenses.size).to eq(1)
82
- expect(cop.messages)
83
- .to eq(['Favor `format` over `String#%`.'])
84
- end
85
-
86
- it 'does not register an offense for numbers' do
87
- inspect_source(cop,
88
- 'puts 10 % 4')
89
- expect(cop.offenses).to be_empty
90
- end
91
-
92
- it 'does not register an offense for ambiguous cases' do
93
- inspect_source(cop,
94
- 'puts x % 4')
95
- expect(cop.offenses).to be_empty
96
-
97
- inspect_source(cop,
98
- 'puts x % Y')
99
- expect(cop.offenses).to be_empty
100
- end
101
-
102
- it 'works if the first operand contains embedded expressions' do
103
- inspect_source(cop,
104
- 'puts "#{x * 5} %d #{@test}" % 10')
105
- expect(cop.offenses.size).to eq(1)
106
- expect(cop.messages)
107
- .to eq(['Favor `format` over `String#%`.'])
108
- end
109
-
110
- it 'registers an offense for sprintf' do
111
- inspect_source(cop,
112
- 'sprintf(something, a, b)')
113
- expect(cop.offenses.size).to eq(1)
114
- expect(cop.messages)
115
- .to eq(['Favor `format` over `sprintf`.'])
116
- end
117
-
118
- it 'registers an offense for sprintf with 2 arguments' do
119
- inspect_source(cop,
120
- "sprintf('%020d', 123)")
121
- expect(cop.offenses.size).to eq(1)
122
- expect(cop.messages)
123
- .to eq(['Favor `format` over `sprintf`.'])
124
- end
125
- end
126
-
127
- context 'when enforced style is percent' do
128
- let(:cop_config) { { 'EnforcedStyle' => 'percent' } }
129
-
130
- it 'registers an offense for format' do
131
- inspect_source(cop,
132
- 'format(something, a, b)')
133
- expect(cop.offenses.size).to eq(1)
134
- expect(cop.messages)
135
- .to eq(['Favor `String#%` over `format`.'])
136
- end
137
-
138
- it 'registers an offense for sprintf' do
139
- inspect_source(cop,
140
- 'sprintf(something, a, b)')
141
- expect(cop.offenses.size).to eq(1)
142
- expect(cop.messages)
143
- .to eq(['Favor `String#%` over `sprintf`.'])
144
- end
145
-
146
- it 'registers an offense for sprintf with 3 arguments' do
147
- inspect_source(cop,
148
- 'format("%d %04x", 123, 123)')
149
- expect(cop.offenses.size).to eq(1)
150
- expect(cop.messages)
151
- .to eq(['Favor `String#%` over `format`.'])
152
- end
153
-
154
- it 'accepts format with 1 argument' do
155
- inspect_source(cop,
156
- 'format :xml')
157
- expect(cop.offenses).to be_empty
158
- end
159
-
160
- it 'accepts sprintf with 1 argument' do
161
- inspect_source(cop,
162
- 'sprintf :xml')
163
- expect(cop.offenses).to be_empty
164
- end
165
-
166
- it 'accepts format without arguments' do
167
- inspect_source(cop,
168
- 'format')
169
- expect(cop.offenses).to be_empty
170
- end
171
-
172
- it 'accepts sprintf without arguments' do
173
- inspect_source(cop,
174
- 'sprintf')
175
- expect(cop.offenses).to be_empty
176
- end
177
-
178
- it 'accepts String#%' do
179
- inspect_source(cop,
180
- 'puts "%d" % 10')
181
- expect(cop.offenses).to be_empty
182
- end
183
- end
184
- end
@@ -1,34 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::GlobalVars, :config do
6
- cop_config = {
7
- 'AllowedVariables' => ['$allowed']
8
- }
9
-
10
- subject(:cop) { described_class.new(config) }
11
- let(:cop_config) { cop_config }
12
-
13
- it 'registers an offense for $custom' do
14
- inspect_source(cop, 'puts $custom')
15
- expect(cop.offenses.size).to eq(1)
16
- end
17
-
18
- it 'allows user whitelisted variables' do
19
- inspect_source(cop, 'puts $allowed')
20
- expect(cop.offenses).to be_empty
21
- end
22
-
23
- described_class::BUILT_IN_VARS.each do |var|
24
- it "does not register an offense for built-in variable #{var}" do
25
- inspect_source(cop, "puts #{var}")
26
- expect(cop.offenses).to be_empty
27
- end
28
- end
29
-
30
- it 'does not register an offense for backrefs like $1' do
31
- inspect_source(cop, 'puts $1')
32
- expect(cop.offenses).to be_empty
33
- end
34
- end
@@ -1,172 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::GuardClause, :config do
6
- let(:cop) { described_class.new(config) }
7
- let(:cop_config) { {} }
8
-
9
- it 'reports an offense if method body is if / unless without else' do
10
- inspect_source(cop,
11
- ['def func',
12
- ' if something',
13
- ' work',
14
- ' end',
15
- 'end',
16
- '',
17
- 'def func',
18
- ' unless something',
19
- ' work',
20
- ' end',
21
- 'end'])
22
- expect(cop.offenses.size).to eq(2)
23
- expect(cop.offenses.map(&:line).sort).to eq([2, 8])
24
- expect(cop.messages)
25
- .to eq(['Use a guard clause instead of wrapping ' \
26
- 'the code inside a conditional expression.'] * 2)
27
- expect(cop.highlights).to eq(%w(if unless))
28
- end
29
-
30
- it 'reports an offense if method body ends with if / unless without else' do
31
- inspect_source(cop,
32
- ['def func',
33
- ' test',
34
- ' if something',
35
- ' work',
36
- ' end',
37
- 'end',
38
- '',
39
- 'def func',
40
- ' test',
41
- ' unless something',
42
- ' work',
43
- ' end',
44
- 'end'])
45
- expect(cop.offenses.size).to eq(2)
46
- expect(cop.offenses.map(&:line).sort).to eq([3, 10])
47
- expect(cop.messages)
48
- .to eq(['Use a guard clause instead of wrapping ' \
49
- 'the code inside a conditional expression.'] * 2)
50
- expect(cop.highlights).to eq(%w(if unless))
51
- end
52
-
53
- it 'accepts a method which body is if / unless with else' do
54
- inspect_source(cop,
55
- ['def func',
56
- ' if something',
57
- ' work',
58
- ' else',
59
- ' test',
60
- ' end',
61
- 'end',
62
- '',
63
- 'def func',
64
- ' unless something',
65
- ' work',
66
- ' else',
67
- ' test',
68
- ' end',
69
- 'end'])
70
- expect(cop.offenses).to be_empty
71
- end
72
-
73
- it 'accepts a method which body does not end with if / unless' do
74
- inspect_source(cop,
75
- ['def func',
76
- ' if something',
77
- ' work',
78
- ' end',
79
- ' test',
80
- 'end',
81
- '',
82
- 'def func',
83
- ' unless something',
84
- ' work',
85
- ' end',
86
- ' test',
87
- 'end'])
88
- expect(cop.offenses).to be_empty
89
- end
90
-
91
- it 'accepts a method whose body is a modifier if / unless' do
92
- inspect_source(cop,
93
- ['def func',
94
- ' work if something',
95
- 'end',
96
- '',
97
- 'def func',
98
- ' work if something',
99
- 'end'])
100
- expect(cop.offenses).to be_empty
101
- end
102
-
103
- context 'MinBodyLength: 1' do
104
- let(:cop_config) do
105
- { 'MinBodyLength' => 1 }
106
- end
107
-
108
- it 'reports an offense for if whose body has 1 line' do
109
- inspect_source(cop,
110
- ['def func',
111
- ' if something',
112
- ' work',
113
- ' end',
114
- 'end',
115
- '',
116
- 'def func',
117
- ' unless something',
118
- ' work',
119
- ' end',
120
- 'end'])
121
- expect(cop.offenses.size).to eq(2)
122
- expect(cop.offenses.map(&:line).sort).to eq([2, 8])
123
- expect(cop.messages)
124
- .to eq(['Use a guard clause instead of wrapping ' \
125
- 'the code inside a conditional expression.'] * 2)
126
- expect(cop.highlights).to eq(%w(if unless))
127
- end
128
- end
129
-
130
- context 'MinBodyLength: 4' do
131
- let(:cop_config) do
132
- { 'MinBodyLength' => 4 }
133
- end
134
-
135
- it 'accepts a method whose body has 3 line' do
136
- inspect_source(cop,
137
- ['def func',
138
- ' if something',
139
- ' work',
140
- ' work',
141
- ' work',
142
- ' end',
143
- 'end',
144
- '',
145
- 'def func',
146
- ' unless something',
147
- ' work',
148
- ' work',
149
- ' work',
150
- ' end',
151
- 'end'])
152
- expect(cop.offenses).to be_empty
153
- end
154
- end
155
-
156
- context 'Invalid MinBodyLength' do
157
- let(:cop_config) do
158
- { 'MinBodyLength' => -2 }
159
- end
160
-
161
- it 'fails with an error' do
162
- source = ['def func',
163
- ' if something',
164
- ' work',
165
- ' end',
166
- 'end']
167
-
168
- expect { inspect_source(cop, source) }
169
- .to raise_error('MinBodyLength needs to be a positive integer!')
170
- end
171
- end
172
- end
@@ -1,137 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::HashSyntax, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'configured to enforce ruby19 style' do
9
- let(:config) do
10
- RuboCop::Config.new('Style/HashSyntax' => {
11
- 'EnforcedStyle' => 'ruby19',
12
- 'SupportedStyles' => %w(ruby19 hash_rockets)
13
- },
14
- 'Style/SpaceAroundOperators' => {
15
- 'Enabled' => true
16
- })
17
- end
18
-
19
- it 'registers offense for hash rocket syntax when new is possible' do
20
- inspect_source(cop, 'x = { :a => 0 }')
21
- expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
22
- expect(cop.config_to_allow_offenses)
23
- .to eq('EnforcedStyle' => 'hash_rockets')
24
- end
25
-
26
- it 'registers an offense for mixed syntax when new is possible' do
27
- inspect_source(cop, 'x = { :a => 0, b: 1 }')
28
- expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
29
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
30
- end
31
-
32
- it 'registers an offense for hash rockets in method calls' do
33
- inspect_source(cop, 'func(3, :a => 0)')
34
- expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
35
- end
36
-
37
- it 'accepts hash rockets when keys have different types' do
38
- inspect_source(cop, 'x = { :a => 0, "b" => 1 }')
39
- expect(cop.messages).to be_empty
40
- end
41
-
42
- it 'accepts hash rockets when keys have whitespaces in them' do
43
- inspect_source(cop, 'x = { :"t o" => 0 }')
44
- expect(cop.messages).to be_empty
45
- end
46
-
47
- it 'accepts hash rockets when keys have special symbols in them' do
48
- inspect_source(cop, 'x = { :"\tab" => 1 }')
49
- expect(cop.messages).to be_empty
50
- end
51
-
52
- it 'accepts hash rockets when keys start with a digit' do
53
- inspect_source(cop, 'x = { :"1" => 1 }')
54
- expect(cop.messages).to be_empty
55
- end
56
-
57
- it 'registers offense when keys start with an uppercase letter' do
58
- inspect_source(cop, 'x = { :A => 0 }')
59
- expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
60
- end
61
-
62
- it 'accepts new syntax in a hash literal' do
63
- inspect_source(cop, 'x = { a: 0, b: 1 }')
64
- expect(cop.messages).to be_empty
65
- end
66
-
67
- it 'accepts new syntax in method calls' do
68
- inspect_source(cop, 'func(3, a: 0)')
69
- expect(cop.messages).to be_empty
70
- end
71
-
72
- it 'auto-corrects old to new style' do
73
- new_source = autocorrect_source(cop, '{ :a => 1, :b => 2}')
74
- expect(new_source).to eq('{ a: 1, b: 2}')
75
- end
76
-
77
- it 'auto-corrects even if it interferes with SpaceAroundOperators' do
78
- # Clobbering caused by two cops changing in the same range is dealt with
79
- # by the auto-correct loop, so there's no reason to avoid a change.
80
- new_source = autocorrect_source(cop, '{ :a=>1, :b=>2 }')
81
- expect(new_source).to eq('{ a: 1, b: 2 }')
82
- end
83
-
84
- context 'with SpaceAroundOperators disabled' do
85
- let(:config) do
86
- RuboCop::Config.new('Style/HashSyntax' => {
87
- 'EnforcedStyle' => 'ruby19',
88
- 'SupportedStyles' => %w(ruby19 hash_rockets)
89
- },
90
- 'Style/SpaceAroundOperators' => {
91
- 'Enabled' => false
92
- })
93
- end
94
-
95
- it 'auto-corrects even if there is no space around =>' do
96
- new_source = autocorrect_source(cop, '{ :a=>1, :b=>2 }')
97
- expect(new_source).to eq('{ a: 1, b: 2 }')
98
- end
99
- end
100
- end
101
-
102
- context 'configured to enforce hash rockets style' do
103
- let(:cop_config) { { 'EnforcedStyle' => 'hash_rockets' } }
104
-
105
- it 'registers offense for Ruby 1.9 style' do
106
- inspect_source(cop, 'x = { a: 0 }')
107
- expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
108
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'ruby19')
109
- end
110
-
111
- it 'registers an offense for mixed syntax' do
112
- inspect_source(cop, 'x = { :a => 0, b: 1 }')
113
- expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
114
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
115
- end
116
-
117
- it 'registers an offense for 1.9 style in method calls' do
118
- inspect_source(cop, 'func(3, a: 0)')
119
- expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
120
- end
121
-
122
- it 'accepts hash rockets in a hash literal' do
123
- inspect_source(cop, 'x = { :a => 0, :b => 1 }')
124
- expect(cop.messages).to be_empty
125
- end
126
-
127
- it 'accepts hash rockets in method calls' do
128
- inspect_source(cop, 'func(3, :a => 0)')
129
- expect(cop.messages).to be_empty
130
- end
131
-
132
- it 'auto-corrects new style to hash rockets' do
133
- new_source = autocorrect_source(cop, '{ a: 1, b: 2}')
134
- expect(new_source).to eq('{ :a => 1, :b => 2}')
135
- end
136
- end
137
- end