rubocop 0.13.1 → 0.14.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 (222) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/CHANGELOG.md +42 -0
  4. data/README.md +59 -54
  5. data/config/default.yml +124 -95
  6. data/config/disabled.yml +4 -0
  7. data/config/enabled.yml +286 -264
  8. data/lib/rubocop.rb +10 -3
  9. data/lib/rubocop/cli.rb +10 -171
  10. data/lib/rubocop/cop/cop.rb +14 -11
  11. data/lib/rubocop/cop/lint/debugger.rb +35 -0
  12. data/lib/rubocop/cop/lint/syntax.rb +34 -0
  13. data/lib/rubocop/cop/offence.rb +15 -23
  14. data/lib/rubocop/cop/style/align_array.rb +1 -10
  15. data/lib/rubocop/cop/style/align_hash.rb +14 -2
  16. data/lib/rubocop/cop/style/align_parameters.rb +1 -11
  17. data/lib/rubocop/cop/style/and_or.rb +13 -11
  18. data/lib/rubocop/cop/style/attr.rb +1 -1
  19. data/lib/rubocop/cop/style/autocorrect_alignment.rb +31 -6
  20. data/lib/rubocop/cop/style/blocks.rb +14 -6
  21. data/lib/rubocop/cop/style/character_literal.rb +1 -1
  22. data/lib/rubocop/cop/style/class_length.rb +38 -0
  23. data/lib/rubocop/cop/style/collection_methods.rb +1 -1
  24. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  25. data/lib/rubocop/cop/style/configurable_naming.rb +47 -0
  26. data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
  27. data/lib/rubocop/cop/style/empty_literal.rb +1 -1
  28. data/lib/rubocop/cop/style/even_odd.rb +7 -3
  29. data/lib/rubocop/cop/style/hash_methods.rb +1 -1
  30. data/lib/rubocop/cop/style/hash_syntax.rb +36 -7
  31. data/lib/rubocop/cop/style/lambda_call.rb +36 -11
  32. data/lib/rubocop/cop/style/method_call_parentheses.rb +1 -1
  33. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +41 -0
  34. data/lib/rubocop/cop/style/method_length.rb +2 -13
  35. data/lib/rubocop/cop/style/method_name.rb +42 -0
  36. data/lib/rubocop/cop/style/numeric_literals.rb +4 -0
  37. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  38. data/lib/rubocop/cop/style/raise_args.rb +60 -0
  39. data/lib/rubocop/cop/style/redundant_exception.rb +32 -0
  40. data/lib/rubocop/cop/style/redundant_return.rb +14 -5
  41. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  42. data/lib/rubocop/cop/style/semicolon.rb +13 -4
  43. data/lib/rubocop/cop/style/signal_exception.rb +63 -14
  44. data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
  45. data/lib/rubocop/cop/style/string_help.rb +4 -1
  46. data/lib/rubocop/cop/style/string_literals.rb +34 -11
  47. data/lib/rubocop/cop/style/surrounding_space.rb +64 -17
  48. data/lib/rubocop/cop/style/tab.rb +1 -1
  49. data/lib/rubocop/cop/style/variable_name.rb +44 -0
  50. data/lib/rubocop/cop/style/when_then.rb +1 -1
  51. data/lib/rubocop/cop/style/while_until_do.rb +1 -1
  52. data/lib/rubocop/cop/team.rb +4 -7
  53. data/lib/rubocop/cop/util.rb +12 -0
  54. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
  55. data/lib/rubocop/formatter/emacs_style_formatter.rb +5 -2
  56. data/lib/rubocop/formatter/json_formatter.rb +1 -0
  57. data/lib/rubocop/formatter/progress_formatter.rb +9 -13
  58. data/lib/rubocop/formatter/simple_text_formatter.rb +63 -15
  59. data/lib/rubocop/options.rb +184 -0
  60. data/lib/rubocop/processed_source.rb +4 -0
  61. data/lib/rubocop/version.rb +1 -1
  62. data/rubocop.gemspec +1 -1
  63. data/spec/rubocop/cli_spec.rb +870 -1001
  64. data/spec/rubocop/config_spec.rb +13 -13
  65. data/spec/rubocop/config_store_spec.rb +38 -37
  66. data/spec/rubocop/cop/commissioner_spec.rb +42 -46
  67. data/spec/rubocop/cop/cop_spec.rb +72 -77
  68. data/spec/rubocop/cop/corrector_spec.rb +51 -55
  69. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +100 -106
  70. data/spec/rubocop/cop/lint/block_alignment_spec.rb +403 -409
  71. data/spec/rubocop/cop/lint/debugger_spec.rb +39 -0
  72. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +19 -25
  73. data/spec/rubocop/cop/lint/end_alignment_spec.rb +50 -56
  74. data/spec/rubocop/cop/lint/end_in_method_spec.rb +20 -26
  75. data/spec/rubocop/cop/lint/ensure_return_spec.rb +30 -36
  76. data/spec/rubocop/cop/lint/eval_spec.rb +25 -31
  77. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +22 -28
  78. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +51 -57
  79. data/spec/rubocop/cop/lint/loop_spec.rb +17 -23
  80. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +51 -57
  81. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +105 -111
  82. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +230 -236
  83. data/spec/rubocop/cop/lint/syntax_spec.rb +33 -0
  84. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +51 -57
  85. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1544 -1550
  86. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +21 -27
  87. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +119 -125
  88. data/spec/rubocop/cop/lint/void_spec.rb +50 -56
  89. data/spec/rubocop/cop/offence_spec.rb +101 -131
  90. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +6 -12
  91. data/spec/rubocop/cop/rails/read_attribute_spec.rb +6 -12
  92. data/spec/rubocop/cop/rails/validation_spec.rb +13 -19
  93. data/spec/rubocop/cop/style/access_control_spec.rb +146 -152
  94. data/spec/rubocop/cop/style/alias_spec.rb +30 -36
  95. data/spec/rubocop/cop/style/align_array_spec.rb +57 -56
  96. data/spec/rubocop/cop/style/align_hash_spec.rb +256 -237
  97. data/spec/rubocop/cop/style/align_parameters_spec.rb +216 -202
  98. data/spec/rubocop/cop/style/and_or_spec.rb +51 -55
  99. data/spec/rubocop/cop/style/ascii_comments_spec.rb +14 -20
  100. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +26 -32
  101. data/spec/rubocop/cop/style/attr_spec.rb +11 -17
  102. data/spec/rubocop/cop/style/begin_block_spec.rb +6 -12
  103. data/spec/rubocop/cop/style/block_comments_spec.rb +13 -19
  104. data/spec/rubocop/cop/style/block_nesting_spec.rb +134 -140
  105. data/spec/rubocop/cop/style/blocks_spec.rb +81 -84
  106. data/spec/rubocop/cop/style/case_equality_spec.rb +5 -11
  107. data/spec/rubocop/cop/style/case_indentation_spec.rb +71 -77
  108. data/spec/rubocop/cop/style/character_literal_spec.rb +31 -37
  109. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +31 -37
  110. data/spec/rubocop/cop/style/class_length_spec.rb +65 -0
  111. data/spec/rubocop/cop/style/class_methods_spec.rb +35 -41
  112. data/spec/rubocop/cop/style/class_vars_spec.rb +11 -17
  113. data/spec/rubocop/cop/style/collection_methods_spec.rb +41 -47
  114. data/spec/rubocop/cop/style/colon_method_call_spec.rb +45 -51
  115. data/spec/rubocop/cop/style/comment_annotation_spec.rb +79 -85
  116. data/spec/rubocop/cop/style/constant_name_spec.rb +45 -51
  117. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +28 -34
  118. data/spec/rubocop/cop/style/def_without_parentheses_spec.rb +23 -29
  119. data/spec/rubocop/cop/style/documentation_spec.rb +60 -66
  120. data/spec/rubocop/cop/style/dot_position_spec.rb +50 -56
  121. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +109 -110
  122. data/spec/rubocop/cop/style/empty_lines_spec.rb +28 -34
  123. data/spec/rubocop/cop/style/empty_literal_spec.rb +80 -86
  124. data/spec/rubocop/cop/style/encoding_spec.rb +50 -56
  125. data/spec/rubocop/cop/style/end_block_spec.rb +6 -12
  126. data/spec/rubocop/cop/style/end_of_line_spec.rb +13 -19
  127. data/spec/rubocop/cop/style/even_odd_spec.rb +69 -41
  128. data/spec/rubocop/cop/style/favor_join_spec.rb +21 -27
  129. data/spec/rubocop/cop/style/favor_modifier_spec.rb +180 -176
  130. data/spec/rubocop/cop/style/favor_sprintf_spec.rb +41 -47
  131. data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +63 -69
  132. data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +32 -38
  133. data/spec/rubocop/cop/style/final_newline_spec.rb +16 -22
  134. data/spec/rubocop/cop/style/for_spec.rb +18 -24
  135. data/spec/rubocop/cop/style/global_vars_spec.rb +23 -29
  136. data/spec/rubocop/cop/style/hash_methods_spec.rb +39 -45
  137. data/spec/rubocop/cop/style/hash_syntax_spec.rb +93 -65
  138. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +11 -17
  139. data/spec/rubocop/cop/style/indentation_width_spec.rb +377 -383
  140. data/spec/rubocop/cop/style/lambda_call_spec.rb +40 -22
  141. data/spec/rubocop/cop/style/lambda_spec.rb +30 -34
  142. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +44 -50
  143. data/spec/rubocop/cop/style/line_length_spec.rb +11 -17
  144. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +14 -20
  145. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +60 -0
  146. data/spec/rubocop/cop/style/method_length_spec.rb +127 -133
  147. data/spec/rubocop/cop/style/method_name_spec.rb +103 -0
  148. data/spec/rubocop/cop/style/module_function_spec.rb +16 -22
  149. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +64 -70
  150. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +74 -80
  151. data/spec/rubocop/cop/style/nil_comparison_spec.rb +20 -26
  152. data/spec/rubocop/cop/style/not_spec.rb +13 -19
  153. data/spec/rubocop/cop/style/numeric_literals_spec.rb +36 -35
  154. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +5 -11
  155. data/spec/rubocop/cop/style/op_method_spec.rb +61 -67
  156. data/spec/rubocop/cop/style/parameter_lists_spec.rb +31 -37
  157. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +62 -68
  158. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +9 -15
  159. data/spec/rubocop/cop/style/proc_spec.rb +13 -19
  160. data/spec/rubocop/cop/style/raise_args_spec.rb +55 -0
  161. data/spec/rubocop/cop/style/reduce_arguments_spec.rb +49 -55
  162. data/spec/rubocop/cop/style/redundant_begin_spec.rb +47 -53
  163. data/spec/rubocop/cop/style/redundant_exception_spec.rb +27 -0
  164. data/spec/rubocop/cop/style/redundant_return_spec.rb +164 -72
  165. data/spec/rubocop/cop/style/redundant_self_spec.rb +109 -115
  166. data/spec/rubocop/cop/style/regexp_literal_spec.rb +57 -63
  167. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +99 -105
  168. data/spec/rubocop/cop/style/semicolon_spec.rb +95 -90
  169. data/spec/rubocop/cop/style/signal_exception_spec.rb +248 -95
  170. data/spec/rubocop/cop/style/single_line_methods_spec.rb +45 -51
  171. data/spec/rubocop/cop/style/space_after_colon_spec.rb +14 -20
  172. data/spec/rubocop/cop/style/space_after_comma_spec.rb +16 -22
  173. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +48 -54
  174. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +49 -55
  175. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +10 -16
  176. data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +118 -50
  177. data/spec/rubocop/cop/style/space_around_equals_in_default_parameter_spec.rb +18 -24
  178. data/spec/rubocop/cop/style/space_around_operators_spec.rb +204 -210
  179. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +36 -42
  180. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +39 -45
  181. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +62 -68
  182. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +18 -24
  183. data/spec/rubocop/cop/style/special_global_vars_spec.rb +40 -46
  184. data/spec/rubocop/cop/style/string_literals_spec.rb +148 -70
  185. data/spec/rubocop/cop/style/symbol_array_spec.rb +28 -34
  186. data/spec/rubocop/cop/style/symbol_name_spec.rb +132 -138
  187. data/spec/rubocop/cop/style/tab_spec.rb +9 -15
  188. data/spec/rubocop/cop/style/ternary_operator_spec.rb +25 -31
  189. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +10 -16
  190. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +14 -20
  191. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +374 -380
  192. data/spec/rubocop/cop/style/unless_else_spec.rb +17 -23
  193. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +36 -42
  194. data/spec/rubocop/cop/style/variable_name_spec.rb +83 -0
  195. data/spec/rubocop/cop/style/when_then_spec.rb +31 -37
  196. data/spec/rubocop/cop/style/while_until_do_spec.rb +47 -53
  197. data/spec/rubocop/cop/style/word_array_spec.rb +49 -55
  198. data/spec/rubocop/cop/team_spec.rb +125 -127
  199. data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +176 -180
  200. data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +580 -586
  201. data/spec/rubocop/cop/variable_inspector/scope_spec.rb +140 -146
  202. data/spec/rubocop/cop/variable_inspector/variable_spec.rb +52 -58
  203. data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +217 -223
  204. data/spec/rubocop/cop/variable_inspector_spec.rb +15 -19
  205. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +35 -36
  206. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +2 -2
  207. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +24 -1
  208. data/spec/rubocop/formatter/file_list_formatter_spec.rb +1 -1
  209. data/spec/rubocop/formatter/formatter_set_spec.rb +3 -3
  210. data/spec/rubocop/formatter/json_formatter_spec.rb +7 -2
  211. data/spec/rubocop/formatter/offence_count_formatter_spec.rb +1 -1
  212. data/spec/rubocop/formatter/progress_formatter_spec.rb +1 -1
  213. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +55 -6
  214. data/spec/rubocop/options_spec.rb +233 -0
  215. data/spec/rubocop/processed_source_spec.rb +85 -42
  216. data/spec/rubocop/source_parser_spec.rb +108 -110
  217. data/spec/rubocop/target_finder_spec.rb +125 -127
  218. data/spec/rubocop/token_spec.rb +15 -17
  219. metadata +32 -8
  220. data/lib/rubocop/backports/bsearch.rb +0 -39
  221. data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +0 -77
  222. data/spec/rubocop/cop/style/method_and_variable_snake_case_spec.rb +0 -102
