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,157 +2,155 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- describe Team do
8
- subject(:team) { Team.new(cop_classes, config, options) }
9
- let(:cop_classes) { Cop.all }
10
- let(:config) { Config.default_configuration }
11
- let(:options) { nil }
12
-
13
- describe '#autocorrect?' do
14
- subject { team.autocorrect? }
15
-
16
- context 'when the option argument of .new is omitted' do
17
- subject { Team.new(cop_classes, config).autocorrect? }
18
- it { should be_false }
19
- end
5
+ describe Rubocop::Cop::Team do
6
+ subject(:team) { described_class.new(cop_classes, config, options) }
7
+ let(:cop_classes) { Rubocop::Cop::Cop.all }
8
+ let(:config) { Rubocop::Config.default_configuration }
9
+ let(:options) { nil }
10
+
11
+ describe '#autocorrect?' do
12
+ subject { team.autocorrect? }
13
+
14
+ context 'when the option argument of .new is omitted' do
15
+ subject { described_class.new(cop_classes, config).autocorrect? }
16
+ it { should be_false }
17
+ end
20
18
 
21
- context 'when { autocorrect: true } is passed to .new' do
22
- let(:options) { { autocorrect: true } }
23
- it { should be_true }
24
- end
25
- end
19
+ context 'when { autocorrect: true } is passed to .new' do
20
+ let(:options) { { autocorrect: true } }
21
+ it { should be_true }
22
+ end
23
+ end
26
24
 
27
- describe '#debug?' do
28
- subject { team.debug? }
25
+ describe '#debug?' do
26
+ subject { team.debug? }
29
27
 
30
- context 'when the option argument of .new is omitted' do
31
- subject { Team.new(cop_classes, config).debug? }
32
- it { should be_false }
33
- end
28
+ context 'when the option argument of .new is omitted' do
29
+ subject { described_class.new(cop_classes, config).debug? }
30
+ it { should be_false }
31
+ end
34
32
 
35
- context 'when { debug: true } is passed to .new' do
36
- let(:options) { { debug: true } }
37
- it { should be_true }
38
- end
39
- end
33
+ context 'when { debug: true } is passed to .new' do
34
+ let(:options) { { debug: true } }
35
+ it { should be_true }
36
+ end
37
+ end
40
38
 
41
- describe '#inspect_file', :isolated_environment do
42
- include FileHelper
39
+ describe '#inspect_file', :isolated_environment do
40
+ include FileHelper
43
41
 
44
- let(:file_path) { 'example.rb' }
45
- let(:offences) { team.inspect_file(file_path) }
42
+ let(:file_path) { 'example.rb' }
43
+ let(:offences) { team.inspect_file(file_path) }
46
44
 
47
- before do
48
- create_file(file_path, [
49
- '#' * 90,
50
- 'puts test;'
51
- ])
52
- end
45
+ before do
46
+ create_file(file_path, [
47
+ '#' * 90,
48
+ 'puts test;'
49
+ ])
50
+ end
53
51
 
54
- it 'returns offences' do
55
- expect(offences).not_to be_empty
56
- expect(offences.all? { |o| o.is_a?(Offence) }).to be_true
57
- end
52
+ it 'returns offences' do
53
+ expect(offences).not_to be_empty
54
+ expect(offences.all? { |o| o.is_a?(Rubocop::Cop::Offence) }).to be_true
55
+ end
58
56
 
59
- context 'when Parser cannot parse the file' do
60
- before do
61
- create_file(file_path, [
62
- '#' * 90,
63
- 'class Test'
64
- ])
65
- end
66
-
67
- it 'returns only error offences' do
68
- expect(offences.size).to eq(1)
69
- offence = offences.first
70
- expect(offence.cop_name).to eq('Syntax')
71
- expect(offence.severity).to eq(:error)
72
- end
73
- end
57
+ context 'when Parser cannot parse the file' do
58
+ before do
59
+ create_file(file_path, [
60
+ '#' * 90,
61
+ 'class Test'
62
+ ])
63
+ end
74
64
 
