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
@@ -0,0 +1,103 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Rubocop::Cop::Style::MethodName, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+
8
+ shared_examples 'never accepted' do
9
+ it 'registers an offence for mixed snake case and camel case' do
10
+ inspect_source(cop, ['def visit_Arel_Nodes_SelectStatement',
11
+ 'end'])
12
+ expect(cop.offences).to have(1).item
13
+ expect(cop.highlights).to eq(['visit_Arel_Nodes_SelectStatement'])
14
+ end
15
+
16
+ it 'registers an offence for capitalized camel case' do
17
+ inspect_source(cop, ['def MyMethod',
18
+ 'end'])
19
+ expect(cop.offences).to have(1).item
20
+ expect(cop.highlights).to eq(['MyMethod'])
21
+ end
22
+ end
23
+
24
+ shared_examples 'always accepted' do
25
+ it 'accepts one line methods' do
26
+ inspect_source(cop, "def body; '' end")
27
+ expect(cop.offences).to be_empty
28
+ end
29
+
30
+ it 'accepts operator definitions' do
31
+ inspect_source(cop, ['def +(other)',
32
+ ' # ...',
33
+ 'end'])
34
+ expect(cop.offences).to be_empty
35
+ end
36
+ end
37
+
38
+ context 'when configured for snake_case' do
39
+ let(:cop_config) { { 'EnforcedStyle' => 'snake_case' } }
40
+
41
+ it 'registers an offence for camel case in instance method name' do
42
+ inspect_source(cop, ['def myMethod',
43
+ ' # ...',
44
+ 'end'])
45
+ expect(cop.offences).to have(1).item
46
+ expect(cop.highlights).to eq(['myMethod'])
47
+ end
48
+
49
+ it 'registers an offence for camel case in singleton method name' do
50
+ inspect_source(cop, ['def self.myMethod',
51
+ ' # ...',
52
+ 'end'])
53
+ expect(cop.offences).to have(1).item
54
+ expect(cop.highlights).to eq(['myMethod'])
55
+ end
56
+
57
+ it 'accepts snake case in names' do
58
+ inspect_source(cop, ['def my_method',
59
+ 'end'])
60
+ expect(cop.offences).to be_empty
61
+ end
62
+
63
+ include_examples 'never accepted'
64
+ include_examples 'always accepted'
65
+ end
66
+
67
+ context 'when configured for camelCase' do
68
+ let(:cop_config) { { 'EnforcedStyle' => 'camelCase' } }
69
+
70
+ it 'accepts camel case in instance method name' do
71
+ inspect_source(cop, ['def myMethod',
72
+ ' # ...',
73
+ 'end'])
74
+ expect(cop.offences).to be_empty
75
+ end
76
+
77
+ it 'accepts camel case in singleton method name' do
78
+ inspect_source(cop, ['def self.myMethod',
79
+ ' # ...',
80
+ 'end'])
81
+ expect(cop.offences).to be_empty
82
+ end
83
+
84
+ it 'registers an offence for snake case in names' do
85
+ inspect_source(cop, ['def my_method',
86
+ 'end'])
87
+ expect(cop.offences).to have(1).item
88
+ expect(cop.highlights).to eq(['my_method'])
89
+ end
90
+
91
+ include_examples 'always accepted'
92
+ include_examples 'never accepted'
93
+ end
94
+
95
+ context 'when configured with a bad value' do
96
+ let(:cop_config) { { 'EnforcedStyle' => 'other' } }
97
+
98
+ it 'fails' do
99
+ expect { inspect_source(cop, ['def a', 'end']) }
100
+ .to raise_error(RuntimeError)
101
+ end
102
+ end
103
+ end
@@ -2,29 +2,23 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe ModuleFunction do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::ModuleFunction do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- it 'registers an offence for extend self in module' do
12
- inspect_source(cop,
13
- ['module Test',
14
- ' extend self',
15
- ' def test; end',
16
- 'end'])
17
- expect(cop.offences.size).to eq(1)
18
- end
8
+ it 'registers an offence for extend self in module' do
9
+ inspect_source(cop,
10
+ ['module Test',
11
+ ' extend self',
12
+ ' def test; end',
13
+ 'end'])
14
+ expect(cop.offences.size).to eq(1)
15
+ end
19
16
 
