sabat-rubocop 0.9.0

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 (239) hide show
  1. data/.gitignore +50 -0
  2. data/.rspec +1 -0
  3. data/.rubocop.yml +7 -0
  4. data/.travis.yml +7 -0
  5. data/.yardopts +2 -0
  6. data/CHANGELOG.md +268 -0
  7. data/CONTRIBUTING.md +16 -0
  8. data/Gemfile +7 -0
  9. data/LICENSE.txt +20 -0
  10. data/README.md +324 -0
  11. data/Rakefile +29 -0
  12. data/bin/rubocop +22 -0
  13. data/config/default.yml +58 -0
  14. data/config/disabled.yml +5 -0
  15. data/config/enabled.yml +403 -0
  16. data/lib/rubocop.rb +116 -0
  17. data/lib/rubocop/cli.rb +407 -0
  18. data/lib/rubocop/config.rb +250 -0
  19. data/lib/rubocop/config_store.rb +39 -0
  20. data/lib/rubocop/cop/cop.rb +138 -0
  21. data/lib/rubocop/cop/lint/assignment_in_condition.rb +54 -0
  22. data/lib/rubocop/cop/lint/end_alignment.rb +189 -0
  23. data/lib/rubocop/cop/lint/end_in_method.rb +30 -0
  24. data/lib/rubocop/cop/lint/ensure_return.rb +22 -0
  25. data/lib/rubocop/cop/lint/eval.rb +22 -0
  26. data/lib/rubocop/cop/lint/handle_exceptions.rb +20 -0
  27. data/lib/rubocop/cop/lint/literal_in_condition.rb +81 -0
  28. data/lib/rubocop/cop/lint/loop.rb +29 -0
  29. data/lib/rubocop/cop/lint/rescue_exception.rb +29 -0
  30. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +34 -0
  31. data/lib/rubocop/cop/lint/unreachable_code.rb +35 -0
  32. data/lib/rubocop/cop/lint/unused_local_variable.rb +32 -0
  33. data/lib/rubocop/cop/lint/void.rb +58 -0
  34. data/lib/rubocop/cop/offence.rb +136 -0
  35. data/lib/rubocop/cop/rails/validation.rb +30 -0
  36. data/lib/rubocop/cop/style/access_control.rb +58 -0
  37. data/lib/rubocop/cop/style/alias.rb +28 -0
  38. data/lib/rubocop/cop/style/align_parameters.rb +39 -0
  39. data/lib/rubocop/cop/style/and_or.rb +45 -0
  40. data/lib/rubocop/cop/style/ascii_comments.rb +21 -0
  41. data/lib/rubocop/cop/style/ascii_identifiers.rb +22 -0
  42. data/lib/rubocop/cop/style/attr.rb +20 -0
  43. data/lib/rubocop/cop/style/avoid_class_vars.rb +20 -0
  44. data/lib/rubocop/cop/style/avoid_for.rb +18 -0
  45. data/lib/rubocop/cop/style/avoid_global_vars.rb +65 -0
  46. data/lib/rubocop/cop/style/avoid_perl_backrefs.rb +21 -0
  47. data/lib/rubocop/cop/style/avoid_perlisms.rb +50 -0
  48. data/lib/rubocop/cop/style/begin_block.rb +18 -0
  49. data/lib/rubocop/cop/style/block_comments.rb +20 -0
  50. data/lib/rubocop/cop/style/block_nesting.rb +47 -0
  51. data/lib/rubocop/cop/style/blocks.rb +27 -0
  52. data/lib/rubocop/cop/style/case_equality.rb +22 -0
  53. data/lib/rubocop/cop/style/case_indentation.rb +28 -0
  54. data/lib/rubocop/cop/style/character_literal.rb +37 -0
  55. data/lib/rubocop/cop/style/class_and_module_camel_case.rb +33 -0
  56. data/lib/rubocop/cop/style/class_methods.rb +22 -0
  57. data/lib/rubocop/cop/style/collection_methods.rb +56 -0
  58. data/lib/rubocop/cop/style/colon_method_call.rb +29 -0
  59. data/lib/rubocop/cop/style/constant_name.rb +31 -0
  60. data/lib/rubocop/cop/style/def_parentheses.rb +70 -0
  61. data/lib/rubocop/cop/style/documentation.rb +58 -0
  62. data/lib/rubocop/cop/style/dot_position.rb +25 -0
  63. data/lib/rubocop/cop/style/empty_line_between_defs.rb +26 -0
  64. data/lib/rubocop/cop/style/empty_lines.rb +40 -0
  65. data/lib/rubocop/cop/style/empty_literal.rb +53 -0
  66. data/lib/rubocop/cop/style/encoding.rb +29 -0
  67. data/lib/rubocop/cop/style/end_block.rb +18 -0
  68. data/lib/rubocop/cop/style/end_of_line.rb +23 -0
  69. data/lib/rubocop/cop/style/favor_join.rb +29 -0
  70. data/lib/rubocop/cop/style/favor_modifier.rb +118 -0
  71. data/lib/rubocop/cop/style/favor_sprintf.rb +28 -0
  72. data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +54 -0
  73. data/lib/rubocop/cop/style/hash_syntax.rb +47 -0
  74. data/lib/rubocop/cop/style/if_then_else.rb +29 -0
  75. data/lib/rubocop/cop/style/if_with_semicolon.rb +20 -0
  76. data/lib/rubocop/cop/style/lambda.rb +47 -0
  77. data/lib/rubocop/cop/style/leading_comment_space.rb +25 -0
  78. data/lib/rubocop/cop/style/line_continuation.rb +26 -0
  79. data/lib/rubocop/cop/style/line_length.rb +30 -0
  80. data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +61 -0
  81. data/lib/rubocop/cop/style/method_call_parentheses.rb +22 -0
  82. data/lib/rubocop/cop/style/method_length.rb +57 -0
  83. data/lib/rubocop/cop/style/multiline_if_then.rb +47 -0
  84. data/lib/rubocop/cop/style/not.rb +24 -0
  85. data/lib/rubocop/cop/style/numeric_literals.rb +25 -0
  86. data/lib/rubocop/cop/style/one_line_conditional.rb +20 -0
  87. data/lib/rubocop/cop/style/op_method.rb +29 -0
  88. data/lib/rubocop/cop/style/parameter_lists.rb +42 -0
  89. data/lib/rubocop/cop/style/parentheses_around_condition.rb +42 -0
  90. data/lib/rubocop/cop/style/proc.rb +30 -0
  91. data/lib/rubocop/cop/style/reduce_arguments.rb +34 -0
  92. data/lib/rubocop/cop/style/regexp_literal.rb +39 -0
  93. data/lib/rubocop/cop/style/rescue_modifier.rb +55 -0
  94. data/lib/rubocop/cop/style/semicolon.rb +51 -0
  95. data/lib/rubocop/cop/style/single_line_methods.rb +48 -0
  96. data/lib/rubocop/cop/style/space_after_comma_etc.rb +69 -0
  97. data/lib/rubocop/cop/style/space_after_control_keyword.rb +32 -0
  98. data/lib/rubocop/cop/style/string_literals.rb +36 -0
  99. data/lib/rubocop/cop/style/surrounding_space.rb +314 -0
  100. data/lib/rubocop/cop/style/symbol_array.rb +31 -0
  101. data/lib/rubocop/cop/style/symbol_name.rb +27 -0
  102. data/lib/rubocop/cop/style/tab.rb +25 -0
  103. data/lib/rubocop/cop/style/ternary_operator.rb +49 -0
  104. data/lib/rubocop/cop/style/trailing_whitespace.rb +24 -0
  105. data/lib/rubocop/cop/style/trivial_accessors.rb +32 -0
  106. data/lib/rubocop/cop/style/unless_else.rb +26 -0
  107. data/lib/rubocop/cop/style/variable_interpolation.rb +32 -0
  108. data/lib/rubocop/cop/style/when_then.rb +25 -0
  109. data/lib/rubocop/cop/style/while_until_do.rb +45 -0
  110. data/lib/rubocop/cop/style/word_array.rb +44 -0
  111. data/lib/rubocop/cop/util.rb +27 -0
  112. data/lib/rubocop/cop/variable_inspector.rb +280 -0
  113. data/lib/rubocop/formatter/base_formatter.rb +119 -0
  114. data/lib/rubocop/formatter/clang_style_formatter.rb +21 -0
  115. data/lib/rubocop/formatter/emacs_style_formatter.rb +17 -0
  116. data/lib/rubocop/formatter/formatter_set.rb +77 -0
  117. data/lib/rubocop/formatter/json_formatter.rb +76 -0
  118. data/lib/rubocop/formatter/progress_formatter.rb +63 -0
  119. data/lib/rubocop/formatter/simple_text_formatter.rb +62 -0
  120. data/lib/rubocop/version.rb +21 -0
  121. data/rubocop.gemspec +36 -0
  122. data/spec/.rubocop.yml +5 -0
  123. data/spec/project_spec.rb +24 -0
  124. data/spec/rubocop/cli_spec.rb +906 -0
  125. data/spec/rubocop/config_spec.rb +470 -0
  126. data/spec/rubocop/config_store_spec.rb +66 -0
  127. data/spec/rubocop/cops/cop_spec.rb +38 -0
  128. data/spec/rubocop/cops/lint/assignment_in_condition_spec.rb +111 -0
  129. data/spec/rubocop/cops/lint/end_alignment_spec.rb +333 -0
  130. data/spec/rubocop/cops/lint/end_in_method_spec.rb +35 -0
  131. data/spec/rubocop/cops/lint/ensure_return_spec.rb +37 -0
  132. data/spec/rubocop/cops/lint/eval_spec.rb +41 -0
  133. data/spec/rubocop/cops/lint/handle_exceptions_spec.rb +36 -0
  134. data/spec/rubocop/cops/lint/literal_in_condition_spec.rb +42 -0
  135. data/spec/rubocop/cops/lint/loop_spec.rb +33 -0
  136. data/spec/rubocop/cops/lint/rescue_exception_spec.rb +127 -0
  137. data/spec/rubocop/cops/lint/shadowing_outer_local_variable_spec.rb +243 -0
  138. data/spec/rubocop/cops/lint/unreachable_code_spec.rb +69 -0
  139. data/spec/rubocop/cops/lint/unused_local_variable_spec.rb +497 -0
  140. data/spec/rubocop/cops/lint/void_spec.rb +63 -0
  141. data/spec/rubocop/cops/offence_spec.rb +133 -0
  142. data/spec/rubocop/cops/rails/validation_spec.rb +27 -0
  143. data/spec/rubocop/cops/style/access_control_spec.rb +142 -0
  144. data/spec/rubocop/cops/style/alias_spec.rb +47 -0
  145. data/spec/rubocop/cops/style/align_parameters_spec.rb +199 -0
  146. data/spec/rubocop/cops/style/and_or_spec.rb +39 -0
  147. data/spec/rubocop/cops/style/ascii_comments_spec.rb +28 -0
  148. data/spec/rubocop/cops/style/ascii_identifiers_spec.rb +28 -0
  149. data/spec/rubocop/cops/style/attr_spec.rb +20 -0
  150. data/spec/rubocop/cops/style/avoid_class_vars_spec.rb +27 -0
  151. data/spec/rubocop/cops/style/avoid_for_spec.rb +37 -0
  152. data/spec/rubocop/cops/style/avoid_global_vars_spec.rb +34 -0
  153. data/spec/rubocop/cops/style/avoid_perl_backrefs_spec.rb +20 -0
  154. data/spec/rubocop/cops/style/avoid_perlisms_spec.rb +47 -0
  155. data/spec/rubocop/cops/style/begin_block_spec.rb +19 -0
  156. data/spec/rubocop/cops/style/block_comments_spec.rb +27 -0
  157. data/spec/rubocop/cops/style/block_nesting_spec.rb +159 -0
  158. data/spec/rubocop/cops/style/blocks_spec.rb +35 -0
  159. data/spec/rubocop/cops/style/case_equality_spec.rb +18 -0
  160. data/spec/rubocop/cops/style/case_indentation_spec.rb +88 -0
  161. data/spec/rubocop/cops/style/character_literal_spec.rb +28 -0
  162. data/spec/rubocop/cops/style/class_and_module_camel_case_spec.rb +46 -0
  163. data/spec/rubocop/cops/style/class_methods_spec.rb +51 -0
  164. data/spec/rubocop/cops/style/collection_methods_spec.rb +41 -0
  165. data/spec/rubocop/cops/style/colon_method_call_spec.rb +55 -0
  166. data/spec/rubocop/cops/style/constant_name_spec.rb +56 -0
  167. data/spec/rubocop/cops/style/def_with_parentheses_spec.rb +40 -0
  168. data/spec/rubocop/cops/style/def_without_parentheses_spec.rb +34 -0
  169. data/spec/rubocop/cops/style/documentation_spec.rb +79 -0
  170. data/spec/rubocop/cops/style/dot_position_spec.rb +30 -0
  171. data/spec/rubocop/cops/style/empty_line_between_defs_spec.rb +85 -0
  172. data/spec/rubocop/cops/style/empty_lines_spec.rb +40 -0
  173. data/spec/rubocop/cops/style/empty_literal_spec.rb +91 -0
  174. data/spec/rubocop/cops/style/encoding_spec.rb +49 -0
  175. data/spec/rubocop/cops/style/end_block_spec.rb +19 -0
  176. data/spec/rubocop/cops/style/end_of_line_spec.rb +25 -0
  177. data/spec/rubocop/cops/style/favor_join_spec.rb +37 -0
  178. data/spec/rubocop/cops/style/favor_modifier_spec.rb +160 -0
  179. data/spec/rubocop/cops/style/favor_sprintf_spec.rb +53 -0
  180. data/spec/rubocop/cops/style/favor_unless_over_negated_if_spec.rb +64 -0
  181. data/spec/rubocop/cops/style/favor_until_over_negated_while_spec.rb +47 -0
  182. data/spec/rubocop/cops/style/hash_syntax_spec.rb +51 -0
  183. data/spec/rubocop/cops/style/if_with_semicolon_spec.rb +25 -0
  184. data/spec/rubocop/cops/style/lambda_spec.rb +45 -0
  185. data/spec/rubocop/cops/style/leading_comment_space_spec.rb +65 -0
  186. data/spec/rubocop/cops/style/line_continuation_spec.rb +26 -0
  187. data/spec/rubocop/cops/style/line_length_spec.rb +25 -0
  188. data/spec/rubocop/cops/style/method_and_variable_snake_case_spec.rb +95 -0
  189. data/spec/rubocop/cops/style/method_call_parentheses_spec.rb +25 -0
  190. data/spec/rubocop/cops/style/method_length_spec.rb +151 -0
  191. data/spec/rubocop/cops/style/multiline_if_then_spec.rb +97 -0
  192. data/spec/rubocop/cops/style/not_spec.rb +28 -0
  193. data/spec/rubocop/cops/style/numeric_literals_spec.rb +51 -0
  194. data/spec/rubocop/cops/style/one_line_conditional_spec.rb +18 -0
  195. data/spec/rubocop/cops/style/op_method_spec.rb +80 -0
  196. data/spec/rubocop/cops/style/parameter_lists_spec.rb +49 -0
  197. data/spec/rubocop/cops/style/parentheses_around_condition_spec.rb +59 -0
  198. data/spec/rubocop/cops/style/proc_spec.rb +28 -0
  199. data/spec/rubocop/cops/style/reduce_arguments_spec.rb +59 -0
  200. data/spec/rubocop/cops/style/regexp_literal_spec.rb +83 -0
  201. data/spec/rubocop/cops/style/rescue_modifier_spec.rb +122 -0
  202. data/spec/rubocop/cops/style/semicolon_spec.rb +95 -0
  203. data/spec/rubocop/cops/style/single_line_methods_spec.rb +54 -0
  204. data/spec/rubocop/cops/style/space_after_colon_spec.rb +29 -0
  205. data/spec/rubocop/cops/style/space_after_comma_spec.rb +31 -0
  206. data/spec/rubocop/cops/style/space_after_control_keyword_spec.rb +69 -0
  207. data/spec/rubocop/cops/style/space_after_semicolon_spec.rb +24 -0
  208. data/spec/rubocop/cops/style/space_around_braces_spec.rb +49 -0
  209. data/spec/rubocop/cops/style/space_around_equals_in_default_parameter_spec.rb +34 -0
  210. data/spec/rubocop/cops/style/space_around_operators_spec.rb +216 -0
  211. data/spec/rubocop/cops/style/space_inside_brackets_spec.rb +51 -0
  212. data/spec/rubocop/cops/style/space_inside_hash_literal_braces_spec.rb +99 -0
  213. data/spec/rubocop/cops/style/space_inside_parens_spec.rb +33 -0
  214. data/spec/rubocop/cops/style/string_literals_spec.rb +62 -0
  215. data/spec/rubocop/cops/style/symbol_array_spec.rb +45 -0
  216. data/spec/rubocop/cops/style/symbol_name_spec.rb +122 -0
  217. data/spec/rubocop/cops/style/tab_spec.rb +23 -0
  218. data/spec/rubocop/cops/style/ternary_operator_spec.rb +42 -0
  219. data/spec/rubocop/cops/style/trailing_whitespace_spec.rb +29 -0
  220. data/spec/rubocop/cops/style/trivial_accessors_spec.rb +338 -0
  221. data/spec/rubocop/cops/style/unless_else_spec.rb +31 -0
  222. data/spec/rubocop/cops/style/variable_interpolation_spec.rb +53 -0
  223. data/spec/rubocop/cops/style/when_then_spec.rb +40 -0
  224. data/spec/rubocop/cops/style/while_until_do_spec.rb +47 -0
  225. data/spec/rubocop/cops/style/word_array_spec.rb +61 -0
  226. data/spec/rubocop/cops/variable_inspector_spec.rb +374 -0
  227. data/spec/rubocop/formatter/base_formatter_spec.rb +190 -0
  228. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +70 -0
  229. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +32 -0
  230. data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
  231. data/spec/rubocop/formatter/json_formatter_spec.rb +142 -0
  232. data/spec/rubocop/formatter/progress_formatter_spec.rb +196 -0
  233. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +74 -0
  234. data/spec/spec_helper.rb +92 -0
  235. data/spec/support/file_helper.rb +21 -0
  236. data/spec/support/isolated_environment.rb +27 -0
  237. data/spec/support/mri_syntax_checker.rb +69 -0
  238. data/spec/support/shared_examples.rb +33 -0
  239. metadata +517 -0
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe Blocks do
9
+ let(:blocks) { Blocks.new }
10
+
11
+ it 'registers an offence for a multiline block with braces' do
12
+ inspect_source(blocks, ['each { |x|',
13
+ '}'])
14
+ expect(blocks.messages).to eq([Blocks::MULTI_LINE_MSG])
15
+ end
16
+
17
+ it 'accepts a multiline block with do-end' do
18
+ inspect_source(blocks, ['each do |x|',
19
+ 'end'])
20
+ expect(blocks.offences.map(&:message)).to be_empty
21
+ end
22
+
23
+ it 'registers an offence for a single line block with do-end' do
24
+ inspect_source(blocks, ['each do |x| end'])
25
+ expect(blocks.messages).to eq([Blocks::SINGLE_LINE_MSG])
26
+ end
27
+
28
+ it 'accepts a single line block with braces' do
29
+ inspect_source(blocks, ['each { |x| }'])
30
+ expect(blocks.offences.map(&:message)).to be_empty
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe CaseEquality do
9
+ let(:ce) { CaseEquality.new }
10
+
11
+ it 'registers an offence for ===' do
12
+ inspect_source(ce, ['Array === var'])
13
+ expect(ce.offences.size).to eq(1)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,88 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe CaseIndentation do
9
+ let(:ind) { CaseIndentation.new }
10
+
11
+ it "registers an offence for a when clause that's deeper than case" do
12
+ source = ['case a',
13
+ ' when 0 then return',
14
+ ' case b',
15
+ ' when 1 then return',
16
+ ' end',
17
+ 'end']
18
+ inspect_source(ind, source)
19
+ expect(ind.offences.map(&:message)).to eq(
20
+ ['Indent when as deep as case.'] * 2)
21
+ end
22
+
23
+ it "accepts a when clause that's equally indented with case" do
24
+ source = ['y = case a',
25
+ ' when 0 then break',
26
+ ' when 0 then return',
27
+ ' z = case b',
28
+ ' when 1 then return',
29
+ ' when 1 then break',
30
+ ' end',
31
+ ' end',
32
+ 'case c',
33
+ 'when 2 then encoding',
34
+ 'end',
35
+ '']
36
+ inspect_source(ind, source)
37
+ expect(ind.offences).to be_empty
38
+ end
39
+
40
+ it "doesn't get confused by strings with case in them" do
41
+ source = ['a = "case"',
42
+ 'case x',
43
+ 'when 0',
44
+ 'end',
45
+ '']
46
+ inspect_source(ind, source)
47
+ expect(ind.offences.map(&:message)).to be_empty
48
+ end
49
+
50
+ it "doesn't get confused by symbols named case or when" do
51
+ source = ['KEYWORDS = { :case => true, :when => true }',
52
+ 'case type',
53
+ 'when 0',
54
+ ' ParameterNode',
55
+ 'when 1',
56
+ ' MethodCallNode',
57
+ 'end',
58
+ '']
59
+ inspect_source(ind, source)
60
+ expect(ind.offences.map(&:message)).to be_empty
61
+ end
62
+
63
+ it 'accepts correctly indented whens in complex combinations' do
64
+ source = ['each {',
65
+ ' case state',
66
+ ' when 0',
67
+ ' case name',
68
+ ' when :a',
69
+ ' end',
70
+ ' when 1',
71
+ ' loop {',
72
+ ' case name',
73
+ ' when :b',
74
+ ' end',
75
+ ' }',
76
+ ' end',
77
+ '}',
78
+ 'case s',
79
+ 'when Array',
80
+ 'end',
81
+ '']
82
+ inspect_source(ind, source)
83
+ expect(ind.offences.map(&:message)).to be_empty
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe CharacterLiteral do
9
+ let(:cop) { CharacterLiteral.new }
10
+
11
+ it 'registers an offence for character literals' do
12
+ inspect_source(cop, ['x = ?x'])
13
+ expect(cop.offences.size).to eq(1)
14
+ end
15
+
16
+ it 'registers an offence for literals like \n' do
17
+ inspect_source(cop, ['x = ?\n'])
18
+ expect(cop.offences.size).to eq(1)
19
+ end
20
+
21
+ it 'accepts literals like ?\C-\M-d' do
22
+ inspect_source(cop, ['x = ?\C-\M-d'])
23
+ expect(cop.offences).to be_empty
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe ClassAndModuleCamelCase do
9
+ let(:camel_case) { ClassAndModuleCamelCase.new }
10
+
11
+ it 'registers an offence for underscore in class and module name' do
12
+ inspect_source(camel_case,
13
+ ['class My_Class',
14
+ 'end',
15
+ '',
16
+ 'module My_Module',
17
+ 'end',
18
+ ])
19
+ expect(camel_case.offences.size).to eq(2)
20
+ end
21
+
22
+ it 'is not fooled by qualified names' do
23
+ inspect_source(camel_case,
24
+ ['class Top::My_Class',
25
+ 'end',
26
+ '',
27
+ 'module My_Module::Ala',
28
+ 'end',
29
+ ])
30
+ expect(camel_case.offences.size).to eq(2)
31
+ end
32
+
33
+ it 'accepts CamelCase names' do
34
+ inspect_source(camel_case,
35
+ ['class MyClass',
36
+ 'end',
37
+ '',
38
+ 'module Mine',
39
+ 'end',
40
+ ])
41
+ expect(camel_case.offences).to be_empty
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe ClassMethods do
9
+ let(:cm) { ClassMethods.new }
10
+
11
+ it 'registers an offence for methods using a class name' do
12
+ inspect_source(cm,
13
+ ['class Test',
14
+ ' def Test.some_method',
15
+ ' do_something',
16
+ ' end',
17
+ 'end'])
18
+ expect(cm.offences.size).to eq(1)
19
+ end
20
+
21
+ it 'registers an offence for methods using a module name' do
22
+ inspect_source(cm,
23
+ ['module Test',
24
+ ' def Test.some_method',
25
+ ' do_something',
26
+ ' end',
27
+ 'end'])
28
+ expect(cm.offences.size).to eq(1)
29
+ end
30
+
31
+ it 'does not register an offence for methods using self' do
32
+ inspect_source(cm,
33
+ ['module Test',
34
+ ' def self.some_method',
35
+ ' do_something',
36
+ ' end',
37
+ 'end'])
38
+ expect(cm.offences).to be_empty
39
+ end
40
+
41
+ it 'does not register an offence outside class/module bodies' do
42
+ inspect_source(cm,
43
+ ['def self.some_method',
44
+ ' do_something',
45
+ 'end'])
46
+ expect(cm.offences).to be_empty
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe CollectionMethods do
9
+ let(:cop) { CollectionMethods.new }
10
+
11
+ CollectionMethods::PREFERRED_METHODS.keys.each do |method|
12
+ it "registers an offence for #{method} with block" do
13
+ inspect_source(cop, ["[1, 2, 3].#{method} { |e| e + 1 }"])
14
+ expect(cop.offences.size).to eq(1)
15
+ preferred_method = CollectionMethods::PREFERRED_METHODS[method]
16
+ expect(cop.messages)
17
+ .to eq(["Prefer #{preferred_method} over #{method}."])
18
+ end
19
+
20
+ it "registers an offence for #{method} with proc param" do
21
+ inspect_source(cop, ["[1, 2, 3].#{method}(&:test)"])
22
+ expect(cop.offences.size).to eq(1)
23
+ preferred_method = CollectionMethods::PREFERRED_METHODS[method]
24
+ expect(cop.messages)
25
+ .to eq(["Prefer #{preferred_method} over #{method}."])
26
+ end
27
+
28
+ it "accepts #{method} with more than 1 param" do
29
+ inspect_source(cop, ["[1, 2, 3].#{method}(other, &:test)"])
30
+ expect(cop.offences).to be_empty
31
+ end
32
+
33
+ it "accepts #{method} without a block" do
34
+ inspect_source(cop, ["[1, 2, 3].#{method}"])
35
+ expect(cop.offences).to be_empty
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe ColonMethodCall do
9
+ let(:smc) { ColonMethodCall.new }
10
+
11
+ it 'registers an offence for instance method call' do
12
+ inspect_source(smc,
13
+ ['test::method_name'])
14
+ expect(smc.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'registers an offence for instance method call with arg' do
18
+ inspect_source(smc,
19
+ ['test::method_name(arg)'])
20
+ expect(smc.offences.size).to eq(1)
21
+ end
22
+
23
+ it 'registers an offence for class method call' do
24
+ inspect_source(smc,
25
+ ['Class::method_name'])
26
+ expect(smc.offences.size).to eq(1)
27
+ end
28
+
29
+ it 'registers an offence for class method call with arg' do
30
+ inspect_source(smc,
31
+ ['Class::method_name(arg, arg2)'])
32
+ expect(smc.offences.size).to eq(1)
33
+ end
34
+
35
+ it 'does not register an offence for constant access' do
36
+ inspect_source(smc,
37
+ ['Tip::Top::SOME_CONST'])
38
+ expect(smc.offences).to be_empty
39
+ end
40
+
41
+ it 'does not register an offence for nested class' do
42
+ inspect_source(smc,
43
+ ['Tip::Top.some_method'])
44
+ expect(smc.offences).to be_empty
45
+ end
46
+
47
+ it 'does not register an offence for op methods' do
48
+ inspect_source(smc,
49
+ ['Tip::Top.some_method[3]'])
50
+ expect(smc.offences).to be_empty
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe ConstantName do
9
+ let(:const) { ConstantName.new }
10
+
11
+ it 'registers an offence for camel case in const name' do
12
+ inspect_source(const,
13
+ ['TopCase = 5'])
14
+ expect(const.offences.size).to eq(1)
15
+ end
16
+
17
+ it 'registers offences for camel case in multiple const assignment' do
18
+ inspect_source(const,
19
+ ['TopCase, Test2, TEST_3 = 5, 6, 7'])
20
+ expect(const.offences.size).to eq(2)
21
+ end
22
+
23
+ it 'registers an offence for snake case in const name' do
24
+ inspect_source(const,
25
+ ['TOP_test = 5'])
26
+ expect(const.offences.size).to eq(1)
27
+ end
28
+
29
+ it 'allows screaming snake case in const name' do
30
+ inspect_source(const,
31
+ ['TOP_TEST = 5'])
32
+ expect(const.offences).to be_empty
33
+ end
34
+
35
+ it 'allows screaming snake case in multiple const assignment' do
36
+ inspect_source(const,
37
+ ['TOP_TEST, TEST_2 = 5, 6'])
38
+ expect(const.offences).to be_empty
39
+ end
40
+
41
+ it 'does not check names if rhs is a method call' do
42
+ inspect_source(const,
43
+ ['AnythingGoes = test'])
44
+ expect(const.offences).to be_empty
45
+ end
46
+
47
+ it 'checks qualified const names' do
48
+ inspect_source(const,
49
+ ['::AnythingGoes = 30',
50
+ 'a::Bar_foo = 10'])
51
+ expect(const.offences.size).to eq(2)
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Style
8
+ describe DefWithParentheses do
9
+ let(:def_par) { DefWithParentheses.new }
10
+
11
+ it 'reports an offence for def with empty parens' do
12
+ src = ['def func()',
13
+ 'end']
14
+ inspect_source(def_par, src)
15
+ expect(def_par.offences.size).to eq(1)
16
+ end
17
+
18
+ it 'reports an offence for class def with empty parens' do
19
+ src = ['def Test.func()',
20
+ 'end']
21
+ inspect_source(def_par, src)
22
+ expect(def_par.offences.size).to eq(1)
23
+ end
24
+
25
+ it 'accepts def with arg and parens' do
26
+ src = ['def func(a)',
27
+ 'end']
28
+ inspect_source(def_par, src)
29
+ expect(def_par.offences).to be_empty
30
+ end
31
+
32
+ it 'accepts empty parentheses in one liners' do
33
+ src = ["def to_s() join '/' end"]
34
+ inspect_source(def_par, src)
35
+ expect(def_par.offences).to be_empty
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end