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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +42 -0
- data/README.md +59 -54
- data/config/default.yml +124 -95
- data/config/disabled.yml +4 -0
- data/config/enabled.yml +286 -264
- data/lib/rubocop.rb +10 -3
- data/lib/rubocop/cli.rb +10 -171
- data/lib/rubocop/cop/cop.rb +14 -11
- data/lib/rubocop/cop/lint/debugger.rb +35 -0
- data/lib/rubocop/cop/lint/syntax.rb +34 -0
- data/lib/rubocop/cop/offence.rb +15 -23
- data/lib/rubocop/cop/style/align_array.rb +1 -10
- data/lib/rubocop/cop/style/align_hash.rb +14 -2
- data/lib/rubocop/cop/style/align_parameters.rb +1 -11
- data/lib/rubocop/cop/style/and_or.rb +13 -11
- data/lib/rubocop/cop/style/attr.rb +1 -1
- data/lib/rubocop/cop/style/autocorrect_alignment.rb +31 -6
- data/lib/rubocop/cop/style/blocks.rb +14 -6
- data/lib/rubocop/cop/style/character_literal.rb +1 -1
- data/lib/rubocop/cop/style/class_length.rb +38 -0
- data/lib/rubocop/cop/style/collection_methods.rb +1 -1
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
- data/lib/rubocop/cop/style/configurable_naming.rb +47 -0
- data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/empty_literal.rb +1 -1
- data/lib/rubocop/cop/style/even_odd.rb +7 -3
- data/lib/rubocop/cop/style/hash_methods.rb +1 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +36 -7
- data/lib/rubocop/cop/style/lambda_call.rb +36 -11
- data/lib/rubocop/cop/style/method_call_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +41 -0
- data/lib/rubocop/cop/style/method_length.rb +2 -13
- data/lib/rubocop/cop/style/method_name.rb +42 -0
- data/lib/rubocop/cop/style/numeric_literals.rb +4 -0
- data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +60 -0
- data/lib/rubocop/cop/style/redundant_exception.rb +32 -0
- data/lib/rubocop/cop/style/redundant_return.rb +14 -5
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/semicolon.rb +13 -4
- data/lib/rubocop/cop/style/signal_exception.rb +63 -14
- data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
- data/lib/rubocop/cop/style/string_help.rb +4 -1
- data/lib/rubocop/cop/style/string_literals.rb +34 -11
- data/lib/rubocop/cop/style/surrounding_space.rb +64 -17
- data/lib/rubocop/cop/style/tab.rb +1 -1
- data/lib/rubocop/cop/style/variable_name.rb +44 -0
- data/lib/rubocop/cop/style/when_then.rb +1 -1
- data/lib/rubocop/cop/style/while_until_do.rb +1 -1
- data/lib/rubocop/cop/team.rb +4 -7
- data/lib/rubocop/cop/util.rb +12 -0
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/emacs_style_formatter.rb +5 -2
- data/lib/rubocop/formatter/json_formatter.rb +1 -0
- data/lib/rubocop/formatter/progress_formatter.rb +9 -13
- data/lib/rubocop/formatter/simple_text_formatter.rb +63 -15
- data/lib/rubocop/options.rb +184 -0
- data/lib/rubocop/processed_source.rb +4 -0
- data/lib/rubocop/version.rb +1 -1
- data/rubocop.gemspec +1 -1
- data/spec/rubocop/cli_spec.rb +870 -1001
- data/spec/rubocop/config_spec.rb +13 -13
- data/spec/rubocop/config_store_spec.rb +38 -37
- data/spec/rubocop/cop/commissioner_spec.rb +42 -46
- data/spec/rubocop/cop/cop_spec.rb +72 -77
- data/spec/rubocop/cop/corrector_spec.rb +51 -55
- data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +100 -106
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +403 -409
- data/spec/rubocop/cop/lint/debugger_spec.rb +39 -0
- data/spec/rubocop/cop/lint/empty_ensure_spec.rb +19 -25
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +50 -56
- data/spec/rubocop/cop/lint/end_in_method_spec.rb +20 -26
- data/spec/rubocop/cop/lint/ensure_return_spec.rb +30 -36
- data/spec/rubocop/cop/lint/eval_spec.rb +25 -31
- data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +22 -28
- data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +51 -57
- data/spec/rubocop/cop/lint/loop_spec.rb +17 -23
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +51 -57
- data/spec/rubocop/cop/lint/rescue_exception_spec.rb +105 -111
- data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +230 -236
- data/spec/rubocop/cop/lint/syntax_spec.rb +33 -0
- data/spec/rubocop/cop/lint/unreachable_code_spec.rb +51 -57
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1544 -1550
- data/spec/rubocop/cop/lint/useless_comparison_spec.rb +21 -27
- data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +119 -125
- data/spec/rubocop/cop/lint/void_spec.rb +50 -56
- data/spec/rubocop/cop/offence_spec.rb +101 -131
- data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +6 -12
- data/spec/rubocop/cop/rails/read_attribute_spec.rb +6 -12
- data/spec/rubocop/cop/rails/validation_spec.rb +13 -19
- data/spec/rubocop/cop/style/access_control_spec.rb +146 -152
- data/spec/rubocop/cop/style/alias_spec.rb +30 -36
- data/spec/rubocop/cop/style/align_array_spec.rb +57 -56
- data/spec/rubocop/cop/style/align_hash_spec.rb +256 -237
- data/spec/rubocop/cop/style/align_parameters_spec.rb +216 -202
- data/spec/rubocop/cop/style/and_or_spec.rb +51 -55
- data/spec/rubocop/cop/style/ascii_comments_spec.rb +14 -20
- data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +26 -32
- data/spec/rubocop/cop/style/attr_spec.rb +11 -17
- data/spec/rubocop/cop/style/begin_block_spec.rb +6 -12
- data/spec/rubocop/cop/style/block_comments_spec.rb +13 -19
- data/spec/rubocop/cop/style/block_nesting_spec.rb +134 -140
- data/spec/rubocop/cop/style/blocks_spec.rb +81 -84
- data/spec/rubocop/cop/style/case_equality_spec.rb +5 -11
- data/spec/rubocop/cop/style/case_indentation_spec.rb +71 -77
- data/spec/rubocop/cop/style/character_literal_spec.rb +31 -37
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +31 -37
- data/spec/rubocop/cop/style/class_length_spec.rb +65 -0
- data/spec/rubocop/cop/style/class_methods_spec.rb +35 -41
- data/spec/rubocop/cop/style/class_vars_spec.rb +11 -17
- data/spec/rubocop/cop/style/collection_methods_spec.rb +41 -47
- data/spec/rubocop/cop/style/colon_method_call_spec.rb +45 -51
- data/spec/rubocop/cop/style/comment_annotation_spec.rb +79 -85
- data/spec/rubocop/cop/style/constant_name_spec.rb +45 -51
- data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +28 -34
- data/spec/rubocop/cop/style/def_without_parentheses_spec.rb +23 -29
- data/spec/rubocop/cop/style/documentation_spec.rb +60 -66
- data/spec/rubocop/cop/style/dot_position_spec.rb +50 -56
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +109 -110
- data/spec/rubocop/cop/style/empty_lines_spec.rb +28 -34
- data/spec/rubocop/cop/style/empty_literal_spec.rb +80 -86
- data/spec/rubocop/cop/style/encoding_spec.rb +50 -56
- data/spec/rubocop/cop/style/end_block_spec.rb +6 -12
- data/spec/rubocop/cop/style/end_of_line_spec.rb +13 -19
- data/spec/rubocop/cop/style/even_odd_spec.rb +69 -41
- data/spec/rubocop/cop/style/favor_join_spec.rb +21 -27
- data/spec/rubocop/cop/style/favor_modifier_spec.rb +180 -176
- data/spec/rubocop/cop/style/favor_sprintf_spec.rb +41 -47
- data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +63 -69
- data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +32 -38
- data/spec/rubocop/cop/style/final_newline_spec.rb +16 -22
- data/spec/rubocop/cop/style/for_spec.rb +18 -24
- data/spec/rubocop/cop/style/global_vars_spec.rb +23 -29
- data/spec/rubocop/cop/style/hash_methods_spec.rb +39 -45
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +93 -65
- data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +11 -17
- data/spec/rubocop/cop/style/indentation_width_spec.rb +377 -383
- data/spec/rubocop/cop/style/lambda_call_spec.rb +40 -22
- data/spec/rubocop/cop/style/lambda_spec.rb +30 -34
- data/spec/rubocop/cop/style/leading_comment_space_spec.rb +44 -50
- data/spec/rubocop/cop/style/line_length_spec.rb +11 -17
- data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +14 -20
- data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +60 -0
- data/spec/rubocop/cop/style/method_length_spec.rb +127 -133
- data/spec/rubocop/cop/style/method_name_spec.rb +103 -0
- data/spec/rubocop/cop/style/module_function_spec.rb +16 -22
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +64 -70
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +74 -80
- data/spec/rubocop/cop/style/nil_comparison_spec.rb +20 -26
- data/spec/rubocop/cop/style/not_spec.rb +13 -19
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +36 -35
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +5 -11
- data/spec/rubocop/cop/style/op_method_spec.rb +61 -67
- data/spec/rubocop/cop/style/parameter_lists_spec.rb +31 -37
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +62 -68
- data/spec/rubocop/cop/style/perl_backrefs_spec.rb +9 -15
- data/spec/rubocop/cop/style/proc_spec.rb +13 -19
- data/spec/rubocop/cop/style/raise_args_spec.rb +55 -0
- data/spec/rubocop/cop/style/reduce_arguments_spec.rb +49 -55
- data/spec/rubocop/cop/style/redundant_begin_spec.rb +47 -53
- data/spec/rubocop/cop/style/redundant_exception_spec.rb +27 -0
- data/spec/rubocop/cop/style/redundant_return_spec.rb +164 -72
- data/spec/rubocop/cop/style/redundant_self_spec.rb +109 -115
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +57 -63
- data/spec/rubocop/cop/style/rescue_modifier_spec.rb +99 -105
- data/spec/rubocop/cop/style/semicolon_spec.rb +95 -90
- data/spec/rubocop/cop/style/signal_exception_spec.rb +248 -95
- data/spec/rubocop/cop/style/single_line_methods_spec.rb +45 -51
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +14 -20
- data/spec/rubocop/cop/style/space_after_comma_spec.rb +16 -22
- data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +48 -54
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +49 -55
- data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +10 -16
- data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +118 -50
- data/spec/rubocop/cop/style/space_around_equals_in_default_parameter_spec.rb +18 -24
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +204 -210
- data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +36 -42
- data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +39 -45
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +62 -68
- data/spec/rubocop/cop/style/space_inside_parens_spec.rb +18 -24
- data/spec/rubocop/cop/style/special_global_vars_spec.rb +40 -46
- data/spec/rubocop/cop/style/string_literals_spec.rb +148 -70
- data/spec/rubocop/cop/style/symbol_array_spec.rb +28 -34
- data/spec/rubocop/cop/style/symbol_name_spec.rb +132 -138
- data/spec/rubocop/cop/style/tab_spec.rb +9 -15
- data/spec/rubocop/cop/style/ternary_operator_spec.rb +25 -31
- data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +10 -16
- data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +14 -20
- data/spec/rubocop/cop/style/trivial_accessors_spec.rb +374 -380
- data/spec/rubocop/cop/style/unless_else_spec.rb +17 -23
- data/spec/rubocop/cop/style/variable_interpolation_spec.rb +36 -42
- data/spec/rubocop/cop/style/variable_name_spec.rb +83 -0
- data/spec/rubocop/cop/style/when_then_spec.rb +31 -37
- data/spec/rubocop/cop/style/while_until_do_spec.rb +47 -53
- data/spec/rubocop/cop/style/word_array_spec.rb +49 -55
- data/spec/rubocop/cop/team_spec.rb +125 -127
- data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +176 -180
- data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +580 -586
- data/spec/rubocop/cop/variable_inspector/scope_spec.rb +140 -146
- data/spec/rubocop/cop/variable_inspector/variable_spec.rb +52 -58
- data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +217 -223
- data/spec/rubocop/cop/variable_inspector_spec.rb +15 -19
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +35 -36
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +2 -2
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +24 -1
- data/spec/rubocop/formatter/file_list_formatter_spec.rb +1 -1
- data/spec/rubocop/formatter/formatter_set_spec.rb +3 -3
- data/spec/rubocop/formatter/json_formatter_spec.rb +7 -2
- data/spec/rubocop/formatter/offence_count_formatter_spec.rb +1 -1
- data/spec/rubocop/formatter/progress_formatter_spec.rb +1 -1
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +55 -6
- data/spec/rubocop/options_spec.rb +233 -0
- data/spec/rubocop/processed_source_spec.rb +85 -42
- data/spec/rubocop/source_parser_spec.rb +108 -110
- data/spec/rubocop/target_finder_spec.rb +125 -127
- data/spec/rubocop/token_spec.rb +15 -17
- metadata +32 -8
- data/lib/rubocop/backports/bsearch.rb +0 -39
- data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +0 -77
- data/spec/rubocop/cop/style/method_and_variable_snake_case_spec.rb +0 -102
@@ -2,242 +2,236 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
' end',
|
20
|
-
'end'
|
21
|
-
]
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'registers an offence' do
|
25
|
-
inspect_source(cop, source)
|
26
|
-
expect(cop.offences.size).to eq(1)
|
27
|
-
expect(cop.offences.first.message)
|
28
|
-
.to include('Shadowing outer local variable - foo')
|
29
|
-
expect(cop.offences.first.line).to eq(4)
|
30
|
-
end
|
31
|
-
|
32
|
-
include_examples 'mimics MRI 2.0'
|
33
|
-
end
|
34
|
-
|
35
|
-
context 'when a splat block argument has same name ' +
|
36
|
-
'as an outer scope variable' do
|
37
|
-
let(:source) do
|
38
|
-
[
|
39
|
-
'def some_method',
|
40
|
-
' foo = 1',
|
41
|
-
' puts foo',
|
42
|
-
' 1.times do |*foo|',
|
43
|
-
' end',
|
44
|
-
'end'
|
45
|
-
]
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'registers an offence' do
|
49
|
-
inspect_source(cop, source)
|
50
|
-
expect(cop.offences.size).to eq(1)
|
51
|
-
expect(cop.offences.first.message)
|
52
|
-
.to include('Shadowing outer local variable - foo')
|
53
|
-
expect(cop.offences.first.line).to eq(4)
|
54
|
-
end
|
55
|
-
|
56
|
-
include_examples 'mimics MRI 2.0'
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'when a block block argument has same name ' +
|
60
|
-
'as an outer scope variable' do
|
61
|
-
let(:source) do
|
62
|
-
[
|
63
|
-
'def some_method',
|
64
|
-
' foo = 1',
|
65
|
-
' puts foo',
|
66
|
-
' proc_taking_block = proc do |&foo|',
|
67
|
-
' end',
|
68
|
-
' proc_taking_block.call do',
|
69
|
-
' end',
|
70
|
-
'end'
|
71
|
-
]
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'registers an offence' do
|
75
|
-
inspect_source(cop, source)
|
76
|
-
expect(cop.offences.size).to eq(1)
|
77
|
-
expect(cop.offences.first.message)
|
78
|
-
.to include('Shadowing outer local variable - foo')
|
79
|
-
expect(cop.offences.first.line).to eq(4)
|
80
|
-
end
|
81
|
-
|
82
|
-
include_examples 'mimics MRI 2.0'
|
83
|
-
end
|
84
|
-
|
85
|
-
context 'when a block local variable has same name ' +
|
86
|
-
'as an outer scope variable' do
|
87
|
-
let(:source) do
|
88
|
-
[
|
89
|
-
'def some_method',
|
90
|
-
' foo = 1',
|
91
|
-
' puts foo',
|
92
|
-
' 1.times do |i; foo|',
|
93
|
-
' puts foo',
|
94
|
-
' end',
|
95
|
-
'end'
|
96
|
-
]
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'registers an offence' do
|
100
|
-
inspect_source(cop, source)
|
101
|
-
expect(cop.offences.size).to eq(1)
|
102
|
-
expect(cop.offences.first.message)
|
103
|
-
.to include('Shadowing outer local variable - foo')
|
104
|
-
expect(cop.offences.first.line).to eq(4)
|
105
|
-
end
|
106
|
-
|
107
|
-
include_examples 'mimics MRI 2.0', 'shadowing'
|
108
|
-
end
|
109
|
-
|
110
|
-
context 'when a block argument has different name ' +
|
111
|
-
'with outer scope variables' do
|
112
|
-
let(:source) do
|
113
|
-
[
|
114
|
-
'def some_method',
|
115
|
-
' foo = 1',
|
116
|
-
' puts foo',
|
117
|
-
' 1.times do |bar|',
|
118
|
-
' end',
|
119
|
-
'end'
|
120
|
-
]
|
121
|
-
end
|
122
|
-
|
123
|
-
include_examples 'accepts'
|
124
|
-
include_examples 'mimics MRI 2.0'
|
125
|
-
end
|
126
|
-
|
127
|
-
context 'when an outer scope variable is reassigned in a block' do
|
128
|
-
let(:source) do
|
129
|
-
[
|
130
|
-
'def some_method',
|
131
|
-
' foo = 1',
|
132
|
-
' puts foo',
|
133
|
-
' 1.times do',
|
134
|
-
' foo = 2',
|
135
|
-
' end',
|
136
|
-
'end'
|
137
|
-
]
|
138
|
-
end
|
139
|
-
|
140
|
-
include_examples 'accepts'
|
141
|
-
include_examples 'mimics MRI 2.0'
|
142
|
-
end
|
143
|
-
|
144
|
-
context 'when an outer scope variable is referenced in a block' do
|
145
|
-
let(:source) do
|
146
|
-
[
|
147
|
-
'def some_method',
|
148
|
-
' foo = 1',
|
149
|
-
' puts foo',
|
150
|
-
' 1.times do',
|
151
|
-
' puts foo',
|
152
|
-
' end',
|
153
|
-
'end'
|
154
|
-
]
|
155
|
-
end
|
156
|
-
|
157
|
-
include_examples 'accepts'
|
158
|
-
include_examples 'mimics MRI 2.0'
|
159
|
-
end
|
160
|
-
|
161
|
-
context 'when multiple block arguments have same name "_"' do
|
162
|
-
let(:source) do
|
163
|
-
[
|
164
|
-
'def some_method',
|
165
|
-
' 1.times do |_, foo, _|',
|
166
|
-
' end',
|
167
|
-
'end'
|
168
|
-
]
|
169
|
-
end
|
170
|
-
|
171
|
-
include_examples 'accepts'
|
172
|
-
include_examples 'mimics MRI 2.0'
|
173
|
-
end
|
174
|
-
|
175
|
-
context 'when multiple block arguments have ' +
|
176
|
-
'a same name starts with "_"' do
|
177
|
-
let(:source) do
|
178
|
-
[
|
179
|
-
'def some_method',
|
180
|
-
' 1.times do |_foo, bar, _foo|',
|
181
|
-
' end',
|
182
|
-
'end'
|
183
|
-
]
|
184
|
-
end
|
185
|
-
|
186
|
-
include_examples 'accepts'
|
187
|
-
include_examples 'mimics MRI 2.0'
|
188
|
-
end
|
189
|
-
|
190
|
-
context 'when a block argument has same name "_" ' +
|
191
|
-
'as outer scope variable "_"' do
|
192
|
-
let(:source) do
|
193
|
-
[
|
194
|
-
'def some_method',
|
195
|
-
' _ = 1',
|
196
|
-
' puts _',
|
197
|
-
' 1.times do |_|',
|
198
|
-
' end',
|
199
|
-
'end'
|
200
|
-
]
|
201
|
-
end
|
202
|
-
|
203
|
-
include_examples 'accepts'
|
204
|
-
include_examples 'mimics MRI 2.0'
|
205
|
-
end
|
206
|
-
|
207
|
-
context 'when a block argument has a same name starts with "_" ' +
|
208
|
-
'as an outer scope variable' do
|
209
|
-
let(:source) do
|
210
|
-
[
|
211
|
-
'def some_method',
|
212
|
-
' _foo = 1',
|
213
|
-
' puts _foo',
|
214
|
-
' 1.times do |_foo|',
|
215
|
-
' end',
|
216
|
-
'end'
|
217
|
-
]
|
218
|
-
end
|
219
|
-
|
220
|
-
include_examples 'accepts'
|
221
|
-
include_examples 'mimics MRI 2.0'
|
222
|
-
end
|
223
|
-
|
224
|
-
context 'when a method argument has same name ' +
|
225
|
-
'as an outer scope variable' do
|
226
|
-
let(:source) do
|
227
|
-
[
|
228
|
-
'class SomeClass',
|
229
|
-
' foo = 1',
|
230
|
-
' puts foo',
|
231
|
-
' def some_method(foo)',
|
232
|
-
' end',
|
233
|
-
'end'
|
234
|
-
]
|
235
|
-
end
|
236
|
-
|
237
|
-
include_examples 'accepts'
|
238
|
-
include_examples 'mimics MRI 2.0'
|
239
|
-
end
|
240
|
-
end
|
5
|
+
describe Rubocop::Cop::Lint::ShadowingOuterLocalVariable do
|
6
|
+
subject(:cop) { described_class.new }
|
7
|
+
|
8
|
+
context 'when a block argument has same name ' +
|
9
|
+
'as an outer scope variable' do
|
10
|
+
let(:source) do
|
11
|
+
[
|
12
|
+
'def some_method',
|
13
|
+
' foo = 1',
|
14
|
+
' puts foo',
|
15
|
+
' 1.times do |foo|',
|
16
|
+
' end',
|
17
|
+
'end'
|
18
|
+
]
|
241
19
|
end
|
20
|
+
|
21
|
+
it 'registers an offence' do
|
22
|
+
inspect_source(cop, source)
|
23
|
+
expect(cop.offences.size).to eq(1)
|
24
|
+
expect(cop.offences.first.message)
|
25
|
+
.to include('Shadowing outer local variable - foo')
|
26
|
+
expect(cop.offences.first.line).to eq(4)
|
27
|
+
end
|
28
|
+
|
29
|
+
include_examples 'mimics MRI 2.0'
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when a splat block argument has same name ' +
|
33
|
+
'as an outer scope variable' do
|
34
|
+
let(:source) do
|
35
|
+
[
|
36
|
+
'def some_method',
|
37
|
+
' foo = 1',
|
38
|
+
' puts foo',
|
39
|
+
' 1.times do |*foo|',
|
40
|
+
' end',
|
41
|
+
'end'
|
42
|
+
]
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'registers an offence' do
|
46
|
+
inspect_source(cop, source)
|
47
|
+
expect(cop.offences.size).to eq(1)
|
48
|
+
expect(cop.offences.first.message)
|
49
|
+
.to include('Shadowing outer local variable - foo')
|
50
|
+
expect(cop.offences.first.line).to eq(4)
|
51
|
+
end
|
52
|
+
|
53
|
+
include_examples 'mimics MRI 2.0'
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when a block block argument has same name ' +
|
57
|
+
'as an outer scope variable' do
|
58
|
+
let(:source) do
|
59
|
+
[
|
60
|
+
'def some_method',
|
61
|
+
' foo = 1',
|
62
|
+
' puts foo',
|
63
|
+
' proc_taking_block = proc do |&foo|',
|
64
|
+
' end',
|
65
|
+
' proc_taking_block.call do',
|
66
|
+
' end',
|
67
|
+
'end'
|
68
|
+
]
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'registers an offence' do
|
72
|
+
inspect_source(cop, source)
|
73
|
+
expect(cop.offences.size).to eq(1)
|
74
|
+
expect(cop.offences.first.message)
|
75
|
+
.to include('Shadowing outer local variable - foo')
|
76
|
+
expect(cop.offences.first.line).to eq(4)
|
77
|
+
end
|
78
|
+
|
79
|
+
include_examples 'mimics MRI 2.0'
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'when a block local variable has same name ' +
|
83
|
+
'as an outer scope variable' do
|
84
|
+
let(:source) do
|
85
|
+
[
|
86
|
+
'def some_method',
|
87
|
+
' foo = 1',
|
88
|
+
' puts foo',
|
89
|
+
' 1.times do |i; foo|',
|
90
|
+
' puts foo',
|
91
|
+
' end',
|
92
|
+
'end'
|
93
|
+
]
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'registers an offence' do
|
97
|
+
inspect_source(cop, source)
|
98
|
+
expect(cop.offences.size).to eq(1)
|
99
|
+
expect(cop.offences.first.message)
|
100
|
+
.to include('Shadowing outer local variable - foo')
|
101
|
+
expect(cop.offences.first.line).to eq(4)
|
102
|
+
end
|
103
|
+
|
104
|
+
include_examples 'mimics MRI 2.0', 'shadowing'
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'when a block argument has different name ' +
|
108
|
+
'with outer scope variables' do
|
109
|
+
let(:source) do
|
110
|
+
[
|
111
|
+
'def some_method',
|
112
|
+
' foo = 1',
|
113
|
+
' puts foo',
|
114
|
+
' 1.times do |bar|',
|
115
|
+
' end',
|
116
|
+
'end'
|
117
|
+
]
|
118
|
+
end
|
119
|
+
|
120
|
+
include_examples 'accepts'
|
121
|
+
include_examples 'mimics MRI 2.0'
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'when an outer scope variable is reassigned in a block' do
|
125
|
+
let(:source) do
|
126
|
+
[
|
127
|
+
'def some_method',
|
128
|
+
' foo = 1',
|
129
|
+
' puts foo',
|
130
|
+
' 1.times do',
|
131
|
+
' foo = 2',
|
132
|
+
' end',
|
133
|
+
'end'
|
134
|
+
]
|
135
|
+
end
|
136
|
+
|
137
|
+
include_examples 'accepts'
|
138
|
+
include_examples 'mimics MRI 2.0'
|
139
|
+
end
|
140
|
+
|
141
|
+
context 'when an outer scope variable is referenced in a block' do
|
142
|
+
let(:source) do
|
143
|
+
[
|
144
|
+
'def some_method',
|
145
|
+
' foo = 1',
|
146
|
+
' puts foo',
|
147
|
+
' 1.times do',
|
148
|
+
' puts foo',
|
149
|
+
' end',
|
150
|
+
'end'
|
151
|
+
]
|
152
|
+
end
|
153
|
+
|
154
|
+
include_examples 'accepts'
|
155
|
+
include_examples 'mimics MRI 2.0'
|
156
|
+
end
|
157
|
+
|
158
|
+
context 'when multiple block arguments have same name "_"' do
|
159
|
+
let(:source) do
|
160
|
+
[
|
161
|
+
'def some_method',
|
162
|
+
' 1.times do |_, foo, _|',
|
163
|
+
' end',
|
164
|
+
'end'
|
165
|
+
]
|
166
|
+
end
|
167
|
+
|
168
|
+
include_examples 'accepts'
|
169
|
+
include_examples 'mimics MRI 2.0'
|
170
|
+
end
|
171
|
+
|
172
|
+
context 'when multiple block arguments have ' +
|
173
|
+
'a same name starts with "_"' do
|
174
|
+
let(:source) do
|
175
|
+
[
|
176
|
+
'def some_method',
|
177
|
+
' 1.times do |_foo, bar, _foo|',
|
178
|
+
' end',
|
179
|
+
'end'
|
180
|
+
]
|
181
|
+
end
|
182
|
+
|
183
|
+
include_examples 'accepts'
|
184
|
+
include_examples 'mimics MRI 2.0'
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'when a block argument has same name "_" ' +
|
188
|
+
'as outer scope variable "_"' do
|
189
|
+
let(:source) do
|
190
|
+
[
|
191
|
+
'def some_method',
|
192
|
+
' _ = 1',
|
193
|
+
' puts _',
|
194
|
+
' 1.times do |_|',
|
195
|
+
' end',
|
196
|
+
'end'
|
197
|
+
]
|
198
|
+
end
|
199
|
+
|
200
|
+
include_examples 'accepts'
|
201
|
+
include_examples 'mimics MRI 2.0'
|
202
|
+
end
|
203
|
+
|
204
|
+
context 'when a block argument has a same name starts with "_" ' +
|
205
|
+
'as an outer scope variable' do
|
206
|
+
let(:source) do
|
207
|
+
[
|
208
|
+
'def some_method',
|
209
|
+
' _foo = 1',
|
210
|
+
' puts _foo',
|
211
|
+
' 1.times do |_foo|',
|
212
|
+
' end',
|
213
|
+
'end'
|
214
|
+
]
|
215
|
+
end
|
216
|
+
|
217
|
+
include_examples 'accepts'
|
218
|
+
include_examples 'mimics MRI 2.0'
|
219
|
+
end
|
220
|
+
|
221
|
+
context 'when a method argument has same name ' +
|
222
|
+
'as an outer scope variable' do
|
223
|
+
let(:source) do
|
224
|
+
[
|
225
|
+
'class SomeClass',
|
226
|
+
' foo = 1',
|
227
|
+
' puts foo',
|
228
|
+
' def some_method(foo)',
|
229
|
+
' end',
|
230
|
+
'end'
|
231
|
+
]
|
232
|
+
end
|
233
|
+
|
234
|
+
include_examples 'accepts'
|
235
|
+
include_examples 'mimics MRI 2.0'
|
242
236
|
end
|
243
237
|
end
|