20
- it 'accepts extend self in class' do
21
- inspect_source(cop,
22
- ['class Test',
23
- ' extend self',
24
- 'end'])
25
- expect(cop.offences).to be_empty
26
- end
27
- end
28
- end
17
+ it 'accepts extend self in class' do
18
+ inspect_source(cop,
19
+ ['class Test',
20
+ ' extend self',
21
+ 'end'])
22
+ expect(cop.offences).to be_empty
29
23
  end
30
24
  end
@@ -2,83 +2,77 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe MultilineBlockChain do
9
- subject(:cop) { described_class.new }
5
+ describe Rubocop::Cop::Style::MultilineBlockChain do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- context 'with multi-line block chaining' do
12
- it 'registers an offence for a simple case' do
13
- inspect_source(cop, ['a do',
14
- ' b',
15
- 'end.c do',
16
- ' d',
17
- 'end'])
18
- expect(cop.offences).to have(1).item
19
- expect(cop.highlights).to eq(['end.c'])
20
- end
8
+ context 'with multi-line block chaining' do
9
+ it 'registers an offence for a simple case' do
10
+ inspect_source(cop, ['a do',
11
+ ' b',
12
+ 'end.c do',
13
+ ' d',
14
+ 'end'])
15
+ expect(cop.offences).to have(1).item
16
+ expect(cop.highlights).to eq(['end.c'])
17
+ end
21
18
 
22
- it 'registers an offence for a slightly more complicated case' do
23
- inspect_source(cop, ['a do',
24
- ' b',
25
- 'end.c1.c2 do',
26
- ' d',
27
- 'end'])
28
- expect(cop.offences).to have(1).item
29
- expect(cop.highlights).to eq(['end.c1.c2'])
30
- end
19
+ it 'registers an offence for a slightly more complicated case' do
20
+ inspect_source(cop, ['a do',
21
+ ' b',
22
+ 'end.c1.c2 do',
23
+ ' d',
24
+ 'end'])
25
+ expect(cop.offences).to have(1).item
26
+ expect(cop.highlights).to eq(['end.c1.c2'])
27
+ end
31
28
 
32
- it 'registers two offences for a chain of three blocks' do
33
- inspect_source(cop, ['a do',
34
- ' b',
35
- 'end.c do',
36
- ' d',
37
- 'end.e do',
38
- ' f',
39
- 'end'])
40
- expect(cop.offences).to have(2).item
41
- expect(cop.highlights).to eq(['end.c', 'end.e'])
42
- end
29
+ it 'registers two offences for a chain of three blocks' do
30
+ inspect_source(cop, ['a do',
31
+ ' b',
32
+ 'end.c do',
33
+ ' d',
34
+ 'end.e do',
35
+ ' f',
36
+ 'end'])
37
+ expect(cop.offences).to have(2).item
38
+ expect(cop.highlights).to eq(['end.c', 'end.e'])
39
+ end
43
40
 
44
- it 'registers an offence for a chain where the second block is ' +
45
- 'single-line' do
46
- inspect_source(cop, ['Thread.list.find_all { |t|',
47
- ' t.alive?',
48
- '}.map { |thread| thread.object_id }'])
49
- expect(cop.offences).to have(1).item
50
- expect(cop.highlights).to eq(['}.map'])
51
- end
41
+ it 'registers an offence for a chain where the second block is ' +
42
+ 'single-line' do
43
+ inspect_source(cop, ['Thread.list.find_all { |t|',
44
+ ' t.alive?',
45
+ '}.map { |thread| thread.object_id }'])
46
+ expect(cop.offences).to have(1).item
47
+ expect(cop.highlights).to eq(['}.map'])
48
+ end
52
49
 
