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,31 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::TrailingWhitespace do
6
- subject(:cop) { described_class.new }
7
-
8
- it 'registers an offense for a line ending with space' do
9
- source = 'x = 0 '
10
- inspect_source(cop, source)
11
- expect(cop.offenses.size).to eq(1)
12
- end
13
-
14
- it 'registers an offense for a line ending with tab' do
15
- inspect_source(cop, "x = 0\t")
16
- expect(cop.offenses.size).to eq(1)
17
- end
18
-
19
- it 'accepts a line without trailing whitespace' do
20
- inspect_source(cop, ['x = 0',
21
- ''])
22
- expect(cop.offenses).to be_empty
23
- end
24
-
25
- it 'auto-corrects unwanted space' do
26
- new_source = autocorrect_source(cop, ['x = 0 ',
27
- "x = 0\t"])
28
- expect(new_source).to eq(['x = 0',
29
- 'x = 0'].join("\n"))
30
- end
31
- end
@@ -1,558 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Style::TrivialAccessors, :config do
6
- subject(:cop) { described_class.new(config) }
7
- let(:cop_config) { {} }
8
-
9
- it 'finds trivial reader' do
10
- inspect_source(cop,
11
- ['def foo',
12
- ' @foo',
13
- 'end',
14
- '',
15
- 'def Foo',
16
- ' @Foo',
17
- 'end'])
18
- expect(cop.offenses.size).to eq(2)
19
- expect(cop.offenses
20
- .map(&:line).sort).to eq([1, 5])
21
- expect(cop.messages)
22
- .to eq(['Use `attr_reader` to define trivial reader methods.'] * 2)
23
- end
24
-
25
- it 'finds trivial reader in a class' do
26
- inspect_source(cop,
27
- ['class TrivialFoo',
28
- ' def foo',
29
- ' @foo',
30
- ' end',
31
- ' def bar',
32
- ' !foo',
33
- ' end',
34
- 'end'])
35
- expect(cop.offenses.size).to eq(1)
36
- expect(cop.offenses
37
- .map(&:line).sort).to eq([2])
38
- end
39
-
40
- it 'finds trivial reader in a class method' do
41
- inspect_source(cop,
42
- ['class TrivialFoo',
43
- ' def self.foo',
44
- ' @foo',
45
- ' end',
46
- ' def bar',
47
- ' !foo',
48
- ' end',
49
- 'end'])
50
- expect(cop.offenses.size).to eq(1)
51
- expect(cop.offenses
52
- .map(&:line).sort).to eq([2])
53
- end
54
-
55
- it 'finds trivial reader in a nested class' do
56
- inspect_source(cop,
57
- ['class TrivialFoo',
58
- ' class Nested',
59
- ' def foo',
60
- ' @foo',
61
- ' end',
62
- ' end',
63
- 'end'])
64
- expect(cop.offenses.size).to eq(1)
65
- expect(cop.offenses
66
- .map(&:line).sort).to eq([3])
67
- end
68
-
69
- it 'finds trivial readers in a little less trivial class' do
70
- inspect_source(cop,
71
- ['class TrivialFoo',
72
- ' def foo',
73
- ' @foo',
74
- ' end',
75
- ' def foo_and_bar',
76
- ' @foo_bar = @foo + @bar',
77
- ' end',
78
- ' def foo_bar',
79
- ' @foo_bar',
80
- ' end',
81
- ' def foo?',
82
- ' foo.present?',
83
- ' end',
84
- ' def bar?',
85
- ' !bar',
86
- ' end',
87
- ' def foobar',
88
- ' foo? ? foo.value : "bar"',
89
- ' end',
90
- ' def bar',
91
- ' foo.bar',
92
- ' end',
93
- ' def foo_required?',
94
- ' super && !bar_required?',
95
- ' end',
96
- ' def self.from_omniauth(auth)',
97
- ' foobars.each do |f|',
98
- ' # do stuff',
99
- ' end',
100
- ' end',
101
- ' def regex',
102
- ' %r{\A#{visit node}\Z}',
103
- ' end',
104
- ' def array',
105
- ' [foo, bar].join',
106
- ' end',
107
- ' def string',
108
- ' "string"',
109
- ' end',
110
- ' def class',
111
- ' Foo.class',
112
- ' end',
113
- ' def with_return',
114
- ' return foo',
115
- ' end',
116
- ' def captures',
117
- ' (length - 1).times.map { |i| self[i + 1] }',
118
- ' end',
119
- ' def foo val',
120
- ' super',
121
- ' @val',
122
- ' end',
123
- 'end'])
124
- expect(cop.offenses.size).to eq(2)
125
- expect(cop.offenses
126
- .map(&:line).sort).to eq([2, 8])
127
- end
128
-
129
- it 'finds trivial reader with braces' do
130
- inspect_source(cop,
131
- ['class Test',
132
- ' # trivial reader with braces',
133
- ' def name()',
134
- ' @name',
135
- ' end',
136
- 'end'])
137
- expect(cop.offenses.size).to eq(1)
138
- expect(cop.offenses
139
- .map(&:line).sort).to eq([3])
140
- end
141
-
142
- it 'finds trivial writer without braces' do
143
- inspect_source(cop,
144
- ['class Test',
145
- ' # trivial writer without braces',
146
- ' def name= name',
147
- ' @name = name',
148
- ' end',
149
- 'end'])
150
- expect(cop.offenses.size).to eq(1)
151
- expect(cop.offenses .map(&:line).sort).to eq([3])
152
- expect(cop.messages)
153
- .to eq(['Use `attr_writer` to define trivial writer methods.'])
154
- end
155
-
156
- it 'does not find trivial writer with function calls' do
157
- inspect_source(cop,
158
- ['class TrivialTest',
159
- ' def test=(val)',
160
- ' @test = val',
161
- ' some_function_call',
162
- ' or_more_of_them',
163
- ' end',
164
- 'end'])
165
- expect(cop.offenses).to be_empty
166
- end
167
-
168
- it 'finds trivials with less peculiar methods' do
169
- inspect_source(cop,
170
- ['class NilStats',
171
- 'def most_traded_pair',
172
- 'end',
173
- 'def win_ratio',
174
- 'end',
175
- 'def win_ratio_percentage()',
176
- 'end',
177
- 'def pips_won',
178
- ' 0.0',
179
- 'end',
180
- 'def gain_at(date)',
181
- ' 1',
182
- 'end',
183
- 'def gain_percentage',
184
- ' 0',
185
- 'end',
186
- 'def gain_breakdown(options = {})',
187
- ' []',
188
- 'end',
189
- 'def copy_to_all_ratio',
190
- ' nil',
191
- 'end',
192
- 'def trade_population',
193
- ' {}',
194
- 'end',
195
- 'def average_leverage',
196
- ' 1',
197
- 'end',
198
- 'def with_yield',
199
- ' yield',
200
- 'rescue Error => e',
201
- ' #do stuff',
202
- 'end',
203
- 'end'])
204
- expect(cop.offenses).to be_empty
205
- end
206
-
207
- it 'treats splats as non-trivial' do
208
- inspect_source(cop,
209
- [' def splatomatic(*values)',
210
- ' @splatomatic = values',
211
- ' end'])
212
- expect(cop.offenses).to be_empty
213
- end
214
-
215
- it 'finds oneliner trivials' do
216
- inspect_source(cop,
217
- ['class Oneliner',
218
- ' def foo; @foo; end',
219
- ' def foo= foo; @foo = foo; end',
220
- 'end'])
221
- expect(cop.offenses.size).to eq(2)
222
- expect(cop.offenses
223
- .map(&:line).sort).to eq([2, 3])
224
- end
225
-
226
- it 'does not find a trivial reader' do
227
- inspect_source(cop,
228
- ['def bar',
229
- ' @bar + foo',
230
- 'end'])
231
- expect(cop.offenses).to be_empty
232
- end
233
-
234
- it 'finds trivial writer' do
235
- inspect_source(cop,
236
- ['def foo=(val)',
237
- ' @foo = val',
238
- 'end'])
239
- expect(cop.offenses.size).to eq(1)
240
- expect(cop.offenses
241
- .map(&:line).sort).to eq([1])
242
- end
243
-
244
- it 'finds DSL-style trivial writer' do
245
- inspect_source(cop,
246
- ['def foo(val)',
247
- ' @foo = val',
248
- 'end'])
249
- expect(cop.offenses.size).to eq(1)
250
- expect(cop.offenses
251
- .map(&:line).sort).to eq([1])
252
- end
253
-
254
- it 'finds trivial writer in a class' do
255
- inspect_source(cop,
256
- ['class TrivialFoo',
257
- ' def foo=(val)',
258
- ' @foo = val',
259
- ' end',
260
- ' def void(no_value)',
261
- ' end',
262
- ' def inspect(sexp)',
263
- ' each(:def, sexp) do |item|',
264
- ' #do stuff',
265
- ' end',
266
- ' end',
267
- ' def if_method(foo)',
268
- ' if true',
269
- ' unless false',
270
- ' #do stuff',
271
- ' end',
272
- ' end',
273
- ' end',
274
- 'end'])
275
- expect(cop.offenses.size).to eq(1)
276
- expect(cop.offenses
277
- .map(&:line).sort).to eq([2])
278
- end
279
-
280
- it 'finds trivial accessors in a little less trivial class' do
281
- inspect_source(cop,
282
- ['class TrivialFoo',
283
- ' def foo',
284
- ' @foo',
285
- ' end',
286
- ' def foo_and_bar',
287
- ' @foo_bar = @foo + @bar',
288
- ' end',
289
- ' def foo_bar',
290
- ' @foo_bar',
291
- ' end',
292
- ' def bar=(bar_value)',
293
- ' @bar = bar_value',
294
- ' end',
295
- 'end'])
296
- expect(cop.offenses.size).to eq(3)
297
- expect(cop.offenses
298
- .map(&:line).sort).to eq([2, 8, 11])
299
- end
300
-
301
- it 'does not find a trivial writer' do
302
- inspect_source(cop,
303
- ['def bar=(value)',
304
- ' @bar = value + 42',
305
- 'end'])
306
- expect(cop.offenses).to be_empty
307
- end
308
-
309
- it 'finds trivial writers in a little less trivial class' do
310
- inspect_source(cop,
311
- ['class TrivialFoo',
312
- ' def foo_bar=(foo, bar)',
313
- ' @foo_bar = foo + bar',
314
- ' end',
315
- ' def universal=(answer=42)',
316
- ' @universal = answer',
317
- ' end',
318
- ' def bar=(bar_value)',
319
- ' @bar = bar_value',
320
- ' end',
321
- 'end'])
322
- expect(cop.offenses.size).to eq(2)
323
- expect(cop.offenses
324
- .map(&:line).sort).to eq([5, 8])
325
- end
326
-
327
- it 'does not find trivial accessors with method calls' do
328
- inspect_source(cop,
329
- ['class TrivialFoo',
330
- ' def foo_bar(foo)',
331
- ' foo_bar = foo + 42',
332
- ' end',
333
- ' def foo(value)',
334
- ' foo = []',
335
- ' # do stuff',
336
- ' foo',
337
- ' end',
338
- ' def bar',
339
- ' foo_method',
340
- ' end',
341
- 'end'])
342
- expect(cop.offenses).to be_empty
343
- end
344
-
345
- it 'does not find trivial writer with exceptions' do
346
- inspect_source(cop,
347
- [' def expiration_formatted=(value)',
348
- ' begin',
349
- ' @expiration = foo_stuff',
350
- ' rescue ArgumentError',
351
- ' @expiration = nil',
352
- ' end',
353
- ' self[:expiration] = @expiration',
354
- ' end'])
355
- expect(cop.offenses).to be_empty
356
- end
357
-
358
- it 'accepts an initialize method looking like a writer' do
359
- inspect_source(cop,
360
- [' def initialize(value)',
361
- ' @top = value',
362
- ' end'])
363
- expect(cop.offenses).to be_empty
364
- end
365
-
366
- context 'exact name match required' do
367
- let(:cop_config) { { 'ExactNameMatch' => true } }
368
-
369
- it 'finds only 1 trivial reader' do
370
- inspect_source(cop,
371
- ['def foo',
372
- ' @foo',
373
- 'end',
374
- '',
375
- 'def bar',
376
- ' @barr',
377
- 'end'])
378
- expect(cop.offenses.size).to eq(1)
379
- expect(cop.offenses
380
- .map(&:line).sort).to eq([1])
381
- end
382
-
383
- it 'finds only 1 trivial writer' do
384
- inspect_source(cop,
385
- ['def foo=(foo)',
386
- ' @foo = foo',
387
- 'end',
388
- '',
389
- 'def bar=(bar)',
390
- ' @barr = bar',
391
- 'end'])
392
- expect(cop.offenses.size).to eq(1)
393
- expect(cop.offenses
394
- .map(&:line).sort).to eq([1])
395
- end
396
- end
397
-
398
- context 'with predicates allowed' do
399
- let(:cop_config) { { 'AllowPredicates' => true } }
400
-
401
- it 'ignores accessors ending with a question mark' do
402
- inspect_source(cop,
403
- [' def foo?',
404
- ' @foo',
405
- ' end'])
406
- expect(cop.offenses).to be_empty
407
- end
408
- end
409
-
410
- context 'with whitelist defined' do
411
- let(:cop_config) { { 'Whitelist' => ['to_foo', 'bar='] } }
412
-
413
- it 'ignores accessors in the whitelist' do
414
- inspect_source(cop,
415
- [' def to_foo',
416
- ' @foo',
417
- ' end'])
418
- expect(cop.offenses).to be_empty
419
- end
420
- it 'ignores writers in the whitelist' do
421
- inspect_source(cop,
422
- [' def bar=(bar)',
423
- ' @bar = bar',
424
- ' end'])
425
- expect(cop.offenses).to be_empty
426
- end
427
- end
428
-
429
- context 'with DSL writers allowed' do
430
- let(:cop_config) { { 'AllowDSLWriters' => true } }
431
-
432
- it 'does not find DSL-style writer' do
433
- inspect_source(cop,
434
- ['def foo(val)',
435
- ' @foo = val',
436
- 'end'])
437
- expect(cop.offenses).to be_empty
438
- end
439
- end
440
-
441
- describe '#autocorrect' do
442
- context 'matching reader' do
443
- let(:source) do
444
- ['def foo',
445
- ' @foo',
446
- 'end']
447
- end
448
-
449
- let(:corrected_source) { 'attr_reader :foo' }
450
-
451
- it 'autocorrects' do
452
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
453
- end
454
- end
455
-
456
- context 'non-matching reader' do
457
- let(:source) do
458
- ['def foo',
459
- ' @bar',
460
- 'end']
461
- end
462
-
463
- it 'does not autocorrect' do
464
- expect(autocorrect_source(cop, source))
465
- .to eq(source.join("\n"))
466
- expect(cop.offenses.map(&:corrected?)).to eq [false]
467
- end
468
- end
469
-
470
- context 'matching non-DSL writer' do
471
- let(:source) do
472
- ['def foo=(f)',
473
- ' @foo=f',
474
- 'end']
475
- end
476
-
477
- let(:corrected_source) { 'attr_writer :foo' }
478
-
479
- it 'autocorrects' do
480
- expect(autocorrect_source(cop, source)).to eq(corrected_source)
481
- end
482
- end
483
-
484
- context 'matching DSL-style writer' do
485
- let(:source) do
486
- ['def foo(f)',
487
- ' @foo=f',
488
- 'end']
489
- end
490
-
491
- it 'does not autocorrect' do
492
- expect(autocorrect_source(cop, source))
493
- .to eq(source.join("\n"))
494
- expect(cop.offenses.map(&:corrected?)).to eq [false]
495
- end
496
- end
497
-
498
- context 'explicit receiver writer' do
499
- let(:source) do
500
- ['def derp.foo=(f)',
501
- ' @foo=f',
502
- 'end']
503
- end
504
-
505
- it 'does not autocorrect' do
506
- expect(autocorrect_source(cop, source))
507
- .to eq(source.join("\n"))
508
- expect(cop.offenses.map(&:corrected?)).to eq [false]
509
- end
510
- end
511
-
512
- context 'class receiver reader' do
513
- let(:source) do
514
- ['class Foo',
515
- ' def self.foo',
516
- ' @foo',
517
- ' end',
518
- 'end']
519
- end
520
-
521
- let(:corrected_source) do
522
- ['class Foo',
523
- ' class << self',
524
- ' attr_reader :foo',
525
- ' end',
526
- 'end']
527
- end
528
-
529
- it 'autocorrects with class-level attr_reader' do
530
- expect(autocorrect_source(cop, source))
531
- .to eq(corrected_source.join("\n"))
532
- end
533
- end
534
-
535
- context 'class receiver writer' do
536
- let(:source) do
537
- ['class Foo',
538
- ' def self.foo=(f)',
539
- ' @foo = f',
540
- ' end',
541
- 'end']
542
- end
543
-
544
- let(:corrected_source) do
545
- ['class Foo',
546
- ' class << self',
547
- ' attr_writer :foo',
548
- ' end',
549
- 'end']
550
- end
551
-
552
- it 'autocorrects with class-level attr_writer' do
553
- expect(autocorrect_source(cop, source))
554
- .to eq(corrected_source.join("\n"))
555
- end
556
- end
557
- end
558
- end