75
- context 'when Parser reports non-fatal warning for the file' do
76
- before do
77
- create_file(file_path, [
78
- '# encoding: utf-8',
79
- '#' * 90,
80
- 'puts *test'
81
- ])
82
- end
65
+ it 'returns only error offences' do
66
+ expect(offences.size).to eq(1)
67
+ offence = offences.first
68
+ expect(offence.cop_name).to eq('Syntax')
69
+ expect(offence.severity).to eq(:error)
70
+ end
71
+ end
83
72
 
84
- let(:cop_names) { offences.map(&:cop_name) }
73
+ context 'when Parser reports non-fatal warning for the file' do
74
+ before do
75
+ create_file(file_path, [
76
+ '# encoding: utf-8',
77
+ '#' * 90,
78
+ 'puts *test'
79
+ ])
80
+ end
85
81
 
86
- it 'returns Parser warning offences' do
87
- expect(cop_names).to include('Syntax')
88
- end
82
+ let(:cop_names) { offences.map(&:cop_name) }
89
83
 
90
- it 'returns offences from cops' do
91
- expect(cop_names).to include('LineLength')
92
- end
93
- end
84
+ it 'returns Parser warning offences' do
85
+ expect(cop_names).to include('Syntax')
86
+ end
94
87
 
95
- context 'when autocorrection is enabled' do
96
- let(:options) { { autocorrect: true } }
97
-
98
- before do
99
- create_file(file_path, [
100
- '# encoding: utf-8',
101
- 'puts "string"'
102
- ])
103
- end
104
-
105
- it 'does autocorrection' do
106
- team.inspect_file(file_path)
107
- corrected_source = File.read(file_path)
108
- expect(corrected_source).to eq([
109
- '# encoding: utf-8',
110
- "puts 'string'",
111
- ''
112
- ].join("\n"))
113
- end
114
-
115
- it 'still returns offences' do
116
- expect(offences.first.cop_name).to eq('StringLiterals')
117
- end
118
- end
88
+ it 'returns offences from cops' do
89
+ expect(cop_names).to include('LineLength')
119
90
  end
91
+ end
120
92
 
121
- describe '#cops' do
122
- subject(:cops) { team.cops }
93
+ context 'when autocorrection is enabled' do
94
+ let(:options) { { autocorrect: true } }
123
95
 
124
- it 'returns cop instances' do
125
- expect(cops).not_to be_empty
126
- expect(cops.all? { |c| c.is_a?(Cop) }).to be_true
127
- end
96
+ before do
97
+ create_file(file_path, [
98
+ '# encoding: utf-8',
99
+ 'puts "string"'
100
+ ])
101
+ end
128
102
 
129
- context 'when only some cop classes are passed to .new' do
130
- let(:cop_classes) { [Lint::Void, Style::LineLength] }
103
+ it 'does autocorrection' do
104
+ team.inspect_file(file_path)
105
+ corrected_source = File.read(file_path)
106
+ expect(corrected_source).to eq([
107
+ '# encoding: utf-8',
108
+ "puts 'string'",
109
+ ''
110
+ ].join("\n"))
111
+ end
131
112
 
132
- it 'returns only intances of the classes' do
133
- expect(cops.size).to eq(2)
134
- cops.sort! { |a, b| a.name <=> b.name }
135
- expect(cops[0].name).to eq('LineLength')
136
- expect(cops[1].name).to eq('Void')
137
- end
138
- end
113
+ it 'still returns offences' do
114
+ expect(offences.first.cop_name).to eq('StringLiterals')
115
+ end
116
+ end
117
+ end
118
+
119
+ describe '#cops' do
120
+ subject(:cops) { team.cops }
139
121
 
140
- context 'when some classes are disabled with config' do
141
- before do
142
- %w(Void LineLength).each do |cop_name|
143
- config.for_cop(cop_name)['Enabled'] = false
144
- end
145
- end
122
+ it 'returns cop instances' do
123
+ expect(cops).not_to be_empty
124
+ expect(cops.all? { |c| c.is_a?(Rubocop::Cop::Cop) }).to be_true
125
+ end
126
+
127
+ context 'when only some cop classes are passed to .new' do
128
+ let(:cop_classes) do
129
+ [Rubocop::Cop::Lint::Void, Rubocop::Cop::Style::LineLength]
130
+ end
146
131
 
