ridecharge-rubocop 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +14 -0
  5. data/CHANGELOG.md +0 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +35 -0
  9. data/Rakefile +22 -0
  10. data/bin/ridecharge-rubocop +49 -0
  11. data/config/0default.yml +8 -0
  12. data/config/fleet-magic-todo.yml +380 -0
  13. data/config/rc-todo.yml +190 -0
  14. data/config/ridecharge-rubocop_todo.yml +73 -0
  15. data/config/rubocop/default.yml +308 -0
  16. data/config/rubocop/disabled.yml +9 -0
  17. data/config/rubocop/enabled.yml +648 -0
  18. data/config/standard-todo.yml +24 -0
  19. data/config/tabs.yml +15 -0
  20. data/config/vehicle-todo.yml +195 -0
  21. data/lib/ridecharge/rubocop.rb +2 -0
  22. data/lib/ridecharge/rubocop/version.rb +5 -0
  23. data/lib/rubocop/config_loader_monkeypatch.rb +117 -0
  24. data/lib/rubocop/ridecharge.rb +1 -0
  25. data/ridecharge-rubocop.gemspec +25 -0
  26. data/spec/isolated_environment_spec.rb +24 -0
  27. data/spec/project_spec.rb +118 -0
  28. data/spec/rubocop/cli_spec.rb +1385 -0
  29. data/spec/rubocop/config_loader_spec.rb +328 -0
  30. data/spec/rubocop/config_spec.rb +179 -0
  31. data/spec/rubocop/config_store_spec.rb +53 -0
  32. data/spec/rubocop/cop/commissioner_spec.rb +83 -0
  33. data/spec/rubocop/cop/cop_spec.rb +114 -0
  34. data/spec/rubocop/cop/corrector_spec.rb +59 -0
  35. data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +113 -0
  36. data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +35 -0
  37. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +107 -0
  38. data/spec/rubocop/cop/lint/block_alignment_spec.rb +411 -0
  39. data/spec/rubocop/cop/lint/condition_position_spec.rb +49 -0
  40. data/spec/rubocop/cop/lint/debugger_spec.rb +39 -0
  41. data/spec/rubocop/cop/lint/else_layout_spec.rb +65 -0
  42. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +27 -0
  43. data/spec/rubocop/cop/lint/end_alignment_spec.rb +136 -0
  44. data/spec/rubocop/cop/lint/end_in_method_spec.rb +29 -0
  45. data/spec/rubocop/cop/lint/ensure_return_spec.rb +39 -0
  46. data/spec/rubocop/cop/lint/eval_spec.rb +35 -0
  47. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +30 -0
  48. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +33 -0
  49. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +63 -0
  50. data/spec/rubocop/cop/lint/loop_spec.rb +27 -0
  51. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +57 -0
  52. data/spec/rubocop/cop/lint/require_parentheses_spec.rb +82 -0
  53. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +131 -0
  54. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +237 -0
  55. data/spec/rubocop/cop/lint/syntax_spec.rb +34 -0
  56. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +63 -0
  57. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1570 -0
  58. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +30 -0
  59. data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +48 -0
  60. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +149 -0
  61. data/spec/rubocop/cop/lint/void_spec.rb +57 -0
  62. data/spec/rubocop/cop/offence_spec.rb +133 -0
  63. data/spec/rubocop/cop/rails/default_scope_spec.rb +37 -0
  64. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +13 -0
  65. data/spec/rubocop/cop/rails/output_spec.rb +41 -0
  66. data/spec/rubocop/cop/rails/read_attribute_spec.rb +13 -0
  67. data/spec/rubocop/cop/rails/validation_spec.rb +21 -0
  68. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +361 -0
  69. data/spec/rubocop/cop/style/accessor_method_name_spec.rb +81 -0
  70. data/spec/rubocop/cop/style/alias_spec.rb +59 -0
  71. data/spec/rubocop/cop/style/align_array_spec.rb +75 -0
  72. data/spec/rubocop/cop/style/align_hash_spec.rb +310 -0
  73. data/spec/rubocop/cop/style/align_parameters_spec.rb +222 -0
  74. data/spec/rubocop/cop/style/and_or_spec.rb +57 -0
  75. data/spec/rubocop/cop/style/ascii_comments_spec.rb +22 -0
  76. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +36 -0
  77. data/spec/rubocop/cop/style/attr_spec.rb +19 -0
  78. data/spec/rubocop/cop/style/begin_block_spec.rb +13 -0
  79. data/spec/rubocop/cop/style/block_comments_spec.rb +21 -0
  80. data/spec/rubocop/cop/style/block_nesting_spec.rb +156 -0
  81. data/spec/rubocop/cop/style/blocks_spec.rb +99 -0
  82. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +284 -0
  83. data/spec/rubocop/cop/style/case_equality_spec.rb +12 -0
  84. data/spec/rubocop/cop/style/case_indentation_spec.rb +289 -0
  85. data/spec/rubocop/cop/style/character_literal_spec.rb +37 -0
  86. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +40 -0
  87. data/spec/rubocop/cop/style/class_length_spec.rb +131 -0
  88. data/spec/rubocop/cop/style/class_methods_spec.rb +45 -0
  89. data/spec/rubocop/cop/style/class_vars_spec.rb +19 -0
  90. data/spec/rubocop/cop/style/collection_methods_spec.rb +48 -0
  91. data/spec/rubocop/cop/style/colon_method_call_spec.rb +60 -0
  92. data/spec/rubocop/cop/style/comment_annotation_spec.rb +86 -0
  93. data/spec/rubocop/cop/style/constant_name_spec.rb +65 -0
  94. data/spec/rubocop/cop/style/cyclomatic_complexity_spec.rb +204 -0
  95. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +39 -0
  96. data/spec/rubocop/cop/style/documentation_spec.rb +123 -0
  97. data/spec/rubocop/cop/style/dot_position_spec.rb +94 -0
  98. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +127 -0
  99. data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +56 -0
  100. data/spec/rubocop/cop/style/empty_lines_around_body_spec.rb +131 -0
  101. data/spec/rubocop/cop/style/empty_lines_spec.rb +40 -0
  102. data/spec/rubocop/cop/style/empty_literal_spec.rb +100 -0
  103. data/spec/rubocop/cop/style/encoding_spec.rb +56 -0
  104. data/spec/rubocop/cop/style/end_block_spec.rb +13 -0
  105. data/spec/rubocop/cop/style/end_of_line_spec.rb +47 -0
  106. data/spec/rubocop/cop/style/even_odd_spec.rb +75 -0
  107. data/spec/rubocop/cop/style/favor_join_spec.rb +31 -0
  108. data/spec/rubocop/cop/style/favor_sprintf_spec.rb +47 -0
  109. data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +76 -0
  110. data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +41 -0
  111. data/spec/rubocop/cop/style/final_newline_spec.rb +30 -0
  112. data/spec/rubocop/cop/style/flip_flop_spec.rb +23 -0
  113. data/spec/rubocop/cop/style/for_spec.rb +105 -0
  114. data/spec/rubocop/cop/style/global_vars_spec.rb +34 -0
  115. data/spec/rubocop/cop/style/hash_methods_spec.rb +45 -0
  116. data/spec/rubocop/cop/style/hash_syntax_spec.rb +131 -0
  117. data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +128 -0
  118. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +19 -0
  119. data/spec/rubocop/cop/style/indentation_consistency_spec.rb +490 -0
  120. data/spec/rubocop/cop/style/indentation_width_spec.rb +470 -0
  121. data/spec/rubocop/cop/style/lambda_call_spec.rb +65 -0
  122. data/spec/rubocop/cop/style/lambda_spec.rb +41 -0
  123. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +64 -0
  124. data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +34 -0
  125. data/spec/rubocop/cop/style/line_length_spec.rb +20 -0
  126. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +59 -0
  127. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +60 -0
  128. data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +106 -0
  129. data/spec/rubocop/cop/style/method_length_spec.rb +147 -0
  130. data/spec/rubocop/cop/style/method_name_spec.rb +125 -0
  131. data/spec/rubocop/cop/style/module_function_spec.rb +24 -0
  132. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +78 -0
  133. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +107 -0
  134. data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +18 -0
  135. data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +21 -0
  136. data/spec/rubocop/cop/style/nil_comparison_spec.rb +30 -0
  137. data/spec/rubocop/cop/style/not_spec.rb +22 -0
  138. data/spec/rubocop/cop/style/numeric_literals_spec.rb +64 -0
  139. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +13 -0
  140. data/spec/rubocop/cop/style/op_method_spec.rb +74 -0
  141. data/spec/rubocop/cop/style/parameter_lists_spec.rb +44 -0
  142. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +122 -0
  143. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +17 -0
  144. data/spec/rubocop/cop/style/predicate_name_spec.rb +25 -0
  145. data/spec/rubocop/cop/style/proc_spec.rb +27 -0
  146. data/spec/rubocop/cop/style/raise_args_spec.rb +82 -0
  147. data/spec/rubocop/cop/style/redundant_begin_spec.rb +57 -0
  148. data/spec/rubocop/cop/style/redundant_exception_spec.rb +27 -0
  149. data/spec/rubocop/cop/style/redundant_return_spec.rb +171 -0
  150. data/spec/rubocop/cop/style/redundant_self_spec.rb +142 -0
  151. data/spec/rubocop/cop/style/regexp_literal_spec.rb +83 -0
  152. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +116 -0
  153. data/spec/rubocop/cop/style/semicolon_spec.rb +100 -0
  154. data/spec/rubocop/cop/style/signal_exception_spec.rb +266 -0
  155. data/spec/rubocop/cop/style/single_line_block_params_spec.rb +68 -0
  156. data/spec/rubocop/cop/style/single_line_methods_spec.rb +52 -0
  157. data/spec/rubocop/cop/style/space_after_colon_spec.rb +38 -0
  158. data/spec/rubocop/cop/style/space_after_comma_spec.rb +30 -0
  159. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +84 -0
  160. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +70 -0
  161. data/spec/rubocop/cop/style/space_after_not_spec.rb +22 -0
  162. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +23 -0
  163. data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +283 -0
  164. data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +33 -0
  165. data/spec/rubocop/cop/style/space_around_operators_spec.rb +325 -0
  166. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +70 -0
  167. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +52 -0
  168. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +138 -0
  169. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +34 -0
  170. data/spec/rubocop/cop/style/special_global_vars_spec.rb +56 -0
  171. data/spec/rubocop/cop/style/string_literals_spec.rb +212 -0
  172. data/spec/rubocop/cop/style/symbol_array_spec.rb +37 -0
  173. data/spec/rubocop/cop/style/tab_spec.rb +17 -0
  174. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +43 -0
  175. data/spec/rubocop/cop/style/trailing_comma_spec.rb +230 -0
  176. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +30 -0
  177. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +415 -0
  178. data/spec/rubocop/cop/style/unless_else_spec.rb +25 -0
  179. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +47 -0
  180. data/spec/rubocop/cop/style/variable_name_spec.rb +107 -0
  181. data/spec/rubocop/cop/style/when_then_spec.rb +41 -0
  182. data/spec/rubocop/cop/style/while_until_do_spec.rb +53 -0
  183. data/spec/rubocop/cop/style/while_until_modifier_spec.rb +75 -0
  184. data/spec/rubocop/cop/style/word_array_spec.rb +97 -0
  185. data/spec/rubocop/cop/team_spec.rb +156 -0
  186. data/spec/rubocop/cop/util_spec.rb +49 -0
  187. data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +213 -0
  188. data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +734 -0
  189. data/spec/rubocop/cop/variable_inspector/scope_spec.rb +184 -0
  190. data/spec/rubocop/cop/variable_inspector/variable_spec.rb +73 -0
  191. data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +269 -0
  192. data/spec/rubocop/cop/variable_inspector_spec.rb +29 -0
  193. data/spec/rubocop/file_inspector_spec.rb +78 -0
  194. data/spec/rubocop/formatter/base_formatter_spec.rb +191 -0
  195. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +114 -0
  196. data/spec/rubocop/formatter/colorizable_spec.rb +107 -0
  197. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +50 -0
  198. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +62 -0
  199. data/spec/rubocop/formatter/file_list_formatter_spec.rb +33 -0
  200. data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
  201. data/spec/rubocop/formatter/json_formatter_spec.rb +148 -0
  202. data/spec/rubocop/formatter/offence_count_formatter_spec.rb +52 -0
  203. data/spec/rubocop/formatter/progress_formatter_spec.rb +182 -0
  204. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +123 -0
  205. data/spec/rubocop/options_spec.rb +145 -0
  206. data/spec/rubocop/path_util_spec.rb +42 -0
  207. data/spec/rubocop/processed_source_spec.rb +114 -0
  208. data/spec/rubocop/source_parser_spec.rb +139 -0
  209. data/spec/rubocop/target_finder_spec.rb +180 -0
  210. data/spec/rubocop/token_spec.rb +25 -0
  211. data/spec/spec_helper.rb +136 -0
  212. data/spec/support/ast_helper.rb +15 -0
  213. data/spec/support/file_helper.rb +21 -0
  214. data/spec/support/isolated_environment.rb +34 -0
  215. data/spec/support/mri_syntax_checker.rb +73 -0
  216. data/spec/support/shared_context.rb +22 -0
  217. data/spec/support/shared_examples.rb +33 -0
  218. data/spec/support/statement_modifier_helper.rb +41 -0
  219. metadata +511 -0
