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,30 +2,24 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe UnlessElse do
9
- subject(:ue) { UnlessElse.new }
5
+ describe Rubocop::Cop::Style::UnlessElse do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for an unless with else' do
12
- inspect_source(ue, ['unless x',
13
- ' a = 1',
14
- 'else',
15
- ' a = 0',
16
- 'end'])
17
- expect(ue.messages).to eq(
18
- ['Never use unless with else. Rewrite these with the ' +
19
- 'positive case first.'])
20
- end
8
+ it 'registers an offence for an unless with else' do
9
+ inspect_source(cop, ['unless x',
10
+ ' a = 1',
11
+ 'else',
12
+ ' a = 0',
13
+ 'end'])
14
+ expect(cop.messages).to eq(
15
+ ['Never use unless with else. Rewrite these with the ' +
16
+ 'positive case first.'])
17
+ end
21
18
 
22
- it 'accepts an unless without else' do
23
- inspect_source(ue, ['unless x',
24
- ' a = 1',
25
- 'end'])
26
- expect(ue.messages).to be_empty
27
- end
28
- end
29
- end
19
+ it 'accepts an unless without else' do
20
+ inspect_source(cop, ['unless x',
21
+ ' a = 1',
22
+ 'end'])
23
+ expect(cop.messages).to be_empty
30
24
  end
31
25
  end
@@ -2,52 +2,46 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe VariableInterpolation do
9
- subject(:vi) { VariableInterpolation.new }
5
+ describe Rubocop::Cop::Style::VariableInterpolation do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for interpolated global variables' do
12
- inspect_source(vi,
13
- ['puts "this is a #$test"'])
14
- expect(vi.offences.size).to eq(1)
15
- expect(vi.messages)
16
- .to eq(['Replace interpolated var $test' +
17
- ' with expression #{$test}.'])
18
- end
8
+ it 'registers an offence for interpolated global variables' do
9
+ inspect_source(cop,
10
+ ['puts "this is a #$test"'])
11
+ expect(cop.offences.size).to eq(1)
12
+ expect(cop.messages)
13
+ .to eq(['Replace interpolated var $test' +
14
+ ' with expression #{$test}.'])
15
+ end
19
16
 
20
- it 'registers an offence for interpolated regexp back references' do
21
- inspect_source(vi,
22
- ['puts "this is a #$1"'])
23
- expect(vi.offences.size).to eq(1)
24
- expect(vi.messages)
25
- .to eq(['Replace interpolated var $1 with expression #{$1}.'])
26
- end
17
+ it 'registers an offence for interpolated regexp back references' do
18
+ inspect_source(cop,
19
+ ['puts "this is a #$1"'])
20
+ expect(cop.offences.size).to eq(1)
21
+ expect(cop.messages)
22
+ .to eq(['Replace interpolated var $1 with expression #{$1}.'])
23
+ end
27
24
 
28
- it 'registers an offence for interpolated instance variables' do
29
- inspect_source(vi,
30
- ['puts "this is a #@test"'])
31
- expect(vi.offences.size).to eq(1)
32
- expect(vi.messages)
33
- .to eq(['Replace interpolated var @test' +
34
- ' with expression #{@test}.'])
35
- end
25
+ it 'registers an offence for interpolated instance variables' do
26
+ inspect_source(cop,
27
+ ['puts "this is a #@test"'])
28
+ expect(cop.offences.size).to eq(1)
29
+ expect(cop.messages)
30
+ .to eq(['Replace interpolated var @test' +
31
+ ' with expression #{@test}.'])
32
+ end
36
33
 
37
- it 'registers an offence for interpolated class variables' do
38
- inspect_source(vi,
39
- ['puts "this is a #@@t"'])
40
- expect(vi.offences.size).to eq(1)
41
- expect(vi.messages)
42
- .to eq(['Replace interpolated var @@t with expression #{@@t}.'])
43
- end
34
+ it 'registers an offence for interpolated class variables' do
35
+ inspect_source(cop,
36
+ ['puts "this is a #@@t"'])
37
+ expect(cop.offences.size).to eq(1)
38
+ expect(cop.messages)
39
+ .to eq(['Replace interpolated var @@t with expression #{@@t}.'])
40
+ end
44
41
 