147
- let(:cop_names) { cops.map(&:name) }
132
+ it 'returns only intances of the classes' do
133
+ expect(cops.size).to eq(2)
134
+ cops.sort! { |a, b| a.name <=> b.name }
135
+ expect(cops[0].name).to eq('LineLength')
136
+ expect(cops[1].name).to eq('Void')
137
+ end
138
+ end
148
139
 
149
- it 'does not return intances of the classes' do
150
- expect(cops).not_to be_empty
151
- expect(cop_names).not_to include('Void')
152
- expect(cop_names).not_to include('LineLength')
153
- end
140
+ context 'when some classes are disabled with config' do
141
+ before do
142
+ %w(Void LineLength).each do |cop_name|
143
+ config.for_cop(cop_name)['Enabled'] = false
154
144
  end
155
145
  end
146
+
147
+ let(:cop_names) { cops.map(&:name) }
148
+
149
+ it 'does not return intances of the classes' do
150
+ expect(cops).not_to be_empty
151
+ expect(cop_names).not_to include('Void')
152
+ expect(cop_names).not_to include('LineLength')
153
+ end
156
154
  end
157
155
  end
158
156
  end
@@ -2,215 +2,211 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module VariableInspector
8
- describe Assignment do
9
- include ASTHelper
10
- include AST::Sexp
11
-
12
- let(:ast) do
13
- processed_source = Rubocop::SourceParser.parse(source)
14
- processed_source.ast
15
- end
5
+ describe Rubocop::Cop::VariableInspector::Assignment do
6
+ include ASTHelper
7
+ include AST::Sexp
16
8
 
17
- let(:source) do
18
- <<-END
19
- class SomeClass
20
- def some_method(flag)
21
- puts 'Hello World!'
22
-
23
- if flag > 0
24
- foo = 1
25
- end
26
- end
27
- end
28
- END
29
- end
9
+ let(:ast) do
10
+ processed_source = Rubocop::SourceParser.parse(source)
11
+ processed_source.ast
12
+ end
30
13
 
31
- let(:def_node) do
32
- found_node = scan_node(ast, include_origin_node: true) do |node|
33
- break node if node.type == :def
34
- end
35
- fail 'No def node found!' unless found_node
36
- found_node
37
- end
14
+ let(:source) do
15
+ <<-END
16
+ class SomeClass
17
+ def some_method(flag)
18
+ puts 'Hello World!'
38
19
 
39
- let(:lvasgn_node) do
40
- found_node = scan_node(ast) do |node|
41
- break node if node.type == :lvasgn
20
+ if flag > 0
21
+ foo = 1
42
22
  end
43
- fail 'No lvasgn node found!' unless found_node
44
- found_node
45
23
  end
24
+ end
25
+ END
26
+ end
46
27
 
47
- let(:name) { lvasgn_node.children.first }
48
- let(:scope) { Scope.new(def_node) }
49
- let(:variable) { Variable.new(name, lvasgn_node, scope) }
50
- let(:assignment) { Assignment.new(lvasgn_node, variable) }
28
+ let(:def_node) do
29
+ found_node = scan_node(ast, include_origin_node: true) do |node|
30
+ break node if node.type == :def
31
+ end
32
+ fail 'No def node found!' unless found_node
33
+ found_node
34
+ end
51
35
 
52
- describe '.new' do
53
- let(:variable) { double('variable') }
36
+ let(:lvasgn_node) do
37
+ found_node = scan_node(ast) do |node|
38
+ break node if node.type == :lvasgn
39
+ end
40
+ fail 'No lvasgn node found!' unless found_node
41
+ found_node
42
+ end
54
43
 