@@ -2,65 +2,133 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe SpaceAroundBlockBraces, :config do
9
- subject(:cop) { SpaceAroundBlockBraces.new(config) }
10
- let(:cop_config) { { 'NoSpaceBeforeBlockParameters' => false } }
11
-
12
- it 'accepts braces surrounded by spaces' do
13
- inspect_source(cop, ['each { puts }'])
14
- expect(cop.messages).to be_empty
15
- expect(cop.highlights).to be_empty
16
- end
5
+ describe Rubocop::Cop::Style::SpaceAroundBlockBraces, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+ let(:cop_config) do
8
+ {
9
+ 'EnforcedStyle' => 'space_inside_braces',
10
+ 'SpaceBeforeBlockParameters' => true
11
+ }
12
+ end
17
13
 
18
- it 'registers an offence for left brace without outer space' do
19
- inspect_source(cop, ['each{ puts }'])
20
- expect(cop.messages).to eq(["Surrounding space missing for '{'."])
21
- expect(cop.highlights).to eq(['{'])
14
+ it 'accepts braces surrounded by spaces' do
15
+ inspect_source(cop, ['each { puts }'])
16
+ expect(cop.messages).to be_empty
17
+ expect(cop.highlights).to be_empty
18
+ end
19
+
20
+ it 'registers an offence for left brace without outer space' do
21
+ inspect_source(cop, ['each{ puts }'])
22
+ expect(cop.messages).to eq(['Space missing to the left of {.'])
23
+ expect(cop.highlights).to eq(['{'])
24
+ end
25
+
26
+ it 'registers an offence for left brace without inner space' do
27
+ inspect_source(cop, ['each {puts }'])
28
+ expect(cop.messages).to eq(['Space missing inside {.'])
29
+ expect(cop.highlights).to eq(['{'])
30
+ end
31
+
32
+ it 'registers an offence for right brace without inner space' do
33
+ inspect_source(cop, ['each { puts}'])
34
+ expect(cop.messages).to eq(['Space missing inside }.'])
35
+ expect(cop.highlights).to eq(['}'])
36
+ end
37
+
38
+ context 'with passed in parameters' do
39
+ it 'accepts left brace with inner space' do
40
+ inspect_source(cop, ['each { |x| puts }'])
41
+ expect(cop.messages).to be_empty
42
+ expect(cop.highlights).to be_empty
43
+ end
44
+
45
+ it 'registers an offence for left brace without inner space' do
46
+ inspect_source(cop, ['each {|x| puts }'])
47
+ expect(cop.messages).to eq(['Space between { and | missing.'])
48
+ expect(cop.highlights).to eq(['{'])
49
+ end
50
+
51
+ context 'and space before block parameters not allowed' do
52
+ let(:cop_config) do
53
+ {
54
+ 'EnforcedStyle' => 'space_inside_braces',
55
+ 'SpaceBeforeBlockParameters' => false
56
+ }
57
+ end
58
+
59
+ it 'registers an offence for left brace with inner space' do
60
+ inspect_source(cop, ['each { |x| puts }'])
61
+ expect(cop.messages).to eq(['Space between { and | detected.'])
62
+ expect(cop.highlights).to eq([' '])
63
+ end
64
+
65
+ it 'accepts left brace without inner space' do
66
+ inspect_source(cop, ['each {|x| puts }'])
67
+ expect(cop.messages).to be_empty
68
+ expect(cop.highlights).to be_empty
69
+ end
70
+ end
71
+ end
72
+
73
+ context 'configured with no_space_inside_braces' do
74
+ let(:cop_config) do
75
+ {
76
+ 'EnforcedStyle' => 'no_space_inside_braces',
77
+ 'SpaceBeforeBlockParameters' => true
78
+ }
79
+ end
80
+
81
+ it 'accepts braces without spaces inside' do
82
+ inspect_source(cop, ['each {puts}'])
83
+ expect(cop.messages).to be_empty
84
+ expect(cop.highlights).to be_empty
85
+ end
86
+
87
+ it 'registers an offence for left brace with inner space' do
88
+ inspect_source(cop, ['each { puts}'])
89
+ expect(cop.messages).to eq(['Space inside { detected.'])
90
+ expect(cop.highlights).to eq([' '])
91
+ end
92
+
93
+ it 'registers an offence for right brace with inner space' do
94
+ inspect_source(cop, ['each {puts }'])
95
+ expect(cop.messages).to eq(['Space inside } detected.'])
96
+ expect(cop.highlights).to eq([' '])
97
+ end
98
+
99
+ it 'registers an offence for left brace without outer space' do
100
+ inspect_source(cop, ['each{puts}'])
101
+ expect(cop.messages).to eq(['Space missing to the left of {.'])
102
+ expect(cop.highlights).to eq(['{'])
103
+ end
104
+
105
+ context 'with passed in parameters' do
106
+ context 'and space before block parameters allowed' do
107
+ it 'accepts left brace with inner space' do
108
+ inspect_source(cop, ['each { |x| puts}'])
109
+ expect(cop.messages).to eq([])
110
+ expect(cop.highlights).to eq([])
22
111
  end