45
- it 'does not register an offence for variables in expressions' do
46
- inspect_source(vi,
47
- ['puts "this is a #{@test} #{@@t} #{$t} #{$1}"'])
48
- expect(vi.offences).to be_empty
49
- end
50
- end
51
- end
42
+ it 'does not register an offence for variables in expressions' do
43
+ inspect_source(cop,
44
+ ['puts "this is a #{@test} #{@@t} #{$t} #{$1}"'])
45
+ expect(cop.offences).to be_empty
52
46
  end
53
47
  end
@@ -0,0 +1,83 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::VariableName, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+
8
+ shared_examples 'always accepted' do
9
+ it 'accepts screaming snake case globals' do
10
+ inspect_source(cop, '$MY_GLOBAL = 0')
11
+ expect(cop.offences).to be_empty
12
+ end
13
+
14
+ it 'accepts screaming snake case constants' do
15
+ inspect_source(cop, 'MY_CONSTANT = 0')
16
+ expect(cop.offences).to be_empty
17
+ end
18
+
19
+ it 'accepts assigning to camel case constant' do
20
+ inspect_source(cop, 'Paren = Struct.new :left, :right, :kind')
21
+ expect(cop.offences).to be_empty
22
+ end
23
+
24
+ it 'accepts assignment with indexing of self' do
25
+ inspect_source(cop, 'self[:a] = b')
26
+ expect(cop.offences).to be_empty
27
+ end
28
+ end
29
+
30
+ context 'when configured for snake_case' do
31
+ let(:cop_config) { { 'EnforcedStyle' => 'snake_case' } }
32
+
33
+ it 'registers an offence for camel case in local variable name' do
34
+ inspect_source(cop, 'myLocal = 1')
35
+ expect(cop.offences).to have(1).item
36
+ expect(cop.highlights).to eq(['myLocal'])
37
+ end
38
+
39
+ it 'registers an offence for camel case in instance variable name' do
40
+ inspect_source(cop, '@myAttribute = 3')
41
+ expect(cop.offences).to have(1).item
42
+ expect(cop.highlights).to eq(['@myAttribute'])
43
+ end
44
+
45
+ it 'registers an offence for camel case in setter name' do
46
+ inspect_source(cop, 'self.mySetter = 2')
47
+ expect(cop.offences).to have(1).item
48
+ expect(cop.highlights).to eq(['mySetter'])
49
+ end
50
+
51
+ include_examples 'always accepted'
52
+ end
53
+
54
+ context 'when configured for camelCase' do
55
+ let(:cop_config) { { 'EnforcedStyle' => 'camelCase' } }
56
+
57
+ it 'accepts camel case in local variable name' do
58
+ inspect_source(cop, 'myLocal = 1')
59
+ expect(cop.offences).to be_empty
60
+ end
61
+
62
+ it 'accepts camel case in instance variable name' do
63
+ inspect_source(cop, '@myAttribute = 3')
64
+ expect(cop.offences).to be_empty
65
+ end
66
+
67
+ it 'accepts camel case in setter name' do
68
+ inspect_source(cop, 'self.mySetter = 2')
69
+ expect(cop.offences).to be_empty
70
+ end
71
+
72
+ include_examples 'always accepted'
73
+ end
74
+
75
+ context 'when configured with a bad value' do
76
+ let(:cop_config) { { 'EnforcedStyle' => 'other' } }
77
+
78
+ it 'fails' do
79
+ expect { inspect_source(cop, 'a = 3') }
80
+ .to raise_error(RuntimeError)
81
+ end
82
+ end
83
+ end
@@ -2,46 +2,40 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe WhenThen do
9
- subject(:cop) { WhenThen.new }
5
+ describe Rubocop::Cop::Style::WhenThen do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for when x;' do
12
- inspect_source(cop, ['case a',
13
- 'when b; c',
14
- 'end'])
15
- expect(cop.messages).to eq(
16
- ['Never use "when x;". Use "when x then" instead.'])
17
- end
8
+ it 'registers an offence for when x;' do
9
+ inspect_source(cop, ['case a',
10
+ 'when b; c',
11
+ 'end'])
12
+ expect(cop.messages).to eq(
13
+ ['Never use "when x;". Use "when x then" instead.'])
14
+ end
18
15
 