55
- context 'when an assignment node is passed' do
56
- it 'does not raise error' do
57
- node = s(:lvasgn, :foo)
58
- expect { Assignment.new(node, variable) }.not_to raise_error
59
- end
60
- end
44
+ let(:name) { lvasgn_node.children.first }
45
+ let(:scope) { Rubocop::Cop::VariableInspector::Scope.new(def_node) }
46
+ let(:variable) do
47
+ Rubocop::Cop::VariableInspector::Variable.new(name, lvasgn_node, scope)
48
+ end
49
+ let(:assignment) { described_class.new(lvasgn_node, variable) }
61
50
 
62
- context 'when an argument declaration node is passed' do
63
- it 'raises error' do
64
- node = s(:arg, :foo)
65
- expect { Assignment.new(node, variable) }
66
- .to raise_error(ArgumentError)
67
- end
68
- end
51
+ describe '.new' do
52
+ let(:variable) { double('variable') }
69
53
 
70
- context 'when any other type node is passed' do
71
- it 'raises error' do
72
- node = s(:def)
73
- expect { Assignment.new(node, variable) }
74
- .to raise_error(ArgumentError)
75
- end
76
- end
77
- end
54
+ context 'when an assignment node is passed' do
55
+ it 'does not raise error' do
56
+ node = s(:lvasgn, :foo)
57
+ expect { described_class.new(node, variable) }.not_to raise_error
58
+ end
59
+ end
78
60
 
79
- describe '#name' do
80
- it 'returns the variable name' do
81
- expect(assignment.name).to eq(:foo)
82
- end
83
- end
61
+ context 'when an argument declaration node is passed' do
62
+ it 'raises error' do
63
+ node = s(:arg, :foo)
64
+ expect { described_class.new(node, variable) }
65
+ .to raise_error(ArgumentError)
66
+ end
67
+ end
68
+
69
+ context 'when any other type node is passed' do
70
+ it 'raises error' do
71
+ node = s(:def)
72
+ expect { described_class.new(node, variable) }
73
+ .to raise_error(ArgumentError)
74
+ end
75
+ end
76
+ end
77
+
78
+ describe '#name' do
79
+ it 'returns the variable name' do
80
+ expect(assignment.name).to eq(:foo)
81
+ end
82
+ end
84
83
 
85
- describe '#meta_assignment_node' do
86
- context 'when it is += operator assignment' do
87
- let(:source) do
88
- <<-END
89
- def some_method
90
- foo += 1
91
- end
92
- END
93
- end
94
-
95
- it 'returns op_asgn node' do
96
- expect(assignment.meta_assignment_node.type).to eq(:op_asgn)
97
- end
84
+ describe '#meta_assignment_node' do
85
+ context 'when it is += operator assignment' do
86
+ let(:source) do
87
+ <<-END
88
+ def some_method
89
+ foo += 1
98
90
  end
91
+ END
92
+ end
93
+
94
+ it 'returns op_asgn node' do
95
+ expect(assignment.meta_assignment_node.type).to eq(:op_asgn)
96
+ end
97
+ end
99
98
 
100
- context 'when it is ||= operator assignment' do
101
- let(:source) do
102
- <<-END
103
- def some_method
104
- foo ||= 1
105
- end
106
- END
107
- end
108
-
109
- it 'returns or_asgn node' do
110
- expect(assignment.meta_assignment_node.type).to eq(:or_asgn)
111
- end
99
+ context 'when it is ||= operator assignment' do
100
+ let(:source) do
101
+ <<-END
102
+ def some_method
103
+ foo ||= 1
112
104
  end
105
+ END
106
+ end
113
107
 
114
- context 'when it is &&= operator assignment' do
115
- let(:source) do
116
- <<-END
117
- def some_method
118
- foo &&= 1
119
- end
120
- END
121
- end
122
-
123
- it 'returns and_asgn node' do
124
- expect(assignment.meta_assignment_node.type).to eq(:and_asgn)
125
- end
108
+ it 'returns or_asgn node' do
109
+ expect(assignment.meta_assignment_node.type).to eq(:or_asgn)
110
+ end
111
+ end
112
+
113
+ context 'when it is &&= operator assignment' do
114
+ let(:source) do
115
+ <<-END
116
+ def some_method
117
+ foo &&= 1
126
118
  end
119
+ END
120
+ end
127
121
 