23
112
 
24
113
  it 'registers an offence for left brace without inner space' do
25
- inspect_source(cop, ['each {puts }'])
26
- expect(cop.messages).to eq(["Surrounding space missing for '{'."])
114
+ inspect_source(cop, ['each {|x| puts}'])
115
+ expect(cop.messages).to eq(['Space between { and | missing.'])
27
116
  expect(cop.highlights).to eq(['{'])
28
117
  end
118
+ end
29
119
 
30
- it 'registers an offence for right brace without inner space' do
31
- inspect_source(cop, ['each { puts}'])
32
- expect(cop.messages).to eq(["Space missing to the left of '}'."])
33
- expect(cop.highlights).to eq(['}'])
120
+ context 'and space before block parameters not allowed' do
121
+ let(:cop_config) do
122
+ {
123
+ 'EnforcedStyle' => 'no_space_inside_braces',
124
+ 'SpaceBeforeBlockParameters' => false
125
+ }
34
126
  end
35
127
 
36
- context 'with passed in parameters' do
37
- it 'accepts left brace with inner space' do
38
- inspect_source(cop, ['each { |x| puts }'])
39
- expect(cop.messages).to be_empty
40
- expect(cop.highlights).to be_empty
41
- end
42
-
43
- it 'registers an offence for left brace without inner space' do
44
- inspect_source(cop, ['each {|x| puts }'])
45
- expect(cop.messages).to eq(["Surrounding space missing for '{'."])
46
- expect(cop.highlights).to eq(['{'])
47
- end
48
-
49
- context 'space before block parameters not allowed' do
50
- let(:cop_config) { { 'NoSpaceBeforeBlockParameters' => true } }
51
-
52
- it 'registers an offence for left brace with inner space' do
53
- inspect_source(cop, ['each { |x| puts }'])
54
- expect(cop.messages).to eq(['Space between { and | detected.'])
55
- expect(cop.highlights).to eq(['{'])
56
- end
57
-
58
- it 'accepts left brace without inner space' do
59
- inspect_source(cop, ['each {|x| puts }'])
60
- expect(cop.messages).to be_empty
61
- expect(cop.highlights).to be_empty
62
- end
63
- end
128
+ it 'registers an offence for left brace with inner space' do
129
+ inspect_source(cop, ['each { |x| puts}'])
130
+ expect(cop.messages).to eq(['Space between { and | detected.'])
131
+ expect(cop.highlights).to eq([' '])
64
132
  end