53
- it 'accepts a chain where the first block is single-line' do
54
- inspect_source(cop,
55
- ['Thread.list.find_all { |t| t.alive? }.map { |t| ',
56
- ' t.object_id',
57
- '}'])
58
- expect(cop.offences).to be_empty
59
- end
60
- end
50
+ it 'accepts a chain where the first block is single-line' do
51
+ inspect_source(cop,
52
+ ['Thread.list.find_all { |t| t.alive? }.map { |t| ',
53
+ ' t.object_id',
54
+ '}'])
55
+ expect(cop.offences).to be_empty
56
+ end
57
+ end
61
58
 
62
- it 'accepts a chain of blocks spanning one line' do
63
- inspect_source(cop, ['a { b }.c { d }',
64
- 'w do x end.y do z end'])
65
- expect(cop.offences).to be_empty
66
- end
59
+ it 'accepts a chain of blocks spanning one line' do
60
+ inspect_source(cop, ['a { b }.c { d }',
61
+ 'w do x end.y do z end'])
62
+ expect(cop.offences).to be_empty
63
+ end
67
64
 
68
- it 'accepts a multi-line block chained with calls on one line' do
69
- inspect_source(cop, ['a do',
70
- ' b',
71
- 'end.c.d'])
72
- expect(cop.offences).to be_empty
73
- end
65
+ it 'accepts a multi-line block chained with calls on one line' do
66
+ inspect_source(cop, ['a do',
67
+ ' b',
68
+ 'end.c.d'])
69
+ expect(cop.offences).to be_empty
70
+ end
74
71
 
75
- it 'accepts a chain of calls followed by a multi-line block' do
76
- inspect_source(cop, ['a1.a2.a3 do',
77
- ' b',
78
- 'end'])
79
- expect(cop.offences).to be_empty
80
- end
81
- end
82
- end
72
+ it 'accepts a chain of calls followed by a multi-line block' do
73
+ inspect_source(cop, ['a1.a2.a3 do',
74
+ ' b',
75
+ 'end'])
76
+ expect(cop.offences).to be_empty
83
77
  end
84
78
  end
@@ -2,96 +2,90 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module Style
8
- describe MultilineIfThen do
9
- subject(:mit) { MultilineIfThen.new }
5
+ describe Rubocop::Cop::Style::MultilineIfThen do
6
+ subject(:cop) { described_class.new }
10
7
 
11
- # if
8
+ # if
12
9
 
13
- it 'registers an offence for then in multiline if' do
14
- inspect_source(mit, ['if cond then',
15
- 'end',
16
- "if cond then\t",
17
- 'end',
18
- 'if cond then ',
19
- 'end',
20
- 'if cond',
21
- 'then',
22
- 'end',
23
- 'if cond then # bad',
24
- 'end'])
25
- expect(mit.offences.map(&:line)).to eq([1, 3, 5, 7, 10])
26
- end
10
+ it 'registers an offence for then in multiline if' do
11
+ inspect_source(cop, ['if cond then',
12
+ 'end',
13
+ "if cond then\t",
14
+ 'end',
15
+ 'if cond then ',
16
+ 'end',
17
+ 'if cond',
18
+ 'then',
19
+ 'end',
20
+ 'if cond then # bad',
21
+ 'end'])
22
+ expect(cop.offences.map(&:line)).to eq([1, 3, 5, 7, 10])
23
+ end
27
24
 
28
- it 'accepts multiline if without then' do
29
- inspect_source(mit, ['if cond',
30
- 'end'])
31
- expect(mit.offences).to be_empty
32
- end
25
+ it 'accepts multiline if without then' do
26
+ inspect_source(cop, ['if cond',
27
+ 'end'])
28
+ expect(cop.offences).to be_empty
29
+ end
33
30
 
