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,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Token do
6
- describe '.from_parser_token' do
7
- subject(:token) { described_class.from_parser_token(parser_token) }
8
- let(:parser_token) { [type, [text, range]] }
9
- let(:type) { :kDEF }
10
- let(:text) { 'def' }
11
- let(:range) { double('range', line: 42, column: 30) }
12
-
13
- it "sets parser token's type to rubocop token's type" do
14
- expect(token.type).to eq(type)
15
- end
16
-
17
- it "sets parser token's text to rubocop token's text" do
18
- expect(token.text).to eq(text)
19
- end
20
-
21
- it "sets parser token's range to rubocop token's pos" do
22
- expect(token.pos).to eq(range)
23
- end
24
-
25
- it 'returns a #to_s useful for debugging' do
26
- expect(token.to_s).to eq('[[42, 30], kDEF, "def"]')
27
- end
28
- end
29
- end
@@ -1,39 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # Coverage support needs to be required *before* the RuboCop code is required!
4
- require 'support/coverage'
5
-
6
- require 'rubocop'
7
-
8
- # Requires supporting files with custom matchers and macros, etc,
9
- # in ./support/ and its subdirectories.
10
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11
-
12
- RSpec.configure do |config|
13
- # These two settings work together to allow you to limit a spec run
14
- # to individual examples or groups you care about by tagging them with
15
- # `:focus` metadata. When nothing is tagged with `:focus`, all examples
16
- # get run.
17
- config.filter_run :focus
18
- config.run_all_when_everything_filtered = true
19
-
20
- config.order = :random
21
-
22
- config.filter_run_excluding ruby: ->(v) { !RUBY_VERSION.start_with?(v.to_s) }
23
-
24
- broken_filter = lambda do |v|
25
- v.is_a?(Symbol) ? RUBY_ENGINE == v.to_s : v
26
- end
27
- config.filter_run_excluding broken: broken_filter
28
-
29
- config.expect_with :rspec do |expectations|
30
- expectations.syntax = :expect # Disable `should`
31
- end
32
-
33
- config.mock_with :rspec do |mocks|
34
- mocks.syntax = :expect # Disable `should_receive` and `stub`
35
- end
36
- end
37
-
38
- # Disable colors in specs
39
- Rainbow.enabled = false
@@ -1,75 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'tempfile'
4
-
5
- module CopHelper
6
- def inspect_source_file(cop, source)
7
- Tempfile.open('tmp') { |f| inspect_source(cop, source, f) }
8
- end
9
-
10
- def inspect_source(cop, source, file = nil)
11
- if source.is_a?(Array) && source.size == 1
12
- fail "Don't use an array for a single line of code: #{source}"
13
- end
14
- RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
15
- processed_source = parse_source(source, file)
16
- fail 'Error parsing example code' unless processed_source.valid_syntax?
17
- _investigate(cop, processed_source)
18
- end
19
-
20
- def parse_source(source, file = nil)
21
- source = source.join($RS) if source.is_a?(Array)
22
-
23
- if file && file.respond_to?(:write)
24
- file.write(source)
25
- file.rewind
26
- file = file.path
27
- end
28
-
29
- RuboCop::ProcessedSource.new(source, file)
30
- end
31
-
32
- def autocorrect_source_file(cop, source)
33
- Tempfile.open('tmp') { |f| autocorrect_source(cop, source, f) }
34
- end
35
-
36
- def autocorrect_source(cop, source, file = nil)
37
- cop.instance_variable_get(:@options)[:auto_correct] = true
38
- processed_source = parse_source(source, file)
39
- _investigate(cop, processed_source)
40
-
41
- corrector =
42
- RuboCop::Cop::Corrector.new(processed_source.buffer, cop.corrections)
43
- corrector.rewrite
44
- end
45
-
46
- def _investigate(cop, processed_source)
47
- forces = RuboCop::Cop::Force.all.each_with_object([]) do |klass, instances|
48
- next unless cop.join_force?(klass)
49
- instances << klass.new([cop])
50
- end
51
-
52
- commissioner =
53
- RuboCop::Cop::Commissioner.new([cop], forces, raise_error: true)
54
- commissioner.investigate(processed_source)
55
- commissioner
56
- end
57
- end
58
-
59
- module RuboCop
60
- module Cop
61
- class Cop
62
- def messages
63
- offenses.sort.map(&:message)
64
- end
65
-
66
- def highlights
67
- offenses.sort.map { |o| o.location.source }
68
- end
69
- end
70
- end
71
- end
72
-
73
- RSpec.configure do |config|
74
- config.include CopHelper
75
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module RuboCop
4
- module Cop
5
- module Test
6
- class ClassMustBeAModuleCop < RuboCop::Cop::Cop
7
- def on_class(node)
8
- add_offense(node, :expression, 'Class must be a Module')
9
- end
10
-
11
- def autocorrect(node)
12
- @corrections << lambda do |corrector|
13
- corrector.replace(node.loc.keyword, 'module')
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module RuboCop
4
- module Cop
5
- module Test
6
- class ModuleMustBeAClassCop < RuboCop::Cop::Cop
7
- def on_module(node)
8
- add_offense(node, :expression, 'Module must be a Class')
9
- end
10
-
11
- def autocorrect(node)
12
- @corrections << lambda do |corrector|
13
- corrector.replace(node.loc.keyword, 'class')
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
-
3
- if ENV['TRAVIS'] || ENV['COVERAGE']
4
- require 'simplecov'
5
-
6
- if ENV['TRAVIS']
7
- require 'coveralls'
8
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter
9
- end
10
-
11
- SimpleCov.start do
12
- add_filter '/spec/'
13
- add_filter '/vendor/bundle/'
14
- end
15
- end
@@ -1,58 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec::Matchers.define :exit_with_code do |code|
4
- supports_block_expectations
5
-
6
- actual = nil
7
-
8
- match do |block|
9
- begin
10
- block.call
11
- rescue SystemExit => e
12
- actual = e.status
13
- end
14
- actual && actual == code
15
- end
16
-
17
- failure_message do
18
- "expected block to call exit(#{code}) but exit" +
19
- (actual.nil? ? ' not called' : "(#{actual}) was called")
20
- end
21
-
22
- failure_message_when_negated do
23
- "expected block not to call exit(#{code})"
24
- end
25
-
26
- description do
27
- "expect block to call exit(#{code})"
28
- end
29
- end
30
-
31
- RSpec::Matchers.define :find_offenses_in do |code|
32
- match do |cop|
33
- inspect_source(cop, code)
34
- includes_highlight(cop) &&
35
- includes_message(cop) &&
36
- cop.offenses.any?
37
- end
38
-
39
- chain :with_highlight do |highlight|
40
- @highlight = highlight
41
- end
42
-
43
- chain :with_message do |message|
44
- @message = message
45
- end
46
-
47
- def includes_highlight(cop)
48
- return true unless @highlight
49
-
50
- cop.highlights.include?(@highlight)
51
- end
52
-
53
- def includes_message(cop)
54
- return true unless @message
55
-
56
- cop.offenses.map(&:message).include?(@message)
57
- end
58
- end
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'fileutils'
4
-
5
- module FileHelper
6
- def create_file(file_path, content)
7
- file_path = File.expand_path(file_path)
8
-
9
- dir_path = File.dirname(file_path)
10
- FileUtils.makedirs dir_path unless File.exist?(dir_path)
11
-
12
- File.open(file_path, 'w') do |file|
13
- case content
14
- when ''
15
- # Write nothing. Create empty file.
16
- when String
17
- file.puts content
18
- when Array
19
- file.puts content.join("\n")
20
- end
21
- end
22
- end
23
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # Force JRuby not to select the current working directory
4
- # as a temporary directory on Travis CI.
5
- # https://github.com/jruby/jruby/issues/405
6
- if ENV['TRAVIS'] && RUBY_ENGINE == 'jruby'
7
- require 'fileutils'
8
-
9
- tmp_dir = ENV['TMPDIR'] || ENV['TMP'] || ENV['TEMP'] ||
10
- Etc.systmpdir || '/tmp'
11
-
12
- non_world_writable_tmp_dir = File.join(tmp_dir, 'rubocop')
13
- FileUtils.makedirs(non_world_writable_tmp_dir, mode: 0700)
14
- ENV['TMPDIR'] = non_world_writable_tmp_dir
15
- end
@@ -1,73 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'open3'
4
-
5
- # The reincarnation of syntax cop :)
6
- module MRISyntaxChecker
7
- module_function
8
-
9
- def offenses_for_source(source, fake_cop_name = 'Syntax', grep_message = nil)
10
- if source.is_a?(Array)
11
- source_lines = source
12
- source = source_lines.join("\n")
13
- else
14
- source_lines = source.each_line.to_a
15
- end
16
-
17
- source_buffer = Parser::Source::Buffer.new('test', 1)
18
- source_buffer.source = source
19
-
20
- offenses = check_syntax(source).each_line.map do |line|
21
- check_line(line, source_lines, source_buffer, fake_cop_name,
22
- grep_message)
23
- end
24
-
25
- offenses.compact
26
- end
27
-
28
- def check_line(line, source_lines, source_buffer, fake_cop_name,
29
- grep_message)
30
- line_number, severity, message = process_line(line)
31
- return unless line_number
32
- return if grep_message && !message.include?(grep_message)
33
- begin_pos = source_lines[0...(line_number - 1)].reduce(0) do |a, e|
34
- a + e.length + "\n".length
35
- end
36
- RuboCop::Cop::Offense.new(severity,
37
- Parser::Source::Range.new(source_buffer,
38
- begin_pos,
39
- begin_pos + 1),
40
- message.capitalize,
41
- fake_cop_name)
42
- end
43
-
44
- def check_syntax(source)
45
- fail 'Must be running with MRI' unless RUBY_ENGINE == 'ruby'
46
-
47
- stdin, stderr, thread = nil
48
-
49
- # It's extremely important to run the syntax check in a
50
- # clean environment - otherwise it will be extremely slow.
51
- if defined? Bundler
52
- Bundler.with_clean_env do
53
- stdin, _, stderr, thread = Open3.popen3('ruby', '-cw')
54
- end
55
- else
56
- stdin, _, stderr, thread = Open3.popen3('ruby', '-cw')
57
- end
58
-
59
- stdin.write(source)
60
- stdin.close
61
- thread.join
62
-
63
- stderr.read
64
- end
65
-
66
- def process_line(line)
67
- match_data = line.match(/.+:(\d+): (warning: )?(.+)/)
68
- return nil unless match_data
69
- line_number, warning, message = match_data.captures
70
- severity = warning ? :warning : :error
71
- [line_number.to_i, severity, message]
72
- end
73
- end
@@ -1,53 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'tmpdir'
4
- require 'fileutils'
5
-
6
- shared_context 'isolated environment', :isolated_environment do
7
- around do |example|
8
- Dir.mktmpdir do |tmpdir|
9
- original_home = ENV['HOME']
10
-
11
- # Make sure to expand all symlinks in the path first. Otherwise we may
12
- # get mismatched pathnames when loading config files later on.
13
- tmpdir = File.realpath(tmpdir)
14
-
15
- # Make upwards search for .rubocop.yml files stop at this directory.
16
- RuboCop::ConfigLoader.root_level = tmpdir
17
-
18
- begin
19
- virtual_home = File.expand_path(File.join(tmpdir, 'home'))
20
- Dir.mkdir(virtual_home)
21
- ENV['HOME'] = virtual_home
22
-
23
- working_dir = File.join(tmpdir, 'work')
24
- Dir.mkdir(working_dir)
25
-
26
- Dir.chdir(working_dir) do
27
- example.run
28
- end
29
- ensure
30
- ENV['HOME'] = original_home
31
- end
32
- end
33
- end
34
- end
35
-
36
- # `cop_config` must be declared with #let.
37
- shared_context 'config', :config do
38
- let(:config) do
39
- # Module#<
40
- unless described_class < RuboCop::Cop::Cop
41
- fail '`config` must be used in `describe SomeCopClass do .. end`'
42
- end
43
-
44
- fail '`cop_config` must be declared with #let' unless cop_config.is_a?(Hash)
45
-
46
- cop_name = described_class.cop_name
47
- hash = {
48
- cop_name =>
49
- RuboCop::ConfigLoader.default_configuration[cop_name].merge(cop_config)
50
- }
51
- RuboCop::Config.new(hash, "#{Dir.pwd}/.rubocop.yml")
52
- end
53
- end
@@ -1,55 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # `cop` and `source` must be declared with #let.
4
-
5
- shared_examples_for 'accepts' do
6
- it 'accepts' do
7
- inspect_source(cop, source)
8
- expect(cop.offenses).to be_empty
9
- end
10
- end
11
-
12
- shared_examples_for 'mimics MRI 2.1' do |grep_mri_warning|
13
- if RUBY_ENGINE == 'ruby' && RUBY_VERSION.start_with?('2.1')
14
- it "mimics MRI #{RUBY_VERSION} built-in syntax checking" do
15
- inspect_source(cop, source)
16
- offenses_by_mri = MRISyntaxChecker.offenses_for_source(
17
- source, cop.name, grep_mri_warning
18
- )
19
-
20
- # Compare objects before comparing counts for clear failure output.
21
- cop.offenses.each_with_index do |offense_by_cop, index|
22
- offense_by_mri = offenses_by_mri[index]
23
- # Exclude column attribute since MRI does not
24
- # output column number.
25
- [:severity, :line, :cop_name].each do |a|
26
- expect(offense_by_cop.send(a)).to eq(offense_by_mri.send(a))
27
- end
28
- end
29
-
30
- expect(cop.offenses.count).to eq(offenses_by_mri.count)
31
- end
32
- end
33
- end
34
-
35
- shared_examples_for 'misaligned' do |prefix, alignment_base, arg, end_kw, name|
36
- name ||= alignment_base
37
- it "registers an offense for mismatched #{name} ... end" do
38
- inspect_source(cop, ["#{prefix}#{alignment_base} #{arg}",
39
- end_kw])
40
- expect(cop.offenses.size).to eq(1)
41
- regexp = /`end` at 2, \d+ is not aligned with `#{alignment_base}` at 1,/
42
- expect(cop.messages.first).to match(regexp)
43
- expect(cop.highlights.first).to eq('end')
44
- expect(cop.config_to_allow_offenses).to eq('AlignWith' => opposite)
45
- end
46
- end
47
-
48
- shared_examples_for 'aligned' do |alignment_base, arg, end_kw, name|
49
- name ||= alignment_base
50
- it "accepts matching #{name} ... end" do
51
- inspect_source(cop, ["#{alignment_base} #{arg}",
52
- end_kw])
53
- expect(cop.offenses).to be_empty
54
- end
55
- end