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,130 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Rails::ReadWriteAttribute do
6
- subject(:cop) { described_class.new }
7
-
8
- context 'read_attribute' do
9
- it 'registers an offense' do
10
- inspect_source(cop, 'res = read_attribute(:test)')
11
- expect(cop.offenses.size).to eq(1)
12
- expect(cop.highlights).to eq(['read_attribute'])
13
- end
14
-
15
- it 'registers no offense with explicit receiver' do
16
- inspect_source(cop, 'res = object.read_attribute(:test)')
17
- expect(cop.offenses.size).to eq(0)
18
- end
19
- end
20
-
21
- context 'write_attribute' do
22
- it 'registers an offense' do
23
- inspect_source(cop, 'write_attribute(:test, val)')
24
- expect(cop.offenses.size).to eq(1)
25
- expect(cop.highlights).to eq(['write_attribute'])
26
- end
27
-
28
- it 'registers no offense with explicit receiver' do
29
- inspect_source(cop, 'object.write_attribute(:test, val)')
30
- expect(cop.offenses.size).to eq(0)
31
- end
32
- end
33
-
34
- describe '#autocorrect' do
35
- context 'write_attribute' do
36
- it 'autocorrects symbol' do
37
- source = 'write_attribute(:attr, var)'
38
- corrected_source = 'self[:attr] = var'
39
-
40
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
41
- end
42
-
43
- it 'autocorrects string' do
44
- source = "write_attribute('attr', 'test')"
45
- corrected_source = "self['attr'] = 'test'"
46
-
47
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
48
- end
49
-
50
- it 'autocorrects without parentheses' do
51
- source = "write_attribute 'attr', 'test'"
52
- corrected_source = "self['attr'] = 'test'"
53
-
54
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
55
- end
56
-
57
- it 'autocorrects expression' do
58
- source = "write_attribute(:attr, 'test_' + postfix)"
59
- corrected_source = "self[:attr] = 'test_' + postfix"
60
-
61
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
62
- end
63
-
64
- it 'autocorrects multiline' do
65
- source = [
66
- 'write_attribute(',
67
- ':attr, ',
68
- '(',
69
- "'test_' + postfix",
70
- ').to_sym',
71
- ')'
72
- ]
73
- corrected_source = [
74
- 'self[:attr] = (',
75
- "'test_' + postfix",
76
- ').to_sym'
77
- ].join("\n")
78
-
79
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
80
- end
81
- end
82
-
83
- context 'read_attribute' do
84
- it 'autocorrects symbol' do
85
- source = 'res = read_attribute(:test)'
86
- corrected_source = 'res = self[:test]'
87
-
88
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
89
- end
90
-
91
- it 'autocorrects string' do
92
- source = "res = read_attribute('test')"
93
- corrected_source = "res = self['test']"
94
-
95
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
96
- end
97
-
98
- it 'autocorrects without parentheses' do
99
- source = "res = read_attribute 'test'"
100
- corrected_source = "res = self['test']"
101
-
102
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
103
- end
104
-
105
- it 'autocorrects expression' do
106
- source = "res = read_attribute('test_' + postfix)"
107
- corrected_source = "res = self['test_' + postfix]"
108
-
109
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
110
- end
111
-
112
- it 'autocorrects multiline' do
113
- source = [
114
- 'res = read_attribute(',
115
- '(',
116
- "'test_' + postfix",
117
- ').to_sym',
118
- ')'
119
- ]
120
- corrected_source = [
121
- 'res = self[(',
122
- "'test_' + postfix",
123
- ').to_sym]'
124
- ].join("\n")
125
-
126
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
127
- end
128
- end
129
- end
130
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Rails::ScopeArgs do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense a scope with a method arg' do
9
- inspect_source(cop,
10
- 'scope :active, where(active: true)')
11
- expect(cop.offenses.size).to eq(1)
12
- end
13
-
14
- it 'accepts a lambda arg' do
15
- inspect_source(cop,
16
- 'scope :active, -> { where(active: true) }')
17
- expect(cop.offenses).to be_empty
18
- end
19
-
20
- it 'accepts a proc arg' do
21
- inspect_source(cop,
22
- 'scope :active, proc { where(active: true) }')
23
- expect(cop.offenses).to be_empty
24
- end
25
- end
@@ -1,28 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Rails::Validation do
6
- subject(:cop) { described_class.new }
7
-
8
- described_class::BLACKLIST.each_with_index do |validation, number|
9
- it "registers an offense for #{validation}" do
10
- inspect_source(cop,
11
- "#{validation} :name")
12
- expect(cop.offenses.size).to eq(1)
13
- end
14
-
15
- it "outputs the correct message for #{validation}" do
16
- inspect_source(cop,
17
- "#{validation} :name")
18
- expect(cop.offenses.first.message)
19
- .to include(described_class::WHITELIST[number])
20
- end
21
- end
22
-
23
- it 'accepts new style validations' do
24
- inspect_source(cop,
25
- 'validates :name')
26
- expect(cop.offenses).to be_empty
27
- end
28
- end
@@ -1,113 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Severity do
6
- let(:refactor) { described_class.new(:refactor) }
7
- let(:convention) { described_class.new(:convention) }
8
- let(:warning) { described_class.new(:warning) }
9
- let(:error) { described_class.new(:error) }
10
- let(:fatal) { described_class.new(:fatal) }
11
-
12
- it 'has a few required attributes' do
13
- expect(convention.name).to eq(:convention)
14
- end
15
-
16
- it 'overrides #to_s' do
17
- expect(convention.to_s).to eq('convention')
18
- end
19
-
20
- it 'redefines == to compare severities' do
21
- expect(convention).to eq(:convention)
22
- expect(convention).to eq(described_class.new(:convention))
23
- expect(convention).not_to eq(:warning)
24
- end
25
-
26
- it 'is frozen' do
27
- expect(convention).to be_frozen
28
- end
29
-
30
- describe '#code' do
31
- describe 'refactor' do
32
- it { expect(refactor.code).to eq('R') }
33
- end
34
-
35
- describe 'convention' do
36
- it { expect(convention.code).to eq('C') }
37
- end
38
-
39
- describe 'warning' do
40
- it { expect(warning.code).to eq('W') }
41
- end
42
-
43
- describe 'error' do
44
- it { expect(error.code).to eq('E') }
45
- end
46
-
47
- describe 'fatal' do
48
- it { expect(fatal.code).to eq('F') }
49
- end
50
- end
51
-
52
- describe '#level' do
53
- describe 'refactor' do
54
- it { expect(refactor.level).to eq(1) }
55
- end
56
-
57
- describe 'convention' do
58
- it { expect(convention.level).to eq(2) }
59
- end
60
-
61
- describe 'warning' do
62
- it { expect(warning.level).to eq(3) }
63
- end
64
-
65
- describe 'error' do
66
- it { expect(error.level).to eq(4) }
67
- end
68
-
69
- describe 'fatal' do
70
- it { expect(fatal.level).to eq(5) }
71
- end
72
- end
73
-
74
- describe 'constructs from code' do
75
- describe 'R' do
76
- it { expect(described_class.new('R')).to eq(refactor) }
77
- end
78
-
79
- describe 'C' do
80
- it { expect(described_class.new('C')).to eq(convention) }
81
- end
82
-
83
- describe 'W' do
84
- it { expect(described_class.new('W')).to eq(warning) }
85
- end
86
-
87
- describe 'E' do
88
- it { expect(described_class.new('E')).to eq(error) }
89
- end
90
-
91
- describe 'F' do
92
- it { expect(described_class.new('F')).to eq(fatal) }
93
- end
94
- end
95
-
96
- describe 'Comparable' do
97
- describe 'refactor' do
98
- it { expect(refactor).to be < convention }
99
- end
100
-
101
- describe 'convention' do
102
- it { expect(convention).to be < warning }
103
- end
104
-
105
- describe 'warning' do
106
- it { expect(warning).to be < error }
107
- end
108
-
109
- describe 'error' do
110
- it { expect(error).to be < fatal }
111
- end
112
- end
113
- end
@@ -1,421 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::AccessModifierIndentation do
6
- subject(:cop) { described_class.new(config) }
7
- let(:config) do
8
- c = cop_config.merge('SupportedStyles' => %w(indent outdent))
9
- RuboCop::Config
10
- .new('Style/AccessModifierIndentation' => c,
11
- 'Style/IndentationWidth' => { 'Width' => indentation_width })
12
- end
13
- let(:indentation_width) { 2 }
14
-
15
- context 'when EnforcedStyle is set to indent' do
16
- let(:cop_config) { { 'EnforcedStyle' => 'indent' } }
17
-
18
- it 'registers an offense for misaligned private' do
19
- inspect_source(cop,
20
- ['class Test',
21
- '',
22
- 'private',
23
- '',
24
- ' def test; end',
25
- 'end'])
26
- expect(cop.offenses.size).to eq(1)
27
- expect(cop.messages)
28
- .to eq(['Indent access modifiers like `private`.'])
29
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'outdent')
30
- end
31
-
32
- it 'registers an offense for misaligned private in module' do
33
- inspect_source(cop,
34
- ['module Test',
35
- '',
36
- ' private',
37
- '',
38
- ' def test; end',
39
- 'end'])
40
- expect(cop.offenses.size).to eq(1)
41
- expect(cop.messages).to eq(['Indent access modifiers like `private`.'])
42
- # Not aligned according to `indent` or `outdent` style:
43
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
44
- end
45
-
46
- it 'registers an offense for misaligned module_function in module' do
47
- inspect_source(cop,
48
- ['module Test',
49
- '',
50
- ' module_function',
51
- '',
52
- ' def test; end',
53
- 'end'])
54
- expect(cop.offenses.size).to eq(1)
55
- expect(cop.messages)
56
- .to eq(['Indent access modifiers like `module_function`.'])
57
- # Not aligned according to `indent` or `outdent` style:
58
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
59
- end
60
-
61
- it 'registers an offense for correct + opposite alignment' do
62
- inspect_source(cop,
63
- ['module Test',
64
- '',
65
- ' public',
66
- '',
67
- 'private',
68
- '',
69
- ' def test; end',
70
- 'end'])
71
- expect(cop.offenses.size).to eq(1)
72
- expect(cop.messages).to eq(['Indent access modifiers like `private`.'])
73
- # No EnforcedStyle can allow both alignments:
74
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
75
- end
76
-
77
- it 'registers an offense for opposite + correct alignment' do
78
- inspect_source(cop,
79
- ['module Test',
80
- '',
81
- 'public',
82
- '',
83
- ' private',
84
- '',
85
- ' def test; end',
86
- 'end'])
87
- expect(cop.offenses.size).to eq(1)
88
- expect(cop.messages).to eq(['Indent access modifiers like `public`.'])
89
- # No EnforcedStyle can allow both alignments:
90
- expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
91
- end
92
-
93
- it 'registers an offense for misaligned private in singleton class' do
94
- inspect_source(cop,
95
- ['class << self',
96
- '',
97
- 'private',
98
- '',
99
- ' def test; end',
100
- 'end'])
101
- expect(cop.offenses.size).to eq(1)
102
- expect(cop.messages)
103
- .to eq(['Indent access modifiers like `private`.'])
104
- end
105
-
106
- it 'registers an offense for misaligned private in class ' \
107
- 'defined with Class.new' do
108
- inspect_source(cop,
109
- ['Test = Class.new do',
110
- '',
111
- 'private',
112
- '',
113
- ' def test; end',
114
- 'end'])
115
- expect(cop.offenses.size).to eq(1)
116
- expect(cop.messages)
117
- .to eq(['Indent access modifiers like `private`.'])
118
- end
119
-
120
- it 'accepts misaligned private in blocks that are not recognized as ' \
121
- 'class/module definitions' do
122
- inspect_source(cop,
123
- ['Test = func do',
124
- '',
125
- 'private',
126
- '',
127
- ' def test; end',
128
- 'end'])
129
- expect(cop.offenses).to be_empty
130
- end
131
-
132
- it 'registers an offense for misaligned private in module ' \
133
- 'defined with Module.new' do
134
- inspect_source(cop,
135
- ['Test = Module.new do',
136
- '',
137
- 'private',
138
- '',
139
- ' def test; end',
140
- 'end'])
141
- expect(cop.offenses.size).to eq(1)
142
- expect(cop.messages)
143
- .to eq(['Indent access modifiers like `private`.'])
144
- end
145
-
146
- it 'registers an offense for misaligned protected' do
147
- inspect_source(cop,
148
- ['class Test',
149
- '',
150
- 'protected',
151
- '',
152
- ' def test; end',
153
- 'end'])
154
- expect(cop.offenses.size).to eq(1)
155
- expect(cop.messages)
156
- .to eq(['Indent access modifiers like `protected`.'])
157
- end
158
-
159
- it 'accepts properly indented private' do
160
- inspect_source(cop,
161
- ['class Test',
162
- '',
163
- ' private',
164
- '',
165
- ' def test; end',
166
- 'end'])
167
- expect(cop.offenses).to be_empty
168
- end
169
-
170
- it 'accepts properly indented protected' do
171
- inspect_source(cop,
172
- ['class Test',
173
- '',
174
- ' protected',
175
- '',
176
- ' def test; end',
177
- 'end'])
178
- expect(cop.offenses).to be_empty
179
- end
180
-
181
- it 'accepts an empty class' do
182
- inspect_source(cop,
183
- ['class Test',
184
- 'end'])
185
- expect(cop.offenses).to be_empty
186
- end
187
-
188
- it 'handles properly nested classes' do
189
- inspect_source(cop,
190
- ['class Test',
191
- '',
192
- ' class Nested',
193
- '',
194
- ' private',
195
- '',
196
- ' def a; end',
197
- ' end',
198
- '',
199
- ' protected',
200
- '',
201
- ' def test; end',
202
- 'end'])
203
- expect(cop.offenses.size).to eq(1)
204
- expect(cop.messages)
205
- .to eq(['Indent access modifiers like `private`.'])
206
- end
207
-
208
- it 'auto-corrects incorrectly indented access modifiers' do
209
- corrected = autocorrect_source(cop, ['class Test',
210
- '',
211
- 'public',
212
- ' private',
213
- ' protected',
214
- '',
215
- ' def test; end',
216
- 'end'])
217
- expect(corrected).to eq(['class Test',
218
- '',
219
- ' public',
220
- ' private',
221
- ' protected',
222
- '',
223
- ' def test; end',
224
- 'end'].join("\n"))
225
- end
226
-
227
- context 'when 4 spaces per indent level are used' do
228
- let(:indentation_width) { 4 }
229
-
230
- it 'accepts properly indented private' do
231
- inspect_source(cop,
232
- ['class Test',
233
- '',
234
- ' private',
235
- '',
236
- ' def test; end',
237
- 'end'])
238
- expect(cop.offenses).to be_empty
239
- end
240
- end
241
- end
242
-
243
- context 'when EnforcedStyle is set to outdent' do
244
- let(:cop_config) { { 'EnforcedStyle' => 'outdent' } }
245
- let(:indent_msg) { 'Outdent access modifiers like `private`.' }
246
-
247
- it 'registers offense for private indented to method depth in a class' do
248
- inspect_source(cop,
249
- ['class Test',
250
- '',
251
- ' private',
252
- '',
253
- ' def test; end',
254
- 'end'])
255
- expect(cop.offenses.size).to eq(1)
256
- expect(cop.messages).to eq([indent_msg])
257
- expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'indent')
258
- end
259
-
260
- it 'registers offense for private indented to method depth in a module' do
261
- inspect_source(cop,
262
- ['module Test',
263
- '',
264
- ' private',
265
- '',
266
- ' def test; end',
267
- 'end'])
268
- expect(cop.offenses.size).to eq(1)
269
- expect(cop.messages).to eq([indent_msg])
270
- end
271
-
272
- it 'registers offense for module fn indented to method depth in a module' do
273
- inspect_source(cop,
274
- ['module Test',
275
- '',
276
- ' module_function',
277
- '',
278
- ' def test; end',
279
- 'end'])
280
- expect(cop.offenses.size).to eq(1)
281
- end
282
-
283
- it 'registers offense for private indented to method depth in singleton' \
284
- 'class' do
285
- inspect_source(cop,
286
- ['class << self',
287
- '',
288
- ' private',
289
- '',
290
- ' def test; end',
291
- 'end'])
292
- expect(cop.offenses.size).to eq(1)
293
- expect(cop.messages).to eq([indent_msg])
294
- end
295
-
296
- it 'registers offense for private indented to method depth in class ' \
297
- 'defined with Class.new' do
298
- inspect_source(cop,
299
- ['Test = Class.new do',
300
- '',
301
- ' private',
302
- '',
303
- ' def test; end',
304
- 'end'])
305
- expect(cop.offenses.size).to eq(1)
306
- expect(cop.messages).to eq([indent_msg])
307
- end
308
-
309
- it 'registers offense for private indented to method depth in module ' \
310
- 'defined with Module.new' do
311
- inspect_source(cop,
312
- ['Test = Module.new do',
313
- '',
314
- ' private',
315
- '',
316
- ' def test; end',
317
- 'end'])
318
- expect(cop.offenses.size).to eq(1)
319
- expect(cop.messages).to eq([indent_msg])
320
- end
321
-
322
- it 'accepts private indented to the containing class indent level' do
323
- inspect_source(cop,
324
- ['class Test',
325
- '',
326
- 'private',
327
- '',
328
- ' def test; end',
329
- 'end'])
330
- expect(cop.offenses).to be_empty
331
- end
332
-
333
- it 'accepts protected indented to the containing class indent level' do
334
- inspect_source(cop,
335
- ['class Test',
336
- '',
337
- 'protected',
338
- '',
339
- ' def test; end',
340
- 'end'])
341
- expect(cop.offenses).to be_empty
342
- end
343
-
344
- it 'handles properly nested classes' do
345
- inspect_source(cop,
346
- ['class Test',
347
- '',
348
- ' class Nested',
349
- '',
350
- ' private',
351
- '',
352
- ' def a; end',
353
- ' end',
354
- '',
355
- 'protected',
356
- '',
357
- ' def test; end',
358
- 'end'])
359
- expect(cop.offenses.size).to eq(1)
360
- expect(cop.messages).to eq([indent_msg])
361
- end
362
-
363
- it 'auto-corrects incorrectly indented access modifiers' do
364
- corrected = autocorrect_source(cop, ['module M',
365
- ' class Test',
366
- '',
367
- 'public',
368
- ' private',
369
- ' protected',
370
- '',
371
- ' def test; end',
372
- ' end',
373
- 'end'])
374
- expect(corrected).to eq(['module M',
375
- ' class Test',
376
- '',
377
- ' public',
378
- ' private',
379
- ' protected',
380
- '',
381
- ' def test; end',
382
- ' end',
383
- 'end'].join("\n"))
384
- end
385
-
386
- it 'auto-corrects private in complicated case' do
387
- corrected = autocorrect_source(cop, ['class Hello',
388
- ' def foo',
389
- " 'hi'",
390
- ' end',
391
- '',
392
- ' def bar',
393
- ' Module.new do',
394
- '',
395
- ' private',
396
- '',
397
- ' def hi',
398
- " 'bye'",
399
- ' end',
400
- ' end',
401
- ' end',
402
- 'end'])
403
- expect(corrected).to eq(['class Hello',
404
- ' def foo',
405
- " 'hi'",
406
- ' end',
407
- '',
408
- ' def bar',
409
- ' Module.new do',
410
- '',
411
- ' private',
412
- '',
413
- ' def hi',
414
- " 'bye'",
415
- ' end',
416
- ' end',
417
- ' end',
418
- 'end'].join("\n"))
419
- end
420
- end
421
- end