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,55 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- module RuboCop
6
- module Formatter
7
- describe TextUtil do
8
- subject(:text_util) { RuboCop::Formatter::TextUtil }
9
-
10
- describe 'pluralize' do
11
- it 'will not change 0 to no' do
12
- pluralized_text = text_util.pluralize(0, 'file')
13
-
14
- expect(pluralized_text).to eq('0 files')
15
- end
16
-
17
- it 'will change 0 to no when configured' do
18
- pluralized_text = text_util.pluralize(0, 'file', no_for_zero: true)
19
-
20
- expect(pluralized_text).to eq('no files')
21
- end
22
-
23
- it 'will not pluralize 1' do
24
- pluralized_text = text_util.pluralize(1, 'file')
25
-
26
- expect(pluralized_text).to eq('1 file')
27
- end
28
-
29
- it 'will pluralize quantities greater than 1' do
30
- pluralized_text = text_util.pluralize(3, 'file')
31
-
32
- expect(pluralized_text).to eq('3 files')
33
- end
34
-
35
- it 'will pluralize fractions' do
36
- pluralized_text = text_util.pluralize(0.5, 'file')
37
-
38
- expect(pluralized_text).to eq('0.5 files')
39
- end
40
-
41
- it 'will pluralize -1' do
42
- pluralized_text = text_util.pluralize(-1, 'file')
43
-
44
- expect(pluralized_text).to eq('-1 files')
45
- end
46
-
47
- it 'will pluralize negative quantities less than -1' do
48
- pluralized_text = text_util.pluralize(-2, 'file')
49
-
50
- expect(pluralized_text).to eq('-2 files')
51
- end
52
- end
53
- end
54
- end
55
- end
@@ -1,181 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Options, :isolated_environment do
6
- include FileHelper
7
-
8
- subject(:options) { described_class.new }
9
-
10
- before(:each) do
11
- $stdout = StringIO.new
12
- $stderr = StringIO.new
13
- end
14
-
15
- after(:each) do
16
- $stdout = STDOUT
17
- $stderr = STDERR
18
- end
19
-
20
- def abs(path)
21
- File.expand_path(path)
22
- end
23
-
24
- describe 'option' do
25
- describe '-h/--help' do
26
- it 'exits cleanly' do
27
- expect { options.parse ['-h'] }.to exit_with_code(0)
28
- expect { options.parse ['--help'] }.to exit_with_code(0)
29
- end
30
-
31
- it 'shows help text' do
32
- begin
33
- options.parse(['--help'])
34
- rescue SystemExit # rubocop:disable Lint/HandleExceptions
35
- end
36
-
37
- expected_help = <<-END
38
- Usage: rubocop [options] [file1, file2, ...]
39
- --except [COP1,COP2,...] Disable the given cop(s).
40
- --only [COP1,COP2,...] Run only the given cop(s).
41
- --only-guide-cops Run only cops for rules that link to a
42
- style guide.
43
- -c, --config FILE Specify configuration file.
44
- --auto-gen-config Generate a configuration file acting as a
45
- TODO list.
46
- --force-exclusion Force excluding files specified in the
47
- configuration `Exclude` even if they are
48
- explicitly passed as arguments.
49
- -f, --format FORMATTER Choose an output formatter. This option
50
- can be specified multiple times to enable
51
- multiple formatters at the same time.
52
- [p]rogress (default)
53
- [s]imple
54
- [c]lang
55
- [d]isabled cops via inline comments
56
- [fu]ubar
57
- [e]macs
58
- [j]son
59
- [h]tml
60
- [fi]les
61
- [o]ffenses
62
- custom formatter class name
63
- -o, --out FILE Write output to a file instead of STDOUT.
64
- This option applies to the previously
65
- specified --format, or the default format
66
- if no format is specified.
67
- -r, --require FILE Require Ruby file.
68
- --fail-level SEVERITY Minimum severity (A/R/C/W/E/F) for exit
69
- with error code.
70
- --show-cops [COP1,COP2,...] Shows the given cops, or all cops by
71
- default, and their configurations for the
72
- current directory.
73
- -F, --fail-fast Inspect files in order of modification
74
- time and stop after the first file
75
- containing offenses.
76
- -d, --debug Display debug info.
77
- -D, --display-cop-names Display cop names in offense messages.
78
- -R, --rails Run extra Rails cops.
79
- -l, --lint Run only lint cops.
80
- -a, --auto-correct Auto-correct offenses.
81
- -n, --no-color Disable color output.
82
- -v, --version Display version.
83
- -V, --verbose-version Display verbose version.
84
- END
85
-
86
- expect($stdout.string).to eq(expected_help)
87
- end
88
-
89
- it 'lists all builtin formatters' do
90
- begin
91
- options.parse(['--help'])
92
- rescue SystemExit # rubocop:disable Lint/HandleExceptions
93
- end
94
-
95
- option_sections = $stdout.string.lines.slice_before(/^\s*-/)
96
-
97
- format_section = option_sections.find do |lines|
98
- lines.first =~ /^\s*-f/
99
- end
100
-
101
- formatter_keys = format_section.reduce([]) do |keys, line|
102
- match = line.match(/^[ ]{39}(\[[a-z\]]+)/)
103
- next keys unless match
104
- keys << match.captures.first.gsub(/\[|\]/, '')
105
- end.sort
106
-
107
- expected_formatter_keys =
108
- RuboCop::Formatter::FormatterSet::BUILTIN_FORMATTERS_FOR_KEYS
109
- .keys.sort
110
-
111
- expect(formatter_keys).to eq(expected_formatter_keys)
112
- end
113
- end
114
-
115
- describe 'incompatible cli options' do
116
- it 'fails with argument correct error' do
117
- msg = 'Incompatible cli options: [:version, :verbose_version]'
118
- expect { options.parse %w(-vV) }
119
- .to raise_error(ArgumentError, msg)
120
- end
121
-
122
- it 'fails with argument correct error' do
123
- msg = 'Incompatible cli options: [:version, :show_cops]'
124
- expect { options.parse %w(-v --show-cops) }
125
- .to raise_error(ArgumentError, msg)
126
- end
127
-
128
- it 'fails with argument correct error' do
129
- msg = 'Incompatible cli options: [:verbose_version, :show_cops]'
130
- expect { options.parse %w(-V --show-cops) }
131
- .to raise_error(ArgumentError, msg)
132
- end
133
-
134
- it 'fails with argument correct error' do
135
- msg = ['Incompatible cli options: [:version, :verbose_version,',
136
- ' :show_cops]'].join
137
- expect { options.parse %w(-vV --show-cops) }
138
- .to raise_error(ArgumentError, msg)
139
- end
140
- end
141
-
142
- describe '--fail-level' do
143
- it 'accepts full severity names' do
144
- %w(refactor convention warning error fatal).each do |severity|
145
- expect { options.parse(['--fail-level', severity]) }
146
- .not_to raise_error
147
- end
148
- end
149
-
150
- it 'accepts severity initial letters' do
151
- %w(R C W E F).each do |severity|
152
- expect { options.parse(['--fail-level', severity]) }
153
- .not_to raise_error
154
- end
155
- end
156
-
157
- it 'accepts the "fake" severities A/autocorrect' do
158
- %w(autocorrect A).each do |severity|
159
- expect { options.parse(['--fail-level', severity]) }
160
- .not_to raise_error
161
- end
162
- end
163
- end
164
-
165
- describe '--require' do
166
- let(:required_file_path) { './path/to/required_file.rb' }
167
-
168
- before do
169
- create_file('example.rb', '# encoding: utf-8')
170
-
171
- create_file(required_file_path, ['# encoding: utf-8',
172
- "puts 'Hello from required file!'"])
173
- end
174
-
175
- it 'requires the passed path' do
176
- options.parse(['--require', required_file_path, 'example.rb'])
177
- expect($stdout.string).to start_with('Hello from required file!')
178
- end
179
- end
180
- end
181
- end
@@ -1,77 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::PathUtil do
6
- describe '#relative_path' do
7
- it 'builds paths relative to PWD by default as a stop-gap' do
8
- relative = File.join(Dir.pwd, 'relative')
9
- expect(subject.relative_path(relative)).to eq('relative')
10
- end
11
-
12
- it 'supports custom base paths' do
13
- expect(subject.relative_path('/foo/bar', '/foo')).to eq('bar')
14
- end
15
- end
16
-
17
- describe '#match_path?', :isolated_environment do
18
- include FileHelper
19
-
20
- before do
21
- create_file('file', '')
22
- create_file('dir/file', '')
23
- create_file('dir/files', '')
24
- create_file('dir/dir/file', '')
25
- create_file('dir/sub/file', '')
26
- $stderr = StringIO.new
27
- end
28
-
29
- after { $stderr = STDERR }
30
-
31
- context 'with deprecated patterns' do
32
- it 'matches dir/** and prints warning' do
33
- expect(subject.match_path?('dir/**', 'dir/sub/file', '.rubocop.yml'))
34
- .to be_truthy
35
- expect($stderr.string)
36
- .to eq(["Warning: Deprecated pattern style 'dir/**' in " \
37
- ".rubocop.yml. Change to 'dir/**/*'.",
38
- ''].join("\n"))
39
- end
40
-
41
- it 'matches strings to the basename and prints warning' do
42
- expect(subject.match_path?('file', 'dir/file', '.rubocop.yml'))
43
- .to be_truthy
44
- expect($stderr.string)
45
- .to eq(["Warning: Deprecated pattern style 'file' in .rubocop.yml. " \
46
- "Change to '**/file'.",
47
- ''].join("\n"))
48
-
49
- expect(subject.match_path?('file', 'dir/files', '')).to be_falsey
50
- expect(subject.match_path?('dir', 'dir/file', '')).to be_falsey
51
- end
52
- end
53
-
54
- it 'matches strings to the full path' do
55
- expect(subject.match_path?("#{Dir.pwd}/dir/file",
56
- "#{Dir.pwd}/dir/file", '')).to be_truthy
57
- expect(subject.match_path?("#{Dir.pwd}/dir/file",
58
- "#{Dir.pwd}/dir/dir/file", '')).to be_falsey
59
- end
60
-
61
- it 'matches glob expressions' do
62
- expect(subject.match_path?('dir/*', 'dir/file', '')).to be_truthy
63
- expect(subject.match_path?('dir/*/*', 'dir/sub/file', '')).to be_truthy
64
- expect(subject.match_path?('dir/**/*', 'dir/sub/file', '')).to be_truthy
65
- expect(subject.match_path?('dir/**/*', 'dir/file', '')).to be_truthy
66
- expect(subject.match_path?('**/*', 'dir/sub/file', '')).to be_truthy
67
- expect(subject.match_path?('**/file', 'file', '')).to be_truthy
68
-
69
- expect(subject.match_path?('sub/*', 'dir/sub/file', '')).to be_falsey
70
- end
71
-
72
- it 'matches regexps' do
73
- expect(subject.match_path?(/^d.*e$/, 'dir/file', '')).to be_truthy
74
- expect(subject.match_path?(/^d.*e$/, 'dir/filez', '')).to be_falsey
75
- end
76
- end
77
- end
@@ -1,184 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::ProcessedSource do
6
- include FileHelper
7
-
8
- subject(:processed_source) { described_class.new(source, path) }
9
-
10
- let(:source) { <<-END.strip_indent }
11
- # encoding: utf-8
12
- def some_method
13
- puts 'foo'
14
- end
15
- some_method
16
- END
17
-
18
- let(:path) { 'path/to/file.rb' }
19
-
20
- describe '.from_file', :isolated_environment do
21
- before do
22
- create_file(path, 'foo')
23
- end
24
-
25
- let(:processed_source) { described_class.from_file(path) }
26
-
27
- it 'returns an instance of ProcessedSource' do
28
- expect(processed_source).to be_a(described_class)
29
- end
30
-
31
- it "sets the file path to the instance's #path" do
32
- expect(processed_source.path).to eq(path)
33
- end
34
- end
35
-
36
- describe '#path' do
37
- it 'is the path passed to .new' do
38
- expect(processed_source.path).to eq(path)
39
- end
40
- end
41
-
42
- describe '#buffer' do
43
- it 'is a source buffer' do
44
- expect(processed_source.buffer).to be_a(Parser::Source::Buffer)
45
- end
46
- end
47
-
48
- describe '#ast' do
49
- it 'is the root node of AST' do
50
- expect(processed_source.ast).to be_a(Astrolabe::Node)
51
- end
52
- end
53
-
54
- describe '#comments' do
55
- it 'is an array of comments' do
56
- expect(processed_source.comments).to be_a(Array)
57
- expect(processed_source.comments.first).to be_a(Parser::Source::Comment)
58
- end
59
- end
60
-
61
- describe '#tokens' do
62
- it 'has an array of tokens' do
63
- expect(processed_source.tokens).to be_a(Array)
64
- expect(processed_source.tokens.first).to be_a(RuboCop::Token)
65
- end
66
- end
67
-
68
- shared_context 'invalid encoding source' do
69
- let(:source) do
70
- [
71
- '# encoding: utf-8',
72
- "# \xf9"
73
- ].join("\n")
74
- end
75
- end
76
-
77
- describe '#parser_error' do
78
- context 'when the source was properly parsed' do
79
- it 'is nil' do
80
- expect(processed_source.parser_error).to be_nil
81
- end
82
- end
83
-
84
- context 'when the source lacks encoding comment and is really utf-8 ' \
85
- 'encoded but has been read as US-ASCII' do
86
- let(:source) do
87
- # When files are read into RuboCop, the encoding of source code lacking
88
- # an encoding comment will default to the external encoding, which
89
- # could for example be US-ASCII if the LC_ALL environment variable is
90
- # set to "C".
91
- '号码 = 3'.force_encoding('US-ASCII')
92
- end
93
-
94
- it 'is nil' do
95
- # ProcessedSource#parse sets UTF-8 as default encoding, so no error.
96
- expect(processed_source.parser_error).to be_nil
97
- end
98
- end
99
-
100
- context 'when the source could not be parsed due to encoding error' do
101
- include_context 'invalid encoding source'
102
-
103
- it 'returns the error' do
104
- expect(processed_source.parser_error).to be_a(Exception)
105
- expect(processed_source.parser_error.message)
106
- .to include('invalid byte sequence')
107
- end
108
- end
109
- end
110
-
111
- describe '#lines' do
112
- it 'is an array' do
113
- expect(processed_source.lines).to be_a(Array)
114
- end
115
-
116
- it 'has same number of elements as line count' do
117
- expect(processed_source.lines.size).to eq(5)
118
- end
119
-
120
- it 'contains lines as string without linefeed' do
121
- first_line = processed_source.lines.first
122
- expect(first_line).to eq('# encoding: utf-8')
123
- end
124
- end
125
-
126
- describe '#[]' do
127
- context 'when an index is passed' do
128
- it 'returns the line' do
129
- expect(processed_source[3]).to eq('end')
130
- end
131
- end
132
-
133
- context 'when a range is passed' do
134
- it 'returns the array of lines' do
135
- expect(processed_source[3..4]).to eq(%w(end some_method))
136
- end
137
- end
138
-
139
- context 'when start index and length are passed' do
140
- it 'returns the array of lines' do
141
- expect(processed_source[3, 2]).to eq(%w(end some_method))
142
- end
143
- end
144
- end
145
-
146
- describe 'valid_syntax?' do
147
- subject { processed_source.valid_syntax? }
148
-
149
- context 'when the source is completely valid' do
150
- let(:source) { 'def valid_code; end' }
151
-
152
- it 'returns true' do
153
- expect(processed_source.diagnostics).to be_empty
154
- expect(processed_source).to be_valid_syntax
155
- end
156
- end
157
-
158
- context 'when the source is invalid' do
159
- let(:source) { 'def invalid_code; en' }
160
-
161
- it 'returns false' do
162
- expect(processed_source).not_to be_valid_syntax
163
- end
164
- end
165
-
166
- context 'when the source is valid but has some warning diagnostics' do
167
- let(:source) { 'do_something *array' }
168
-
169
- it 'returns true' do
170
- expect(processed_source.diagnostics).not_to be_empty
171
- expect(processed_source.diagnostics.first.level).to eq(:warning)
172
- expect(processed_source).to be_valid_syntax
173
- end
174
- end
175
-
176
- context 'when the source could not be parsed due to encoding error' do
177
- include_context 'invalid encoding source'
178
-
179
- it 'returns false' do
180
- expect(processed_source).not_to be_valid_syntax
181
- end
182
- end
183
- end
184
- end