128
- context 'when it is multiple assignment' do
129
- let(:source) do
130
- <<-END
131
- def some_method
132
- foo, bar = [1, 2]
133
- end
134
- END
135
- end
136
-
137
- it 'returns masgn node' do
138
- expect(assignment.meta_assignment_node.type).to eq(:masgn)
139
- end
122
+ it 'returns and_asgn node' do
123
+ expect(assignment.meta_assignment_node.type).to eq(:and_asgn)
124
+ end
125
+ end
126
+
127
+ context 'when it is multiple assignment' do
128
+ let(:source) do
129
+ <<-END
130
+ def some_method
131
+ foo, bar = [1, 2]
140
132
  end
141
- end
133
+ END
134
+ end
135
+
136
+ it 'returns masgn node' do
137
+ expect(assignment.meta_assignment_node.type).to eq(:masgn)
138
+ end
139
+ end
140
+ end
142
141
 
143
- describe '#operator' do
144
- context 'when it is normal assignment' do
145
- let(:source) do
146
- <<-END
147
- def some_method
148
- foo = 1
149
- end
150
- END
151
- end
152
-
153
- it 'returns =' do
154
- expect(assignment.operator).to eq('=')
155
- end
142
+ describe '#operator' do
143
+ context 'when it is normal assignment' do
144
+ let(:source) do
145
+ <<-END
146
+ def some_method
147
+ foo = 1
156
148
  end
149
+ END
150
+ end
157
151
 
158
- context 'when it is += operator assignment' do
159
- let(:source) do
160
- <<-END
161
- def some_method
162
- foo += 1
163
- end
164
- END
165
- end
166
-
167
- it 'returns +=' do
168
- expect(assignment.operator).to eq('+=')
169
- end
152
+ it 'returns =' do
153
+ expect(assignment.operator).to eq('=')
154
+ end
155
+ end
156
+
157
+ context 'when it is += operator assignment' do
158
+ let(:source) do
159
+ <<-END
160
+ def some_method
161
+ foo += 1
170
162
  end
163
+ END
164
+ end
165
+
166
+ it 'returns +=' do
167
+ expect(assignment.operator).to eq('+=')
168
+ end
169
+ end
171
170
 
172
- context 'when it is ||= operator assignment' do
173
- let(:source) do
174
- <<-END
175
- def some_method
176
- foo ||= 1
177
- end
178
- END
179
- end
180
-
181
- it 'returns ||=' do
182
- expect(assignment.operator).to eq('||=')
183
- end
171
+ context 'when it is ||= operator assignment' do
172
+ let(:source) do
173
+ <<-END
174
+ def some_method
175
+ foo ||= 1
184
176
  end
177
+ END
178
+ end
179
+
180
+ it 'returns ||=' do
181
+ expect(assignment.operator).to eq('||=')
182
+ end
183
+ end
185
184
 
186
- context 'when it is &&= operator assignment' do
187
- let(:source) do
188
- <<-END
189
- def some_method
190
- foo &&= 1
191
- end
192
- END
193
- end
194
-
195
- it 'returns &&=' do
196
- expect(assignment.operator).to eq('&&=')
197
- end
185
+ context 'when it is &&= operator assignment' do
186
+ let(:source) do
187
+ <<-END
188
+ def some_method
189
+ foo &&= 1
198
190
  end
191
+ END
192
+ end
193
+
194
+ it 'returns &&=' do
195
+ expect(assignment.operator).to eq('&&=')
196
+ end
197
+ end
199
198
 
200
- context 'when it is multiple assignment' do
201
- let(:source) do
202
- <<-END
203
- def some_method
204
- foo, bar = [1, 2]
205
- end
206
- END
207
- end
208
-
209
- it 'returns =' do
210
- expect(assignment.operator).to eq('=')
211
- end
199
+ context 'when it is multiple assignment' do
200
+ let(:source) do
201
+ <<-END
202
+ def some_method
203
+ foo, bar = [1, 2]
212
204
  end
213
- end
205
+ END
206
+ end
207
+
208
+ it 'returns =' do
209
+ expect(assignment.operator).to eq('=')
214
210
  end
215
211
  end
216
212
  end