65
133
  end
66
134
  end
@@ -2,33 +2,27 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe SpaceAroundEqualsInParameterDefault do
9
- subject(:space) { SpaceAroundEqualsInParameterDefault.new }
5
+ describe Rubocop::Cop::Style::SpaceAroundEqualsInParameterDefault do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for default value assignment without space' do
12
- inspect_source(space, ['def f(x, y=0, z=1)', 'end'])
13
- expect(space.messages).to eq(
14
- ['Surrounding space missing in default value assignment.'] * 2)
15
- end
8
+ it 'registers an offence for default value assignment without space' do
9
+ inspect_source(cop, ['def f(x, y=0, z=1)', 'end'])
10
+ expect(cop.messages).to eq(
11
+ ['Surrounding space missing in default value assignment.'] * 2)
12
+ end
16
13
 
17
- it 'registers an offence for assignment empty string without space' do
18
- inspect_source(space, ['def f(x, y="", z=1)', 'end'])
19
- expect(space.offences.size).to eq(2)
20
- end
14
+ it 'registers an offence for assignment empty string without space' do
15
+ inspect_source(cop, ['def f(x, y="", z=1)', 'end'])
16
+ expect(cop.offences.size).to eq(2)
17
+ end
21
18
 
22
- it 'registers an offence for assignment of empty list without space' do
23
- inspect_source(space, ['def f(x, y=[])', 'end'])
24
- expect(space.offences.size).to eq(1)
25
- end
19
+ it 'registers an offence for assignment of empty list without space' do
20
+ inspect_source(cop, ['def f(x, y=[])', 'end'])
21
+ expect(cop.offences.size).to eq(1)
22
+ end
26
23
 