19
- it 'accepts when x then' do
20
- inspect_source(cop, ['case a',
21
- 'when b then c',
22
- 'end'])
23
- expect(cop.messages).to be_empty
24
- end
16
+ it 'accepts when x then' do
17
+ inspect_source(cop, ['case a',
18
+ 'when b then c',
19
+ 'end'])
20
+ expect(cop.messages).to be_empty
21
+ end
25
22
 
26
- it 'accepts ; separating statements in the body of when' do
27
- inspect_source(cop, ['case a',
28
- 'when b then c; d',
29
- 'end',
30
- '',
31
- 'case e',
32
- 'when f',
33
- ' g; h',
34
- 'end'])
35
- expect(cop.messages).to be_empty
36
- end
23
+ it 'accepts ; separating statements in the body of when' do
24
+ inspect_source(cop, ['case a',
25
+ 'when b then c; d',
26
+ 'end',
27
+ '',
28
+ 'case e',
29
+ 'when f',
30
+ ' g; h',
31
+ 'end'])
32
+ expect(cop.messages).to be_empty
33
+ end
37
34
 
38
- it 'auto-corrects "when x;" with "when x then"' do
39
- new_source = autocorrect_source(cop, ['case a',
40
- 'when b; c',
41
- 'end'])
42
- expect(new_source).to eq("case a\nwhen b then c\nend")
43
- end
44
- end
45
- end
35
+ it 'auto-corrects "when x;" with "when x then"' do
36
+ new_source = autocorrect_source(cop, ['case a',
37
+ 'when b; c',
38
+ 'end'])
39
+ expect(new_source).to eq("case a\nwhen b then c\nend")
46
40
  end
47
41
  end
@@ -2,58 +2,52 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe WhileUntilDo do
9
- subject(:cop) { WhileUntilDo.new }
10
-
11
- it 'registers an offence for do in multiline while' do
12
- inspect_source(cop, ['while cond do',
13
- 'end'])
14
- expect(cop.offences.size).to eq(1)
15
- end
16
-
17
- it 'registers an offence for do in multiline until' do
18
- inspect_source(cop, ['until cond do',
19
- 'end'])
20
- expect(cop.offences.size).to eq(1)
21
- end
22
-
23
- it 'accepts do in single-line while' do
24
- inspect_source(cop, ['while cond do something end'])
25
- expect(cop.offences).to be_empty
26
- end
27
-
28
- it 'accepts do in single-line until' do
29
- inspect_source(cop, ['until cond do something end'])
30
- expect(cop.offences).to be_empty
31
- end
32
-
33
- it 'it accepts multi-line while without do' do
34
- inspect_source(cop, ['while cond',
35
- 'end'])
36
- expect(cop.offences).to be_empty
37
- end
38
-
39
- it 'it accepts multi-line until without do' do
40
- inspect_source(cop, ['until cond',
41
- 'end'])
42
- expect(cop.offences).to be_empty
43
- end
44
-
45
- it 'auto-corrects the usage of "do" in multiline while' do
46
- new_source = autocorrect_source(cop, ['while cond do',
47
- 'end'])
48
- expect(new_source).to eq("while cond\nend")
49
- end
50
-
51
- it 'auto-corrects the usage of "do" in multiline until' do
52
- new_source = autocorrect_source(cop, ['until cond do',
53
- 'end'])
54
- expect(new_source).to eq("until cond\nend")
55
- end
56
- end
57
- end
5
+ describe Rubocop::Cop::Style::WhileUntilDo do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'registers an offence for do in multiline while' do
9
+ inspect_source(cop, ['while cond do',
10
+ 'end'])
11
+ expect(cop.offences.size).to eq(1)
12
+ end
13
+
14
+ it 'registers an offence for do in multiline until' do
15
+ inspect_source(cop, ['until cond do',
16
+ 'end'])
17
+ expect(cop.offences.size).to eq(1)
18
+ end
19
+
20
+ it 'accepts do in single-line while' do
21
+ inspect_source(cop, ['while cond do something end'])
22
+ expect(cop.offences).to be_empty
23
+ end
24
+
25
+ it 'accepts do in single-line until' do
26
+ inspect_source(cop, ['until cond do something end'])
27
+ expect(cop.offences).to be_empty
28
+ end
29
+
30
+ it 'it accepts multi-line while without do' do
31
+ inspect_source(cop, ['while cond',
32
+ 'end'])
33
+ expect(cop.offences).to be_empty
34
+ end
35
+
36
+ it 'it accepts multi-line until without do' do
37
+ inspect_source(cop, ['until cond',
38
+ 'end'])
39
+ expect(cop.offences).to be_empty
40
+ end
41
+
42
+ it 'auto-corrects the usage of "do" in multiline while' do
43
+ new_source = autocorrect_source(cop, ['while cond do',
44
+ 'end'])
45
+ expect(new_source).to eq("while cond\nend")
46
+ end
47
+
48
+ it 'auto-corrects the usage of "do" in multiline until' do
49
+ new_source = autocorrect_source(cop, ['until cond do',
50
+ 'end'])
51
+ expect(new_source).to eq("until cond\nend")
58
52
  end
