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,127 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::EmptyLineBetweenDefs, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) { { 'AllowAdjacentOneLineDefs' => false } }
8
+
9
+ it 'finds offences in inner classes' do
10
+ source = ['class K',
11
+ ' def m',
12
+ ' end',
13
+ ' class J',
14
+ ' def n',
15
+ ' end',
16
+ ' def o',
17
+ ' end',
18
+ ' end',
19
+ ' # checks something',
20
+ ' def p',
21
+ ' end',
22
+ 'end']
23
+ inspect_source(cop, source)
24
+ expect(cop.offences.size).to eq(1)
25
+ expect(cop.offences.map(&:line).sort).to eq([7])
26
+ end
27
+
28
+ # Only one def, so rule about empty line *between* defs does not
29
+ # apply.
30
+ it 'accepts a def that follows a line with code' do
31
+ source = ['x = 0',
32
+ 'def m',
33
+ 'end']
34
+ inspect_source(cop, source)
35
+ expect(cop.offences).to be_empty
36
+ end
37
+
38
+ # Only one def, so rule about empty line *between* defs does not
39
+ # apply.
40
+ it 'accepts a def that follows code and a comment' do
41
+ source = [' x = 0',
42
+ ' # 123',
43
+ ' def m',
44
+ ' end']
45
+ inspect_source(cop, source)
46
+ expect(cop.offences).to be_empty
47
+ end
48
+
49
+ it 'accepts the first def without leading empty line in a class' do
50
+ source = ['class K',
51
+ ' def m',
52
+ ' end',
53
+ 'end']
54
+ inspect_source(cop, source)
55
+ expect(cop.offences).to be_empty
56
+ end
57
+
58
+ it 'accepts a def that follows an empty line and then a comment' do
59
+ source = ['class A',
60
+ ' # calculates value',
61
+ ' def m',
62
+ ' end',
63
+ '',
64
+ ' private',
65
+ ' # calculates size',
66
+ ' def n',
67
+ ' end',
68
+ 'end'
69
+ ]
70
+ inspect_source(cop, source)
71
+ expect(cop.offences).to be_empty
72
+ end
73
+
74
+ it 'accepts a def that is the first of a module' do
75
+ source = ['module Util',
76
+ ' public',
77
+ ' #',
78
+ ' def html_escape(s)',
79
+ ' end',
80
+ 'end'
81
+ ]
82
+ inspect_source(cop, source)
83
+ expect(cop.messages).to be_empty
84
+ end
85
+
86
+ it 'accepts a nested def' do
87
+ source = ['def mock_model(*attributes)',
88
+ ' Class.new do',
89
+ ' def initialize(attrs)',
90
+ ' end',
91
+ ' end',
92
+ 'end'
93
+ ]
94
+ inspect_source(cop, source)
95
+ expect(cop.messages).to be_empty
96
+ end
97
+
98
+ it 'registers an offence for adjacent one-liners by default' do
99
+ source = ['def a; end',
100
+ 'def b; end']
101
+ inspect_source(cop, source)
102
+ expect(cop.offences.size).to eq(1)
103
+ end
104
+
105
+ context 'when AllowAdjacentOneLineDefs is enabled' do
106
+ let(:cop_config) { { 'AllowAdjacentOneLineDefs' => true } }
107
+
108
+ it 'accepts adjacent one-liners' do
109
+ source = ['def a; end',
110
+ 'def b; end']
111
+ inspect_source(cop, source)
112
+ expect(cop.offences).to be_empty
113
+ end
114
+
115
+ it 'registers an offence for adjacent defs if some are multi-line' do
116
+ source = ['def a; end',
117
+ 'def b; end',
118
+ 'def c', # Not a one-liner, so this is an offence.
119
+ 'end',
120
+ # Also an offence since previous was multi-line:
121
+ 'def d; end'
122
+ ]
123
+ inspect_source(cop, source)
124
+ expect(cop.offences.map(&:line)).to eq([3, 5])
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::EmptyLinesAroundAccessModifier do
6
+ subject(:cop) { described_class.new }
7
+
8
+ %w(private protected public).each do |access_modifier|
9
+ it "requires blank line before #{access_modifier}" do
10
+ inspect_source(cop,
11
+ ['class Test',
12
+ ' something',
13
+ " #{access_modifier}",
14
+ '',
15
+ ' def test; end',
16
+ 'end'])
17
+ expect(cop.offences.size).to eq(1)
18
+ expect(cop.messages)
19
+ .to eq(["Keep a blank line before and after #{access_modifier}."])
20
+ end
21
+
22
+ it 'requires blank line after #{access_modifier}' do
23
+ inspect_source(cop,
24
+ ['class Test',
25
+ ' something',
26
+ '',
27
+ " #{access_modifier}",
28
+ ' def test; end',
29
+ 'end'])
30
+ expect(cop.offences.size).to eq(1)
31
+ expect(cop.messages)
32
+ .to eq(["Keep a blank line before and after #{access_modifier}."])
33
+ end
34
+
35
+ it 'accepts missing blank line when at the beginning of class/module' do
36
+ inspect_source(cop,
37
+ ['class Test',
38
+ " #{access_modifier}",
39
+ '',
40
+ ' def test; end',
41
+ 'end'])
42
+ expect(cop.offences).to be_empty
43
+ end
44
+
45
+ it 'recognizes blank lines with DOS style line endings' do
46
+ inspect_source(cop,
47
+ ["class Test\r",
48
+ "\r",
49
+ " #{access_modifier}\r",
50
+ "\r",
51
+ " def test; end\r",
52
+ "end\r"])
53
+ expect(cop.offences.size).to eq(0)
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,131 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::EmptyLinesAroundBody do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'registers an offence for method body starting with a blank' do
9
+ inspect_source(cop,
10
+ ['def some_method',
11
+ '',
12
+ ' do_something',
13
+ 'end'])
14
+ expect(cop.offences.size).to eq(1)
15
+ end
16
+
17
+ # The cop only registers an offence if the extra line is completely emtpy. If
18
+ # there is trailing whitespace, then that must be dealt with first. Having
19
+ # two cops registering offence for the line with only spaces would cause
20
+ # havoc in auto-correction.
21
+ it 'accepts method body starting with a line with spaces' do
22
+ inspect_source(cop,
23
+ ['def some_method',
24
+ ' ',
25
+ ' do_something',
26
+ 'end'])
27
+ expect(cop.offences).to be_empty
28
+ end
29
+
30
+ it 'autocorrects method body starting with a blank' do
31
+ corrected = autocorrect_source(cop,
32
+ ['def some_method',
33
+ '',
34
+ ' do_something',
35
+ 'end'])
36
+ expect(corrected).to eq ['def some_method',
37
+ ' do_something',
38
+ 'end'].join("\n")
39
+ end
40
+
41
+ it 'registers an offence for class method body starting with a blank' do
42
+ inspect_source(cop,
43
+ ['def Test.some_method',
44
+ '',
45
+ ' do_something',
46
+ 'end'])
47
+ expect(cop.offences.size).to eq(1)
48
+ end
49
+
50
+ it 'autocorrects class method body starting with a blank' do
51
+ corrected = autocorrect_source(cop,
52
+ ['def Test.some_method',
53
+ '',
54
+ ' do_something',
55
+ 'end'])
56
+ expect(corrected).to eq ['def Test.some_method',
57
+ ' do_something',
58
+ 'end'].join("\n")
59
+ end
60
+
61
+ it 'registers an offence for method body ending with a blank' do
62
+ inspect_source(cop,
63
+ ['def some_method',
64
+ ' do_something',
65
+ '',
66
+ 'end'])
67
+ expect(cop.offences.size).to eq(1)
68
+ end
69
+
70
+ it 'registers an offence for class method body ending with a blank' do
71
+ inspect_source(cop,
72
+ ['def Test.some_method',
73
+ ' do_something',
74
+ '',
75
+ 'end'])
76
+ expect(cop.offences.size).to eq(1)
77
+ end
78
+
79
+ it 'registers an offence for class body starting with a blank' do
80
+ inspect_source(cop,
81
+ ['class SomeClass',
82
+ '',
83
+ ' do_something',
84
+ 'end'])
85
+ expect(cop.offences.size).to eq(1)
86
+ end
87
+
88
+ it 'autocorrects class body containing only a blank' do
89
+ corrected = autocorrect_source(cop,
90
+ ['class SomeClass',
91
+ '',
92
+ 'end'])
93
+ expect(corrected).to eq ['class SomeClass',
94
+ 'end'].join("\n")
95
+ end
96
+
97
+ it 'registers an offence for module body starting with a blank' do
98
+ inspect_source(cop,
99
+ ['module SomeModule',
100
+ '',
101
+ ' do_something',
102
+ 'end'])
103
+ expect(cop.offences.size).to eq(1)
104
+ end
105
+
106
+ it 'registers an offence for class body ending with a blank' do
107
+ inspect_source(cop,
108
+ ['class SomeClass',
109
+ ' do_something',
110
+ '',
111
+ 'end'])
112
+ expect(cop.offences.size).to eq(1)
113
+ end
114
+
115
+ it 'registers an offence for module body ending with a blank' do
116
+ inspect_source(cop,
117
+ ['module SomeModule',
118
+ ' do_something',
119
+ '',
120
+ 'end'])
121
+ expect(cop.offences.size).to eq(1)
122
+ end
123
+
124
+ it 'is not fooled by single line methods' do
125
+ inspect_source(cop,
126
+ ['def some_method; do_something; end',
127
+ '',
128
+ 'something_else'])
129
+ expect(cop.offences).to be_empty
130
+ end
131
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::EmptyLines do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'registers an offence for consecutive empty lines' do
9
+ inspect_source(cop,
10
+ ['test = 5', '', '', '', 'top'])
11
+ expect(cop.offences.size).to eq(2)
12
+ end
13
+
14
+ it 'auto-corrects consecutive empty lines' do
15
+ corrected = autocorrect_source(cop,
16
+ ['test = 5', '', '', '', 'top'])
17
+ expect(corrected).to eq ['test = 5', '', 'top'].join("\n")
18
+ end
19
+
20
+ it 'works when there are no tokens' do
21
+ inspect_source(cop,
22
+ ['#comment'])
23
+ expect(cop.offences).to be_empty
24
+ end
25
+
26
+ it 'handles comments' do
27
+ inspect_source(cop,
28
+ ['test', '', '#comment', 'top'])
29
+ expect(cop.offences).to be_empty
30
+ end
31
+
32
+ it 'does not register an offence for empty lines in a string' do
33
+ inspect_source(cop, ['result = "test
34
+
35
+
36
+
37
+ string"'])
38
+ expect(cop.offences).to be_empty
39
+ end
40
+ end
@@ -0,0 +1,100 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::EmptyLiteral do
6
+ subject(:cop) { described_class.new }
7
+
8
+ describe 'Empty Array' do
9
+ it 'registers an offence for Array.new()' do
10
+ inspect_source(cop,
11
+ ['test = Array.new()'])
12
+ expect(cop.offences.size).to eq(1)
13
+ expect(cop.messages)
14
+ .to eq(['Use array literal [] instead of Array.new.'])
15
+ end
16
+
17
+ it 'registers an offence for Array.new' do
18
+ inspect_source(cop,
19
+ ['test = Array.new'])
20
+ expect(cop.offences.size).to eq(1)
21
+ expect(cop.messages)
22
+ .to eq(['Use array literal [] instead of Array.new.'])
23
+ end
24
+
25
+ it 'does not register an offence for Array.new(3)' do
26
+ inspect_source(cop,
27
+ ['test = Array.new(3)'])
28
+ expect(cop.offences).to be_empty
29
+ end
30
+
31
+ it 'auto-corrects Array.new to []' do
32
+ new_source = autocorrect_source(cop, 'test = Array.new')
33
+ expect(new_source).to eq('test = []')
34
+ end
35
+ end
36
+
37
+ describe 'Empty Hash' do
38
+ it 'registers an offence for Hash.new()' do
39
+ inspect_source(cop,
40
+ ['test = Hash.new()'])
41
+ expect(cop.offences.size).to eq(1)
42
+ expect(cop.messages)
43
+ .to eq(['Use hash literal {} instead of Hash.new.'])
44
+ end
45
+
46
+ it 'registers an offence for Hash.new' do
47
+ inspect_source(cop,
48
+ ['test = Hash.new'])
49
+ expect(cop.offences.size).to eq(1)
50
+ expect(cop.messages)
51
+ .to eq(['Use hash literal {} instead of Hash.new.'])
52
+ end
53
+
54
+ it 'does not register an offence for Hash.new(3)' do
55
+ inspect_source(cop,
56
+ ['test = Hash.new(3)'])
57
+ expect(cop.offences).to be_empty
58
+ end
59
+
60
+ it 'does not register an offence for Hash.new { block }' do
61
+ inspect_source(cop,
62
+ ['test = Hash.new { block }'])
63
+ expect(cop.offences).to be_empty
64
+ end
65
+
66
+ it 'auto-corrects Hash.new to {}' do
67
+ new_source = autocorrect_source(cop, 'test = Hash.new')
68
+ expect(new_source).to eq('test = {}')
69
+ end
70
+ end
71
+
72
+ describe 'Empty String' do
73
+ it 'registers an offence for String.new()' do
74
+ inspect_source(cop,
75
+ ['test = String.new()'])
76
+ expect(cop.offences.size).to eq(1)
77
+ expect(cop.messages)
78
+ .to eq(["Use string literal '' instead of String.new."])
79
+ end
80
+
81
+ it 'registers an offence for String.new' do
82
+ inspect_source(cop,
83
+ ['test = String.new'])
84
+ expect(cop.offences.size).to eq(1)
85
+ expect(cop.messages)
86
+ .to eq(["Use string literal '' instead of String.new."])
87
+ end
88
+
89
+ it 'does not register an offence for String.new("top")' do
90
+ inspect_source(cop,
91
+ ['test = String.new("top")'])
92
+ expect(cop.offences).to be_empty
93
+ end
94
+
95
+ it 'auto-corrects String.new to empty string literal' do
96
+ new_source = autocorrect_source(cop, 'test = String.new')
97
+ expect(new_source).to eq("test = ''")
98
+ end
99
+ end
100
+ end