27
- it 'accepts default value assignment with space' do
28
- inspect_source(space, ['def f(x, y = 0, z = {})', 'end'])
29
- expect(space.messages).to be_empty
30
- end
31
- end
32
- end
24
+ it 'accepts default value assignment with space' do
25
+ inspect_source(cop, ['def f(x, y = 0, z = {})', 'end'])
26
+ expect(cop.messages).to be_empty
33
27
  end
34
28
  end
@@ -2,215 +2,209 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe SpaceAroundOperators do
9
- subject(:space) { SpaceAroundOperators.new }
10
-
11
- it 'registers an offence for assignment without space on both sides' do
12
- inspect_source(space, ['x=0', 'y= 0', 'z =0'])
13
- expect(space.messages).to eq(
14
- ["Surrounding space missing for operator '='."] * 3)
15
- end
16
-
17
- it 'registers an offence for ternary operator without space' do
18
- inspect_source(space, ['x == 0?1:2'])
19
- expect(space.messages).to eq(
20
- ["Surrounding space missing for operator '?'.",
21
- "Surrounding space missing for operator ':'."])
22
- end
23
-
24
- it 'registers an offence in presence of modifier if statement' do
25
- check_modifier('if')
26
- end
27
-
28
- it 'registers an offence in presence of modifier unless statement' do
29
- check_modifier('unless')
30
- end
31
-
32
- it 'registers an offence in presence of modifier while statement' do
33
- check_modifier('unless')
34
- end
35
-
36
- it 'registers an offence in presence of modifier until statement' do
37
- check_modifier('unless')
38
- end
39
-
40
- def check_modifier(keyword)
41
- src = ["a=1 #{keyword} condition",
42
- 'c=2']
43
- inspect_source(space, src)
44
- expect(space.offences.map(&:line)).to eq([1, 2])
45
- expect(space.messages).to eq(
46
- ["Surrounding space missing for operator '='."] * 2)
47
- end
48
-
49
- it 'registers an offence for binary operators that could be unary' do
50
- inspect_source(space, ['a-3', 'x&0xff', 'z+0'])
51
- expect(space.messages).to eq(
52
- ["Surrounding space missing for operator '-'.",
53
- "Surrounding space missing for operator '&'.",
54
- "Surrounding space missing for operator '+'."])
55
- end
56
-
57
- it 'registers an offence for arguments to a method' do
58
- inspect_source(space, ['puts 1+2'])
59
- expect(space.messages).to eq(
60
- ["Surrounding space missing for operator '+'."])
61
- end
62
-
63
- it 'accepts operator symbols' do
64
- inspect_source(space, ['func(:-)'])
65
- expect(space.messages).to be_empty
66
- end
67
-
68
- it 'accepts ranges' do
69
- inspect_source(space, ['a, b = (1..2), (1...3)'])
70
- expect(space.messages).to be_empty
71
- end
72
-
73
- it 'accepts scope operator' do
74
- source = ['@io.class == Zlib::GzipWriter']
75
- inspect_source(space, source)
76
- expect(space.messages).to be_empty
77
- end
78
-
79
- it 'accepts ::Kernel::raise' do
80
- source = ['::Kernel::raise IllegalBlockError.new']
81
- inspect_source(space, source)
82
- expect(space.messages).to be_empty
83
- end
84
-
85
- it 'accepts exclamation point negation' do
86
- inspect_source(space, ['x = !a&&!b'])
87
- expect(space.messages).to eq(
88
- ["Surrounding space missing for operator '&&'."])
89
- end
90
-
91
- it 'accepts exclamation point definition' do
92
- inspect_source(space, [' def !',
93
- ' !__getobj__',
94
- ' end'])
95
- expect(space.offences).to be_empty
96
- expect(space.messages).to be_empty
97
- end
98
-
99
- it 'accepts a unary' do
100
- inspect_source(space,
101
- [' def bm(label_width = 0, *labels, &blk)',
102
- ' benchmark(CAPTION, label_width, FORMAT,',
103
- ' *labels, &blk)',
104
- ' end',
105
- '',
106
- ' def each &block',
107
- ' end',
108
- '',
109
- ' def each *args',
110
- ' end',
111
- ''])
112
- expect(space.messages).to be_empty
113
- end
114
-
115
- it 'accepts splat operator' do
116
- inspect_source(space, ['return *list if options'])
117
- expect(space.messages).to be_empty
118
- end
119
-
120
- it 'accepts def of operator' do
121
- inspect_source(space, ['def +(other); end',
122
- 'def self.===(other); end'])
123
- expect(space.messages).to be_empty
124
- end
125
-
126
- it 'accepts an operator at the end of a line' do
127
- inspect_source(space,
128
- ["['Favor unless over if for negative ' +",
129
- " 'conditions.'] * 2"])
130
- expect(space.messages).to eq([])
131
- end
132
-
133
- it 'accepts an assignment with spaces' do
134
- inspect_source(space, ['x = 0'])
135
- expect(space.offences).to be_empty
136
- end
137
-
138
- it 'accepts an operator called with method syntax' do
139
- inspect_source(space, ['Date.today.+(1).to_s'])
140
- expect(space.offences).to be_empty
141
- end
142
-
143
- it 'registers an offence for operators without spaces' do
144
- inspect_source(space,
145
- ['x+= a+b-c*d/e%f^g|h&i||j',
146
- 'y -=k&&l'])
147
- expect(space.messages)
148
- .to eq(["Surrounding space missing for operator '+='.",
149
- "Surrounding space missing for operator '+'.",
150
- "Surrounding space missing for operator '-'.",
151
- "Surrounding space missing for operator '*'.",
152
- "Surrounding space missing for operator '/'.",
153
- "Surrounding space missing for operator '%'.",
154
- "Surrounding space missing for operator '^'.",
155
- "Surrounding space missing for operator '|'.",
156
- "Surrounding space missing for operator '&'.",
157
- "Surrounding space missing for operator '||'.",
158
- "Surrounding space missing for operator '-='.",
159
- "Surrounding space missing for operator '&&'."])
160
- end
161
-
162
- it 'accepts operators with spaces' do
163
- inspect_source(space,
164
- ['x += a + b - c * d / e % f ^ g | h & i || j',
165
- 'y -= k && l'])
166
- expect(space.messages).to eq([])
167
- end
168
-
169
- it "accepts some operators that are exceptions & don't need spaces" do
170
- inspect_source(space, ['(1..3)',
171
- 'ActionController::Base',
172
- 'each { |s, t| }'])
173
- expect(space.messages).to eq([])
174
- end
175
-
176
- it 'accepts an assignment followed by newline' do
177
- inspect_source(space, ['x =', '0'])
178
- expect(space.offences).to be_empty
179
- end
180
-
181
- it 'registers an offences for exponent operator with spaces' do
182
- inspect_source(space, ['x = a * b ** 2'])
183
- expect(space.messages).to eq(
184
- ['Space around operator ** detected.'])
185
- end
186
-
187
- it 'accepts exponent operator without spaces' do
188
- inspect_source(space, ['x = a * b**2'])
189
- expect(space.offences).to be_empty
190
- end
191
-
192
- it 'accepts unary operators without space' do
193
- inspect_source(space, ['[].map(&:size)',
194
- '-3',
195
- 'x = +2'])
196
- expect(space.messages).to eq([])
197
- end
198
-
199
- it 'accepts argument default values without space' do
200
- # These are handled by SpaceAroundEqualsInParameterDefault,
201
- # so SpaceAroundOperators leaves them alone.
202
- inspect_source(space,
203
- ['def init(name=nil)',
204
- 'end'])
205
- expect(space.messages).to be_empty
206
- end
207
-
208
- it 'accepts the construct class <<self with no space after <<' do
209
- inspect_source(space, ['class <<self',
210
- 'end'])
211
- expect(space.messages).to be_empty
212
- end
213
- end
214
- end
5
+ describe Rubocop::Cop::Style::SpaceAroundOperators do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'registers an offence for assignment without space on both sides' do
9
+ inspect_source(cop, ['x=0', 'y= 0', 'z =0'])
10
+ expect(cop.messages).to eq(
11
+ ["Surrounding space missing for operator '='."] * 3)
12
+ end
13
+
14
+ it 'registers an offence for ternary operator without space' do
15
+ inspect_source(cop, ['x == 0?1:2'])
16
+ expect(cop.messages).to eq(
17
+ ["Surrounding space missing for operator '?'.",
18
+ "Surrounding space missing for operator ':'."])
19
+ end
20
+
21
+ it 'registers an offence in presence of modifier if statement' do
22
+ check_modifier('if')
23
+ end
24
+
25
+ it 'registers an offence in presence of modifier unless statement' do
26
+ check_modifier('unless')
27
+ end
28
+
29
+ it 'registers an offence in presence of modifier while statement' do
30
+ check_modifier('unless')
31
+ end
32
+
33
+ it 'registers an offence in presence of modifier until statement' do
34
+ check_modifier('unless')
35
+ end
36
+
37
+ def check_modifier(keyword)
38
+ src = ["a=1 #{keyword} condition",
39
+ 'c=2']
40
+ inspect_source(cop, src)
41
+ expect(cop.offences.map(&:line)).to eq([1, 2])
42
+ expect(cop.messages).to eq(
43
+ ["Surrounding space missing for operator '='."] * 2)
44
+ end
45
+
46
+ it 'registers an offence for binary operators that could be unary' do
47
+ inspect_source(cop, ['a-3', 'x&0xff', 'z+0'])
48
+ expect(cop.messages).to eq(
49
+ ["Surrounding space missing for operator '-'.",
50
+ "Surrounding space missing for operator '&'.",
51
+ "Surrounding space missing for operator '+'."])
52
+ end
53
+
54
+ it 'registers an offence for arguments to a method' do
55
+ inspect_source(cop, ['puts 1+2'])
56
+ expect(cop.messages).to eq(
57
+ ["Surrounding space missing for operator '+'."])
58
+ end
59
+
60
+ it 'accepts operator symbols' do
61
+ inspect_source(cop, ['func(:-)'])
62
+ expect(cop.messages).to be_empty
63
+ end
64
+
65
+ it 'accepts ranges' do
66
+ inspect_source(cop, ['a, b = (1..2), (1...3)'])
67
+ expect(cop.messages).to be_empty
68
+ end
69
+
70
+ it 'accepts scope operator' do
71
+ source = ['@io.class == Zlib::GzipWriter']
72
+ inspect_source(cop, source)
73
+ expect(cop.messages).to be_empty
74
+ end
75
+
76
+ it 'accepts ::Kernel::raise' do
77
+ source = ['::Kernel::raise IllegalBlockError.new']
78
+ inspect_source(cop, source)
79
+ expect(cop.messages).to be_empty
80
+ end
81
+
82
+ it 'accepts exclamation point negation' do
83
+ inspect_source(cop, ['x = !a&&!b'])
84
+ expect(cop.messages).to eq(
85
+ ["Surrounding space missing for operator '&&'."])
86
+ end
87
+
88
+ it 'accepts exclamation point definition' do
89
+ inspect_source(cop, [' def !',
90
+ ' !__getobj__',
91
+ ' end'])
92
+ expect(cop.offences).to be_empty
93
+ expect(cop.messages).to be_empty
94
+ end
95
+
96
+ it 'accepts a unary' do
97
+ inspect_source(cop,
98
+ [' def bm(label_width = 0, *labels, &blk)',
99
+ ' benchmark(CAPTION, label_width, FORMAT,',
100
+ ' *labels, &blk)',
101
+ ' end',
102
+ '',
103
+ ' def each &block',
104
+ ' end',
105
+ '',
106
+ ' def each *args',
107
+ ' end',
108
+ ''])
109
+ expect(cop.messages).to be_empty
110
+ end
111
+
112
+ it 'accepts splat operator' do
113
+ inspect_source(cop, ['return *list if options'])
114
+ expect(cop.messages).to be_empty
115
+ end
116
+
117
+ it 'accepts def of operator' do
118
+ inspect_source(cop, ['def +(other); end',
119
+ 'def self.===(other); end'])
120
+ expect(cop.messages).to be_empty
121
+ end
122
+
123
+ it 'accepts an operator at the end of a line' do
124
+ inspect_source(cop,
125
+ ["['Favor unless over if for negative ' +",
126
+ " 'conditions.'] * 2"])
127
+ expect(cop.messages).to eq([])
128
+ end
129
+
130
+ it 'accepts an assignment with spaces' do
131
+ inspect_source(cop, ['x = 0'])
132
+ expect(cop.offences).to be_empty
133
+ end
134
+
135
+ it 'accepts an operator called with method syntax' do
136
+ inspect_source(cop, ['Date.today.+(1).to_s'])
137
+ expect(cop.offences).to be_empty
138
+ end
139
+
140
+ it 'registers an offence for operators without spaces' do
141
+ inspect_source(cop,
142
+ ['x+= a+b-c*d/e%f^g|h&i||j',
143
+ 'y -=k&&l'])
144
+ expect(cop.messages)
145
+ .to eq(["Surrounding space missing for operator '+='.",
146
+ "Surrounding space missing for operator '+'.",
147
+ "Surrounding space missing for operator '-'.",
148
+ "Surrounding space missing for operator '*'.",
149
+ "Surrounding space missing for operator '/'.",
150
+ "Surrounding space missing for operator '%'.",
151
+ "Surrounding space missing for operator '^'.",
152
+ "Surrounding space missing for operator '|'.",
153
+ "Surrounding space missing for operator '&'.",
154
+ "Surrounding space missing for operator '||'.",
155
+ "Surrounding space missing for operator '-='.",
156
+ "Surrounding space missing for operator '&&'."])
157
+ end
158
+
159
+ it 'accepts operators with spaces' do
160
+ inspect_source(cop,
161
+ ['x += a + b - c * d / e % f ^ g | h & i || j',
162
+ 'y -= k && l'])
163
+ expect(cop.messages).to eq([])
164
+ end
165
+
166
+ it "accepts some operators that are exceptions & don't need spaces" do
167
+ inspect_source(cop, ['(1..3)',
168
+ 'ActionController::Base',
169
+ 'each { |s, t| }'])
170
+ expect(cop.messages).to eq([])
171
+ end
172
+
173
+ it 'accepts an assignment followed by newline' do
174
+ inspect_source(cop, ['x =', '0'])
175
+ expect(cop.offences).to be_empty
176
+ end
177
+
178
+ it 'registers an offences for exponent operator with spaces' do
179
+ inspect_source(cop, ['x = a * b ** 2'])
180
+ expect(cop.messages).to eq(
181
+ ['Space around operator ** detected.'])
182
+ end
183
+
184
+ it 'accepts exponent operator without spaces' do
185
+ inspect_source(cop, ['x = a * b**2'])
186
+ expect(cop.offences).to be_empty
187
+ end
188
+
189
+ it 'accepts unary operators without space' do
190
+ inspect_source(cop, ['[].map(&:size)',
191
+ '-3',
192
+ 'x = +2'])
193
+ expect(cop.messages).to eq([])
194
+ end
195
+
196
+ it 'accepts argument default values without space' do
197
+ # These are handled by SpaceAroundEqualsInParameterDefault,
198
+ # so SpaceAroundOperators leaves them alone.
199
+ inspect_source(cop,
200
+ ['def init(name=nil)',
201
+ 'end'])
202
+ expect(cop.messages).to be_empty
203
+ end
204
+
205
+ it 'accepts the construct class <<self with no space after <<' do
206
+ inspect_source(cop, ['class <<self',
207
+ 'end'])
208
+ expect(cop.messages).to be_empty
215
209
  end
216
210
  end