@@ -0,0 +1,65 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::LambdaCall, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+
8
+ context 'when style is set to call' do
9
+ let(:cop_config) { { 'EnforcedStyle' => 'call' } }
10
+
11
+ it 'registers an offence for x.()' do
12
+ inspect_source(cop,
13
+ ['x.(a, b)'])
14
+ expect(cop.offences.size).to eq(1)
15
+ expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'braces')
16
+ end
17
+
18
+ it 'registers an offence for correct + opposite' do
19
+ inspect_source(cop,
20
+ ['x.call(a, b)',
21
+ 'x.(a, b)'])
22
+ expect(cop.offences.size).to eq(1)
23
+ expect(cop.config_to_allow_offences).to eq('Enabled' => false)
24
+ end
25
+
26
+ it 'accepts x.call()' do
27
+ inspect_source(cop, ['x.call(a, b)'])
28
+ expect(cop.offences).to be_empty
29
+ end
30
+
31
+ it 'auto-corrects x.() to x.call()' do
32
+ new_source = autocorrect_source(cop, ['a.(x)'])
33
+ expect(new_source).to eq('a.call(x)')
34
+ end
35
+ end
36
+
37
+ context 'when style is set to braces' do
38
+ let(:cop_config) { { 'EnforcedStyle' => 'braces' } }
39
+
40
+ it 'registers an offence for x.call()' do
41
+ inspect_source(cop,
42
+ ['x.call(a, b)'])
43
+ expect(cop.offences.size).to eq(1)
44
+ expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'call')
45
+ end
46
+
47
+ it 'registers an offence for opposite + correct' do
48
+ inspect_source(cop,
49
+ ['x.call(a, b)',
50
+ 'x.(a, b)'])
51
+ expect(cop.offences.size).to eq(1)
52
+ expect(cop.config_to_allow_offences).to eq('Enabled' => false)
53
+ end
54
+
55
+ it 'accepts x.()' do
56
+ inspect_source(cop, ['x.(a, b)'])
57
+ expect(cop.offences).to be_empty
58
+ end
59
+
60
+ it 'auto-corrects x.call() to x.()' do
61
+ new_source = autocorrect_source(cop, ['a.call(x)'])
62
+ expect(new_source).to eq('a.(x)')
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::Lambda do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'registers an offence for an old single-line lambda call' do
9
+ inspect_source(cop, ['f = lambda { |x| x }'])
10
+ expect(cop.offences.size).to eq(1)
11
+ expect(cop.messages)
12
+ .to eq(['Use the new lambda literal syntax ->(params) {...}.'])
13
+ end
14
+
15
+ it 'accepts the new lambda literal with single-line body' do
16
+ inspect_source(cop, ['lambda = ->(x) { x }',
17
+ 'lambda.(1)'])
18
+ expect(cop.offences).to be_empty
19
+ end
20
+
21
+ it 'registers an offence for a new multi-line lambda call' do
22
+ inspect_source(cop, ['f = ->(x) do',
23
+ ' x',
24
+ 'end'])
25
+ expect(cop.offences.size).to eq(1)
26
+ expect(cop.messages)
27
+ .to eq(['Use the lambda method for multi-line lambdas.'])
28
+ end
29
+
30
+ it 'accepts the old lambda syntax with multi-line body' do
31
+ inspect_source(cop, ['l = lambda do |x|',
32
+ ' x',
33
+ 'end'])
34
+ expect(cop.offences).to be_empty
35
+ end
36
+
37
+ it 'accepts the lambda call outside of block' do
38
+ inspect_source(cop, ['l = lambda.test'])
39
+ expect(cop.offences).to be_empty
40
+ end
41
+ end
@@ -0,0 +1,64 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::LeadingCommentSpace do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'registers an offence for comment without leading space' do
9
+ inspect_source(cop,
10
+ ['#missing space'])
11
+ expect(cop.offences.size).to eq(1)
12
+ end
13
+
14
+ it 'does not register an offence for # followed by no text' do
15
+ inspect_source(cop,
16
+ ['#'])
17
+ expect(cop.offences).to be_empty
18
+ end
19
+
20
+ it 'does not register an offence for more than one space' do
21
+ inspect_source(cop,
22
+ ['# heavily indented'])
23
+ expect(cop.offences).to be_empty
24
+ end
25
+
26
+ it 'does not register an offence for more than one #' do
27
+ inspect_source(cop,
28
+ ['###### heavily indented'])
29
+ expect(cop.offences).to be_empty
30
+ end
31
+
32
+ it 'does not register an offence for only #s' do
33
+ inspect_source(cop,
34
+ ['######'])
35
+ expect(cop.offences).to be_empty
36
+ end
37
+
38
+ it 'does not register an offence for #! on first line' do
39
+ inspect_source(cop,
40
+ ['#!/usr/bin/ruby',
41
+ 'test'])
42
+ expect(cop.offences).to be_empty
43
+ end
44
+
45
+ it 'registers an offence for #! after the first line' do
46
+ inspect_source(cop,
47
+ ['test', '#!/usr/bin/ruby'])
48
+ expect(cop.offences.size).to eq(1)
49
+ end
50
+
51
+ it 'accepts rdoc syntax' do
52
+ inspect_source(cop,
53
+ ['#++',
54
+ '#--',
55
+ '#:nodoc:'])
56
+
57
+ expect(cop.offences).to be_empty
58
+ end
59
+
60
+ it 'auto-corrects missing space' do
61
+ new_source = autocorrect_source(cop, '#comment')
62
+ expect(new_source).to eq('# comment')
63
+ end
64
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::LineEndConcatenation do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'registers an offence for string concat at line end' do
9
+ inspect_source(cop,
10
+ ['top = "test" +',
11
+ '"top"'])
12
+ expect(cop.offences.size).to eq(1)
13
+ end
14
+
15
+ it 'accepts string concat on the same line' do
16
+ inspect_source(cop,
17
+ ['top = "test" + "top"'])
18
+ expect(cop.offences).to be_empty
19
+ end
20
+
21
+ it 'accepts string concat at line end when followed by comment' do
22
+ inspect_source(cop,
23
+ ['top = "test" + # something',
24
+ '"top"'])
25
+ expect(cop.offences).to be_empty
26
+ end
27
+
28
+ it 'autocorrects by replacing + with \\' do
29
+ corrected = autocorrect_source(cop,
30
+ ['top = "test" +',
31
+ '"top"'])
32
+ expect(corrected).to eq ['top = "test" \\', '"top"'].join("\n")
33
+ end
34
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::LineLength, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) { { 'Max' => 79 } }
8
+
9
+ it "registers an offence for a line that's 80 characters wide" do
10
+ inspect_source(cop, ['#' * 80])
11
+ expect(cop.offences.size).to eq(1)
12
+ expect(cop.offences.first.message).to eq('Line is too long. [80/79]')
13
+ expect(cop.config_to_allow_offences).to eq('Max' => 80)
14
+ end
15
+
16
+ it "accepts a line that's 79 characters wide" do
17
+ inspect_source(cop, ['#' * 79])
18
+ expect(cop.offences).to be_empty
19
+ end
20
+ end
@@ -0,0 +1,59 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::MethodCallParentheses, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:config) do
8
+ Rubocop::Config.new('EmptyLiteral' => { 'Enabled' => true })
9
+ end
10
+
11
+ it 'registers an offence for parens in method call without args' do
12
+ inspect_source(cop, ['top.test()'])
13
+ expect(cop.offences.size).to eq(1)
14
+ end
15
+
16
+ it 'accepts parentheses for methods starting with an upcase letter' do
17
+ inspect_source(cop, ['Test()'])
18
+ expect(cop.offences).to be_empty
19
+ end
20
+
21
+ it 'accepts no parens in method call without args' do
22
+ inspect_source(cop, ['top.test'])
23
+ expect(cop.offences).to be_empty
24
+ end
25
+
26
+ it 'accepts parens in method call with args' do
27
+ inspect_source(cop, ['top.test(a)'])
28
+ expect(cop.offences).to be_empty
29
+ end
30
+
31
+ it 'auto-corrects by removing unneeded braces' do
32
+ new_source = autocorrect_source(cop, 'test()')
33
+ expect(new_source).to eq('test')
34
+ end
35
+
36
+ it 'does not auto-correct calls that will be changed to empty literals' do
37
+ original = ['Hash.new()',
38
+ 'Array.new()',
39
+ 'String.new()']
40
+ new_source = autocorrect_source(cop, original)
41
+ expect(new_source).to eq(original.join("\n"))
42
+ end
43
+
44
+ context 'when EmptyLiteral is disabled' do
45
+ let(:config) do
46
+ Rubocop::Config.new('EmptyLiteral' => { 'Enabled' => false })
47
+ end
48
+
49
+ it 'auto-corrects calls that could be empty literals' do
50
+ original = ['Hash.new()',
51
+ 'Array.new()',
52
+ 'String.new()']
53
+ new_source = autocorrect_source(cop, original)
54
+ expect(new_source).to eq(['Hash.new',
55
+ 'Array.new',
56
+ 'String.new'].join("\n"))
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::MethodCalledOnDoEndBlock do
6
+ subject(:cop) { described_class.new }
7
+
8
+ context 'with a multi-line do..end block' do
9
+ it 'registers an offence for a chained call' do
10
+ inspect_source(cop, ['a do',
11
+ ' b',
12
+ 'end.c'])
13
+ expect(cop.offences.size).to eq(1)
14
+ expect(cop.highlights).to eq(['end.c'])
15
+ end
16
+
17
+ it 'accepts it if there is no chained call' do
18
+ inspect_source(cop, ['a do',
19
+ ' b',
20
+ 'end'])
21
+ expect(cop.offences).to be_empty
22
+ end
23
+
24
+ it 'accepts a chained block' do
25
+ inspect_source(cop, ['a do',
26
+ ' b',
27
+ 'end.c do',
28
+ ' d',
29
+ 'end'])
30
+ expect(cop.offences).to be_empty
31
+ end
32
+ end
33
+
34
+ context 'with a single-line do..end block' do
35
+ it 'registers an offence for a chained call' do
36
+ inspect_source(cop, ['a do b end.c'])
37
+ expect(cop.offences.size).to eq(1)
38
+ expect(cop.highlights).to eq(['end.c'])
39
+ end
40
+
41
+ it 'accepts a single-line do..end block with a chained block' do
42
+ inspect_source(cop, ['a do b end.c do d end'])
43
+ expect(cop.offences).to be_empty
44
+ end
45
+ end
46
+
47
+ context 'with a {} block' do
48
+ it 'accepts a multi-line block with a chained call' do
49
+ inspect_source(cop, ['a {',
50
+ ' b',
51
+ '}.c'])
52
+ expect(cop.offences).to be_empty
53
+ end
54
+
55
+ it 'accepts a single-line block with a chained call' do
56
+ inspect_source(cop, ['a { b }.c'])
57
+ expect(cop.offences).to be_empty
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,106 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::MethodDefParentheses, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+
8
+ context 'require_parentheses' do
9
+ let(:cop_config) { { 'EnforcedStyle' => 'require_parentheses' } }
10
+
11
+ it 'reports an offence for def with parameters but no parens' do
12
+ src = ['def func a, b',
13
+ 'end']
14
+ inspect_source(cop, src)
15
+ expect(cop.offences.size).to eq(1)
16
+ expect(cop.config_to_allow_offences).to eq('EnforcedStyle' =>
17
+ 'require_no_parentheses')
18
+ end
19
+
20
+ it 'reports an offence for correct + opposite' do
21
+ src = ['def func(a, b)',
22
+ 'end',
23
+ 'def func a, b',
24
+ 'end']
25
+ inspect_source(cop, src)
26
+ expect(cop.offences.size).to eq(1)
27
+ expect(cop.config_to_allow_offences).to eq('Enabled' => false)
28
+ end
29
+
30
+ it 'reports an offence for class def with parameters but no parens' do
31
+ src = ['def Test.func a, b',
32
+ 'end']
33
+ inspect_source(cop, src)
34
+ expect(cop.offences.size).to eq(1)
35
+ end
36
+
37
+ it 'accepts def with no args and no parens' do
38
+ src = ['def func',
39
+ 'end']
40
+ inspect_source(cop, src)
41
+ expect(cop.offences).to be_empty
42
+ end
43
+
44
+ it 'auto-adds required parens for a def' do
45
+ new_source = autocorrect_source(cop, 'def test param; end')
46
+ expect(new_source).to eq('def test(param); end')
47
+ end
48
+
49
+ it 'auto-adds required parens for a defs' do
50
+ new_source = autocorrect_source(cop, 'def self.test param; end')
51
+ expect(new_source).to eq('def self.test(param); end')
52
+ end
53
+
54
+ it 'auto-adds required parens to argument lists on multiple lines' do
55
+ new_source = autocorrect_source(cop, ['def test one,', 'two', 'end'])
56
+ expect(new_source).to eq("def test(one,\ntwo)\nend")
57
+ end
58
+ end
59
+
60
+ context 'require_no_parentheses' do
61
+ let(:cop_config) { { 'EnforcedStyle' => 'require_no_parentheses' } }
62
+
63
+ it 'reports an offence for def with parameters with parens' do
64
+ src = ['def func(a, b)',
65
+ 'end']
66
+ inspect_source(cop, src)
67
+ expect(cop.offences.size).to eq(1)
68
+ expect(cop.config_to_allow_offences).to eq('EnforcedStyle' =>
69
+ 'require_parentheses')
70
+ end
71
+
72
+ it 'reports an offence for opposite + correct' do
73
+ src = ['def func(a, b)',
74
+ 'end',
75
+ 'def func a, b',
76
+ 'end']
77
+ inspect_source(cop, src)
78
+ expect(cop.offences.size).to eq(1)
79
+ expect(cop.config_to_allow_offences).to eq('Enabled' => false)
80
+ end
81
+
82
+ it 'reports an offence for class def with parameters with parens' do
83
+ src = ['def Test.func(a, b)',
84
+ 'end']
85
+ inspect_source(cop, src)
86
+ expect(cop.offences.size).to eq(1)
87
+ end
88
+
89
+ it 'reports an offence for def with no args and parens' do
90
+ src = ['def func()',
91
+ 'end']
92
+ inspect_source(cop, src)
93
+ expect(cop.offences.size).to eq(1)
94
+ end
95
+
96
+ it 'auto-removes the parens' do
97
+ new_source = autocorrect_source(cop, 'def test(param); end')
98
+ expect(new_source).to eq('def test param; end')
99
+ end
100
+
101
+ it 'auto-removes the parens for defs' do
102
+ new_source = autocorrect_source(cop, 'def self.test(param); end')
103
+ expect(new_source).to eq('def self.test param; end')
104
+ end
105
+ end
106
+ end