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,19 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
- require 'astrolabe/sexp'
5
-
6
- describe RuboCop::Cop::VariableForce::Reference do
7
- include Astrolabe::Sexp
8
-
9
- describe '.new' do
10
- context 'when non variable reference node is passed' do
11
- it 'raises error' do
12
- node = s(:def)
13
- scope = RuboCop::Cop::VariableForce::Scope.new(s(:class))
14
- expect { described_class.new(node, scope) }
15
- .to raise_error(ArgumentError)
16
- end
17
- end
18
- end
19
- end
@@ -1,319 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::VariableForce::Scope do
6
- include AST::Sexp
7
-
8
- describe '.new' do
9
- context 'when non scope node is passed' do
10
- it 'raises error' do
11
- node = s(:lvasgn)
12
- expect { described_class.new(node) }.to raise_error(ArgumentError)
13
- end
14
- end
15
-
16
- context 'when begin node is passed' do
17
- it 'accepts that as pseudo scope for top level scope' do
18
- node = s(:begin)
19
- expect { described_class.new(node) }.not_to raise_error
20
- end
21
- end
22
- end
23
-
24
- let(:ast) do
25
- ast = RuboCop::ProcessedSource.new(source).ast
26
- RuboCop::Cop::VariableForce.wrap_with_top_level_scope_node(ast)
27
- end
28
-
29
- let(:scope_node_type) { :def }
30
-
31
- let(:scope_node) { ast.each_node(scope_node_type).first }
32
-
33
- subject(:scope) { described_class.new(scope_node) }
34
-
35
- describe '#name' do
36
- context 'when the scope is instance method definition' do
37
- let(:source) { <<-END }
38
- def some_method
39
- end
40
- END
41
-
42
- let(:scope_node_type) { :def }
43
-
44
- it 'returns the method name' do
45
- expect(scope.name).to eq(:some_method)
46
- end
47
- end
48
-
49
- context 'when the scope is singleton method definition' do
50
- let(:source) { <<-END }
51
- def self.some_method
52
- end
53
- END
54
-
55
- let(:scope_node_type) { :defs }
56
-
57
- it 'returns the method name' do
58
- expect(scope.name).to eq(:some_method)
59
- end
60
- end
61
- end
62
-
63
- describe '#body_node' do
64
- shared_examples 'returns the body node' do
65
- it 'returns the body node' do
66
- expect(scope.body_node.children[1]).to eq(:this_is_target)
67
- end
68
- end
69
-
70
- context 'when the scope is instance method' do
71
- let(:source) do
72
- <<-END
73
- def some_method
74
- this_is_target
75
- end
76
- END
77
- end
78
-
79
- let(:scope_node_type) { :def }
80
-
81
- include_examples 'returns the body node'
82
- end
83
-
84
- context 'when the scope is singleton method' do
85
- let(:source) do
86
- <<-END
87
- def self.some_method
88
- this_is_target
89
- end
90
- END
91
- end
92
-
93
- let(:scope_node_type) { :defs }
94
-
95
- include_examples 'returns the body node'
96
- end
97
-
98
- context 'when the scope is module' do
99
- let(:source) do
100
- <<-END
101
- module SomeModule
102
- this_is_target
103
- end
104
- END
105
- end
106
-
107
- let(:scope_node_type) { :module }
108
-
109
- include_examples 'returns the body node'
110
- end
111
-
112
- context 'when the scope is class' do
113
- let(:source) do
114
- <<-END
115
- class SomeClass
116
- this_is_target
117
- end
118
- END
119
- end
120
-
121
- let(:scope_node_type) { :class }
122
-
123
- include_examples 'returns the body node'
124
- end
125
-
126
- context 'when the scope is singleton class' do
127
- let(:source) do
128
- <<-END
129
- class << self
130
- this_is_target
131
- end
132
- END
133
- end
134
-
135
- let(:scope_node_type) { :sclass }
136
-
137
- include_examples 'returns the body node'
138
- end
139
-
140
- context 'when the scope is block' do
141
- let(:source) do
142
- <<-END
143
- 1.times do
144
- this_is_target
145
- end
146
- END
147
- end
148
-
149
- let(:scope_node_type) { :block }
150
-
151
- include_examples 'returns the body node'
152
- end
153
-
154
- context 'when the scope is top level' do
155
- let(:source) do
156
- <<-END
157
- this_is_target
158
- END
159
- end
160
-
161
- let(:scope_node_type) { :begin }
162
-
163
- include_examples 'returns the body node'
164
- end
165
- end
166
-
167
- describe '#each_node' do
168
- shared_examples 'yields' do |description|
169
- it "yields #{description}" do
170
- yielded_types = []
171
-
172
- scope.each_node do |node|
173
- yielded_types << node.type
174
- end
175
-
176
- expect(yielded_types).to eq(expected_types.map(&:to_sym))
177
- end
178
- end
179
-
180
- describe 'outer scope boundary handling' do
181
- context 'when the scope is instance method' do
182
- let(:source) { <<-END }
183
- def some_method(arg1, arg2)
184
- :body
185
- end
186
- END
187
-
188
- let(:scope_node_type) { :def }
189
- let(:expected_types) { %w(args arg arg sym) }
190
- include_examples 'yields', 'the argument and the body nodes'
191
- end
192
-
193
- context 'when the scope is singleton method' do
194
- let(:source) { <<-END }
195
- def self.some_method(arg1, arg2)
196
- :body
197
- end
198
- END
199
-
200
- let(:scope_node_type) { :defs }
201
- let(:expected_types) { %w(args arg arg sym) }
202
- include_examples 'yields', 'the argument and the body nodes'
203
- end
204
-
205
- context 'when the scope is module' do
206
- let(:source) { <<-END }
207
- module SomeModule
208
- :body
209
- end
210
- END
211
-
212
- let(:scope_node_type) { :module }
213
- let(:expected_types) { %w(sym) }
214
- include_examples 'yields', 'the body nodes'
215
- end
216
-
217
- context 'when the scope is class' do
218
- let(:source) { <<-END }
219
- some_super_class = Class.new
220
-
221
- class SomeClass < some_super_class
222
- :body
223
- end
224
- END
225
-
226
- let(:scope_node_type) { :class }
227
- let(:expected_types) { %w(sym) }
228
- include_examples 'yields', 'the body nodes'
229
- end
230
-
231
- context 'when the scope is singleton class' do
232
- let(:source) { <<-END }
233
- some_object = Object.new
234
-
235
- class << some_object
236
- :body
237
- end
238
- END
239
-
240
- let(:scope_node_type) { :sclass }
241
- let(:expected_types) { %w(sym) }
242
- include_examples 'yields', 'the body nodes'
243
- end
244
-
245
- context 'when the scope is block' do
246
- let(:source) { <<-END }
247
- 1.times do |arg1, arg2|
248
- :body
249
- end
250
- END
251
-
252
- let(:scope_node_type) { :block }
253
- let(:expected_types) { %w(args arg arg sym) }
254
- include_examples 'yields', 'the argument and the body nodes'
255
- end
256
-
257
- context 'when the scope is top level' do
258
- let(:source) { <<-END }
259
- :body
260
- END
261
-
262
- let(:scope_node_type) { :begin }
263
- let(:expected_types) { %w(sym) }
264
- include_examples 'yields', 'the body nodes'
265
- end
266
- end
267
-
268
- describe 'inner scope boundary handling' do
269
- context "when there's a method invocation with block" do
270
- let(:source) { <<-END }
271
- foo = 1
272
-
273
- do_something(1, 2) do |arg|
274
- :body
275
- end
276
-
277
- foo
278
- END
279
-
280
- let(:scope_node_type) { :begin }
281
- let(:expected_types) { %w(lvasgn int block send int int lvar) }
282
- include_examples 'yields', 'only the block node and the child send node'
283
- end
284
-
285
- context "when there's a singleton method definition" do
286
- let(:source) { <<-END }
287
- foo = 1
288
-
289
- def self.some_method(arg1, arg2)
290
- :body
291
- end
292
-
293
- foo
294
- END
295
-
296
- let(:scope_node_type) { :begin }
297
- let(:expected_types) { %w(lvasgn int defs self lvar) }
298
- include_examples 'yields', 'only the defs node and the method host node'
299
- end
300
-
301
- context 'when there are grouped nodes with a begin node' do
302
- let(:source) { <<-END }
303
- foo = 1
304
-
305
- if true
306
- do_something
307
- do_anything
308
- end
309
-
310
- foo
311
- END
312
-
313
- let(:scope_node_type) { :begin }
314
- let(:expected_types) { %w(lvasgn int if true begin send send lvar) }
315
- include_examples 'yields', 'them without confused with top level scope'
316
- end
317
- end
318
- end
319
- end
@@ -1,59 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
- require 'astrolabe/sexp'
5
-
6
- describe RuboCop::Cop::VariableForce::Variable do
7
- include Astrolabe::Sexp
8
-
9
- describe '.new' do
10
- context 'when non variable declaration node is passed' do
11
- it 'raises error' do
12
- name = :foo
13
- declaration_node = s(:def)
14
- scope = RuboCop::Cop::VariableForce::Scope.new(s(:class))
15
- expect { described_class.new(name, declaration_node, scope) }
16
- .to raise_error(ArgumentError)
17
- end
18
- end
19
- end
20
-
21
- describe '#referenced?' do
22
- let(:name) { :foo }
23
- let(:declaration_node) { s(:arg, name) }
24
- let(:scope) { double('scope').as_null_object }
25
- let(:variable) { described_class.new(name, declaration_node, scope) }
26
-
27
- subject { variable.referenced? }
28
-
29
- context 'when the variable is not assigned' do
30
- it { should be_falsey }
31
-
32
- context 'and the variable is referenced' do
33
- before do
34
- variable.reference!(s(:lvar, name))
35
- end
36
-
37
- it { should be_truthy }
38
- end
39
- end
40
-
41
- context 'when the variable has an assignment' do
42
- before do
43
- variable.assign(s(:lvasgn, name))
44
- end
45
-
46
- context 'and the variable is not yet referenced' do
47
- it { should be_falsey }
48
- end
49
-
50
- context 'and the variable is referenced' do
51
- before do
52
- variable.reference!(s(:lvar, name))
53
- end
54
-
55
- it { should be_truthy }
56
- end
57
- end
58
- end
59
- end
@@ -1,276 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::VariableForce::VariableTable do
6
- include AST::Sexp
7
-
8
- subject(:variable_table) { described_class.new }
9
-
10
- describe '#push_scope' do
11
- it 'returns pushed scope object' do
12
- node = s(:def)
13
- scope = variable_table.push_scope(node)
14
- expect(scope).to equal(variable_table.current_scope)
15
- expect(scope.node).to equal(node)
16
- end
17
- end
18
-
19
- describe '#pop_scope' do
20
- before do
21
- node = s(:def)
22
- variable_table.push_scope(node)
23
- end
24
-
25
- it 'returns popped scope object' do
26
- last_scope = variable_table.current_scope
27
- popped_scope = variable_table.pop_scope
28
- expect(popped_scope).to equal(last_scope)
29
- end
30
- end
31
-
32
- describe '#current_scope_level' do
33
- before do
34
- variable_table.push_scope(s(:def))
35
- end
36
-
37
- it 'increases by pushing scope' do
38
- last_scope_level = variable_table.current_scope_level
39
- variable_table.push_scope(s(:def))
40
- expect(variable_table.current_scope_level)
41
- .to eq(last_scope_level + 1)
42
- end
43
-
44
- it 'decreases by popping scope' do
45
- last_scope_level = variable_table.current_scope_level
46
- variable_table.pop_scope
47
- expect(variable_table.current_scope_level)
48
- .to eq(last_scope_level - 1)
49
- end
50
- end
51
-
52
- describe '#declare_variable' do
53
- before do
54
- 2.times do
55
- node = s(:def)
56
- variable_table.push_scope(node)
57
- end
58
- end
59
-
60
- it 'adds variable to current scope with its name as key' do
61
- node = s(:lvasgn, :foo)
62
- variable_table.declare_variable(:foo, node)
63
- expect(variable_table.current_scope.variables)
64
- .to have_key(:foo)
65
- expect(variable_table.scope_stack[-2].variables)
66
- .to be_empty
67
- variable = variable_table.current_scope.variables[:foo]
68
- expect(variable.declaration_node).to equal(node)
69
- end
70
-
71
- it 'returns the added variable' do
72
- node = s(:lvasgn, :foo)
73
- variable = variable_table.declare_variable(:foo, node)
74
- expect(variable.declaration_node).to equal(node)
75
- end
76
- end
77
-
78
- describe '#find_variable' do
79
- before do
80
- variable_table.push_scope(s(:class))
81
- variable_table.declare_variable(:baz, s(:lvasgn, :baz))
82
-
83
- variable_table.push_scope(s(:def))
84
- variable_table.declare_variable(:bar, s(:lvasgn, :bar))
85
- end
86
-
87
- context 'when current scope is block' do
88
- before do
89
- variable_table.push_scope(s(:block))
90
- end
91
-
92
- context 'when a variable with the target name exists ' \
93
- 'in current scope' do
94
- before do
95
- variable_table.declare_variable(:foo, s(:lvasgn, :foo))
96
- end
97
-
98
- context 'and does not exist in outer scope' do
99
- it 'returns the current scope variable' do
100
- found_variable = variable_table.find_variable(:foo)
101
- expect(found_variable.name).to eq(:foo)
102
- end
103
- end
104
-
105
- context 'and also exists in outer scope' do
106
- before do
107
- variable_table.declare_variable(:bar, s(:lvasgn, :bar))
108
- end
109
-
110
- it 'returns the current scope variable' do
111
- found_variable = variable_table.find_variable(:bar)
112
- expect(found_variable.name).to equal(:bar)
113
- expect(variable_table.current_scope.variables)
114
- .to have_value(found_variable)
115
- expect(variable_table.scope_stack[-2].variables)
116
- .not_to have_value(found_variable)
117
- end
118
- end
119
- end
120
-
121
- context 'when a variable with the target name does not exist ' \
122
- 'in current scope' do
123
- context 'but exists in the direct outer scope' do
124
- it 'returns the direct outer scope variable' do
125
- found_variable = variable_table.find_variable(:bar)
126
- expect(found_variable.name).to equal(:bar)
127
- end
128
- end
129
-
130
- context 'but exists in a indirect outer scope' do
131
- context 'when the direct outer scope is block' do
132
- before do
133
- variable_table.pop_scope
134
- variable_table.pop_scope
135
-
136
- variable_table.push_scope(s(:block))
137
- variable_table.push_scope(s(:block))
138
- end
139
-
140
- it 'returns the indirect outer scope variable' do
141
- found_variable = variable_table.find_variable(:baz)
142
- expect(found_variable.name).to equal(:baz)
143
- end
144
- end
145
-
146
- context 'when the direct outer scope is not block' do
147
- it 'returns nil' do
148
- found_variable = variable_table.find_variable(:baz)
149
- expect(found_variable).to be_nil
150
- end
151
- end
152
- end
153
-
154
- context 'and does not exist in all outer scopes' do
155
- it 'returns nil' do
156
- found_variable = variable_table.find_variable(:non)
157
- expect(found_variable).to be_nil
158
- end
159
- end
160
- end
161
- end
162
-
163
- context 'when current scope is not block' do
164
- before do
165
- variable_table.push_scope(s(:def))
166
- end
167
-
168
- context 'when a variable with the target name exists ' \
169
- 'in current scope' do
170
- before do
171
- variable_table.declare_variable(:foo, s(:lvasgn, :foo))
172
- end
173
-
174
- context 'and does not exist in outer scope' do
175
- it 'returns the current scope variable' do
176
- found_variable = variable_table.find_variable(:foo)
177
- expect(found_variable.name).to eq(:foo)
178
- end
179
- end
180
-
181
- context 'and also exists in outer scope' do
182
- it 'returns the current scope variable' do
183
- found_variable = variable_table.find_variable(:foo)
184
- expect(found_variable.name).to equal(:foo)
185
- expect(variable_table.current_scope.variables)
186
- .to have_value(found_variable)
187
- expect(variable_table.scope_stack[-2].variables)
188
- .not_to have_value(found_variable)
189
- end
190
- end
191
- end
192
-
193
- context 'when a variable with the target name does not exist ' \
194
- 'in current scope' do
195
- context 'but exists in the direct outer scope' do
196
- it 'returns nil' do
197
- found_variable = variable_table.find_variable(:bar)
198
- expect(found_variable).to be_nil
199
- end
200
- end
201
-
202
- context 'and does not exist in all outer scopes' do
203
- it 'returns nil' do
204
- found_variable = variable_table.find_variable(:non)
205
- expect(found_variable).to be_nil
206
- end
207
- end
208
- end
209
- end
210
- end
211
-
212
- describe '#find_variable with an empty scope stack' do
213
- it 'returns nil' do
214
- found_variable = variable_table.find_variable(:unknown)
215
- expect(found_variable).to be_nil
216
- end
217
- end
218
-
219
- describe '#accessible_variables' do
220
- let(:accessible_variable_names) do
221
- variable_table.accessible_variables.map(&:name)
222
- end
223
-
224
- before do
225
- variable_table.push_scope(s(:class))
226
- end
227
-
228
- context 'when there are no variables' do
229
- it 'returns empty array' do
230
- expect(variable_table.accessible_variables).to be_empty
231
- end
232
- end
233
-
234
- context 'when the current scope has some variables' do
235
- before do
236
- variable_table.declare_variable(:foo, s(:lvasgn, :foo))
237
- variable_table.declare_variable(:bar, s(:lvasgn, :bar))
238
- end
239
-
240
- it 'returns all the variables' do
241
- expect(accessible_variable_names).to match_array([:foo, :bar])
242
- end
243
- end
244
-
245
- context 'when the direct outer scope has some variables' do
246
- before do
247
- variable_table.declare_variable(:foo, s(:lvasgn, :foo))
248
- end
249
-
250
- context 'and the current scope is block' do
251
- before do
252
- variable_table.push_scope(s(:block))
253
- variable_table.declare_variable(:bar, s(:lvasgn, :bar))
254
- variable_table.declare_variable(:baz, s(:lvasgn, :baz))
255
- end
256
-
257
- it 'returns the current and direct outer scope variables' do
258
- expect(accessible_variable_names)
259
- .to match_array([:foo, :bar, :baz])
260
- end
261
- end
262
-
263
- context 'and the current scope is not block' do
264
- before do
265
- variable_table.push_scope(s(:def))
266
- variable_table.declare_variable(:bar, s(:lvasgn, :bar))
267
- variable_table.declare_variable(:baz, s(:lvasgn, :baz))
268
- end
269
-
270
- it 'returns only the current scope variables' do
271
- expect(accessible_variable_names).to match_array([:bar, :baz])
272
- end
273
- end
274
- end
275
- end
276
- end