59
53
  end
@@ -2,60 +2,54 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe WordArray do
9
- subject(:wa) { WordArray.new }
10
-
11
- it 'registers an offence for arrays of single quoted strings' do
12
- inspect_source(wa,
13
- ["['one', 'two', 'three']"])
14
- expect(wa.offences.size).to eq(1)
15
- end
16
-
17
- it 'registers an offence for arrays of double quoted strings' do
18
- inspect_source(wa,
19
- ['["one", "two", "three"]'])
20
- expect(wa.offences.size).to eq(1)
21
- end
22
-
23
- it 'registers an offence for arrays with character constants' do
24
- inspect_source(wa,
25
- ['["one", ?\n]'])
26
- expect(wa.offences.size).to eq(1)
27
- end
28
-
29
- it 'does not register an offence for array of non-words' do
30
- inspect_source(wa,
31
- ['["one space", "two", "three"]'])
32
- expect(wa.offences).to be_empty
33
- end
34
-
35
- it 'does not register an offence for array containing non-string' do
36
- inspect_source(wa,
37
- ['["one", "two", 3]'])
38
- expect(wa.offences).to be_empty
39
- end
40
-
41
- it 'does not register an offence for array starting with %w' do
42
- inspect_source(wa,
43
- ['%w(one two three)'])
44
- expect(wa.offences).to be_empty
45
- end
46
-
47
- it 'does not register an offence for array with one element' do
48
- inspect_source(wa,
49
- ['["three"]'])
50
- expect(wa.offences).to be_empty
51
- end
52
-
53
- it 'does not register an offence for array with empty strings' do
54
- inspect_source(wa,
55
- ['["", "two", "three"]'])
56
- expect(wa.offences).to be_empty
57
- end
58
- end
59
- end
5
+ describe Rubocop::Cop::Style::WordArray do
6
+ subject(:cop) { described_class.new }
7
+
8
+ it 'registers an offence for arrays of single quoted strings' do
9
+ inspect_source(cop,
10
+ ["['one', 'two', 'three']"])
11
+ expect(cop.offences.size).to eq(1)
12
+ end
13
+
14
+ it 'registers an offence for arrays of double quoted strings' do
15
+ inspect_source(cop,
16
+ ['["one", "two", "three"]'])
17
+ expect(cop.offences.size).to eq(1)
18
+ end
19
+
20
+ it 'registers an offence for arrays with character constants' do
21
+ inspect_source(cop,
22
+ ['["one", ?\n]'])
23
+ expect(cop.offences.size).to eq(1)
24
+ end
25
+
26
+ it 'does not register an offence for array of non-words' do
27
+ inspect_source(cop,
28
+ ['["one space", "two", "three"]'])
29
+ expect(cop.offences).to be_empty
30
+ end
31
+
32
+ it 'does not register an offence for array containing non-string' do
33
+ inspect_source(cop,
34
+ ['["one", "two", 3]'])
35
+ expect(cop.offences).to be_empty
36
+ end
37
+
38
+ it 'does not register an offence for array starting with %w' do
39
+ inspect_source(cop,
40
+ ['%w(one two three)'])
41
+ expect(cop.offences).to be_empty
42
+ end
43
+
44
+ it 'does not register an offence for array with one element' do
45
+ inspect_source(cop,
46
+ ['["three"]'])
47
+ expect(cop.offences).to be_empty
48
+ end
49
+
50
+ it 'does not register an offence for array with empty strings' do
51
+ inspect_source(cop,
52
+ ['["", "two", "three"]'])
53
+ expect(cop.offences).to be_empty
60
54
  end
61
55
  end