rubocop 0.13.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -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
|
-
|
6
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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
|
-
|
6
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
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
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
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
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
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
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
-
|
6
|
-
|
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
|
-
|
8
|
+
# if
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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
|
-
|
61
|
+
# unless
|
65
62
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
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
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
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
|