34
- it 'accepts table style if/then/elsif/ends' do
35
- inspect_source(mit,
36
- ['if @io == $stdout then str << "$stdout"',
37
- 'elsif @io == $stdin then str << "$stdin"',
38
- 'elsif @io == $stderr then str << "$stderr"',
39
- 'else str << @io.class.to_s',
40
- 'end'])
41
- expect(mit.offences).to be_empty
42
- end
31
+ it 'accepts table style if/then/elsif/ends' do
32
+ inspect_source(cop,
33
+ ['if @io == $stdout then str << "$stdout"',
34
+ 'elsif @io == $stdin then str << "$stdin"',
35
+ 'elsif @io == $stderr then str << "$stderr"',
36
+ 'else str << @io.class.to_s',
37
+ 'end'])
38
+ expect(cop.offences).to be_empty
39
+ end
43
40
 
44
- it 'does not get confused by a then in a when' do
45
- inspect_source(mit,
46
- ['if a',
47
- ' case b',
48
- ' when c then',
49
- ' end',
50
- 'end'])
51
- expect(mit.offences).to be_empty
52
- end
41
+ it 'does not get confused by a then in a when' do
42
+ inspect_source(cop,
43
+ ['if a',
44
+ ' case b',
45
+ ' when c then',
46
+ ' end',
47
+ 'end'])
48
+ expect(cop.offences).to be_empty
49
+ end
53
50
 
54
- it 'does not get confused by a commented-out then' do
55
- inspect_source(mit,
56
- ['if a # then',
57
- ' b',
58
- 'end',
59
- 'if c # then',
60
- 'end'])
61
- expect(mit.offences).to be_empty
62
- end
51
+ it 'does not get confused by a commented-out then' do
52
+ inspect_source(cop,
53
+ ['if a # then',
54
+ ' b',
55
+ 'end',
56
+ 'if c # then',
57
+ 'end'])
58
+ expect(cop.offences).to be_empty
59
+ end
63
60
 
64
- # unless
61
+ # unless
65
62
 
66
- it 'registers an offence for then in multiline unless' do
67
- inspect_source(mit, ['unless cond then',
68
- 'end'])
69
- expect(mit.messages).to eq(
70
- ['Never use then for multi-line if/unless.'])
71
- end
63
+ it 'registers an offence for then in multiline unless' do
64
+ inspect_source(cop, ['unless cond then',
65
+ 'end'])
66
+ expect(cop.messages).to eq(
67
+ ['Never use then for multi-line if/unless.'])
68
+ end
72
69
 
73
- it 'accepts multiline unless without then' do
74
- inspect_source(mit, ['unless cond',
75
- 'end'])
76
- expect(mit.offences).to be_empty
77
- end
70
+ it 'accepts multiline unless without then' do
71
+ inspect_source(cop, ['unless cond',
72
+ 'end'])
73
+ expect(cop.offences).to be_empty
74
+ end
78
75
 
79
- it 'does not get confused by a postfix unless' do
80
- inspect_source(mit,
81
- ['two unless one',
82
- ])
83
- expect(mit.offences).to be_empty
84
- end
76
+ it 'does not get confused by a postfix unless' do
77
+ inspect_source(cop,
78
+ ['two unless one',
79
+ ])
80
+ expect(cop.offences).to be_empty
81
+ end
85
82
 
86
- it 'does not get confused by a nested postfix unless' do
87
- inspect_source(mit,
88
- ['if two',
89
- ' puts 1',
90
- 'end unless two'
91
- ])
92
- expect(mit.offences).to be_empty
93
- end
94
- end
95
- end
83
+ it 'does not get confused by a nested postfix unless' do
84
+ inspect_source(cop,
85
+ ['if two',
86
+ ' puts 1',
87
+ 'end unless two'
88
+ ])
89
+ expect(cop.offences).to be_empty
96
90
  end
97
91
  end