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,65 +2,133 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
inspect_source(cop, ['each { puts }'])
|
14
|
-
expect(cop.messages).to be_empty
|
15
|
-
expect(cop.highlights).to be_empty
|
16
|
-
end
|
5
|
+
describe Rubocop::Cop::Style::SpaceAroundBlockBraces, :config do
|
6
|
+
subject(:cop) { described_class.new(config) }
|
7
|
+
let(:cop_config) do
|
8
|
+
{
|
9
|
+
'EnforcedStyle' => 'space_inside_braces',
|
10
|
+
'SpaceBeforeBlockParameters' => true
|
11
|
+
}
|
12
|
+
end
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
it 'accepts braces surrounded by spaces' do
|
15
|
+
inspect_source(cop, ['each { puts }'])
|
16
|
+
expect(cop.messages).to be_empty
|
17
|
+
expect(cop.highlights).to be_empty
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'registers an offence for left brace without outer space' do
|
21
|
+
inspect_source(cop, ['each{ puts }'])
|
22
|
+
expect(cop.messages).to eq(['Space missing to the left of {.'])
|
23
|
+
expect(cop.highlights).to eq(['{'])
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'registers an offence for left brace without inner space' do
|
27
|
+
inspect_source(cop, ['each {puts }'])
|
28
|
+
expect(cop.messages).to eq(['Space missing inside {.'])
|
29
|
+
expect(cop.highlights).to eq(['{'])
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'registers an offence for right brace without inner space' do
|
33
|
+
inspect_source(cop, ['each { puts}'])
|
34
|
+
expect(cop.messages).to eq(['Space missing inside }.'])
|
35
|
+
expect(cop.highlights).to eq(['}'])
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'with passed in parameters' do
|
39
|
+
it 'accepts left brace with inner space' do
|
40
|
+
inspect_source(cop, ['each { |x| puts }'])
|
41
|
+
expect(cop.messages).to be_empty
|
42
|
+
expect(cop.highlights).to be_empty
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'registers an offence for left brace without inner space' do
|
46
|
+
inspect_source(cop, ['each {|x| puts }'])
|
47
|
+
expect(cop.messages).to eq(['Space between { and | missing.'])
|
48
|
+
expect(cop.highlights).to eq(['{'])
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'and space before block parameters not allowed' do
|
52
|
+
let(:cop_config) do
|
53
|
+
{
|
54
|
+
'EnforcedStyle' => 'space_inside_braces',
|
55
|
+
'SpaceBeforeBlockParameters' => false
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'registers an offence for left brace with inner space' do
|
60
|
+
inspect_source(cop, ['each { |x| puts }'])
|
61
|
+
expect(cop.messages).to eq(['Space between { and | detected.'])
|
62
|
+
expect(cop.highlights).to eq([' '])
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'accepts left brace without inner space' do
|
66
|
+
inspect_source(cop, ['each {|x| puts }'])
|
67
|
+
expect(cop.messages).to be_empty
|
68
|
+
expect(cop.highlights).to be_empty
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'configured with no_space_inside_braces' do
|
74
|
+
let(:cop_config) do
|
75
|
+
{
|
76
|
+
'EnforcedStyle' => 'no_space_inside_braces',
|
77
|
+
'SpaceBeforeBlockParameters' => true
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'accepts braces without spaces inside' do
|
82
|
+
inspect_source(cop, ['each {puts}'])
|
83
|
+
expect(cop.messages).to be_empty
|
84
|
+
expect(cop.highlights).to be_empty
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'registers an offence for left brace with inner space' do
|
88
|
+
inspect_source(cop, ['each { puts}'])
|
89
|
+
expect(cop.messages).to eq(['Space inside { detected.'])
|
90
|
+
expect(cop.highlights).to eq([' '])
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'registers an offence for right brace with inner space' do
|
94
|
+
inspect_source(cop, ['each {puts }'])
|
95
|
+
expect(cop.messages).to eq(['Space inside } detected.'])
|
96
|
+
expect(cop.highlights).to eq([' '])
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'registers an offence for left brace without outer space' do
|
100
|
+
inspect_source(cop, ['each{puts}'])
|
101
|
+
expect(cop.messages).to eq(['Space missing to the left of {.'])
|
102
|
+
expect(cop.highlights).to eq(['{'])
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'with passed in parameters' do
|
106
|
+
context 'and space before block parameters allowed' do
|
107
|
+
it 'accepts left brace with inner space' do
|
108
|
+
inspect_source(cop, ['each { |x| puts}'])
|
109
|
+
expect(cop.messages).to eq([])
|
110
|
+
expect(cop.highlights).to eq([])
|
22
111
|
end
|
23
112
|
|
24
113
|
it 'registers an offence for left brace without inner space' do
|
25
|
-
inspect_source(cop, ['each {puts
|
26
|
-
expect(cop.messages).to eq([
|
114
|
+
inspect_source(cop, ['each {|x| puts}'])
|
115
|
+
expect(cop.messages).to eq(['Space between { and | missing.'])
|
27
116
|
expect(cop.highlights).to eq(['{'])
|
28
117
|
end
|
118
|
+
end
|
29
119
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
120
|
+
context 'and space before block parameters not allowed' do
|
121
|
+
let(:cop_config) do
|
122
|
+
{
|
123
|
+
'EnforcedStyle' => 'no_space_inside_braces',
|
124
|
+
'SpaceBeforeBlockParameters' => false
|
125
|
+
}
|
34
126
|
end
|
35
127
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
expect(cop.highlights).to be_empty
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'registers an offence for left brace without inner space' do
|
44
|
-
inspect_source(cop, ['each {|x| puts }'])
|
45
|
-
expect(cop.messages).to eq(["Surrounding space missing for '{'."])
|
46
|
-
expect(cop.highlights).to eq(['{'])
|
47
|
-
end
|
48
|
-
|
49
|
-
context 'space before block parameters not allowed' do
|
50
|
-
let(:cop_config) { { 'NoSpaceBeforeBlockParameters' => true } }
|
51
|
-
|
52
|
-
it 'registers an offence for left brace with inner space' do
|
53
|
-
inspect_source(cop, ['each { |x| puts }'])
|
54
|
-
expect(cop.messages).to eq(['Space between { and | detected.'])
|
55
|
-
expect(cop.highlights).to eq(['{'])
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'accepts left brace without inner space' do
|
59
|
-
inspect_source(cop, ['each {|x| puts }'])
|
60
|
-
expect(cop.messages).to be_empty
|
61
|
-
expect(cop.highlights).to be_empty
|
62
|
-
end
|
63
|
-
end
|
128
|
+
it 'registers an offence for left brace with inner space' do
|
129
|
+
inspect_source(cop, ['each { |x| puts}'])
|
130
|
+
expect(cop.messages).to eq(['Space between { and | detected.'])
|
131
|
+
expect(cop.highlights).to eq([' '])
|
64
132
|
end
|
65
133
|
end
|
66
134
|
end
|
@@ -2,33 +2,27 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe SpaceAroundEqualsInParameterDefault do
|
9
|
-
subject(:space) { SpaceAroundEqualsInParameterDefault.new }
|
5
|
+
describe Rubocop::Cop::Style::SpaceAroundEqualsInParameterDefault do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
it 'registers an offence for default value assignment without space' do
|
9
|
+
inspect_source(cop, ['def f(x, y=0, z=1)', 'end'])
|
10
|
+
expect(cop.messages).to eq(
|
11
|
+
['Surrounding space missing in default value assignment.'] * 2)
|
12
|
+
end
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
it 'registers an offence for assignment empty string without space' do
|
15
|
+
inspect_source(cop, ['def f(x, y="", z=1)', 'end'])
|
16
|
+
expect(cop.offences.size).to eq(2)
|
17
|
+
end
|
21
18
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
19
|
+
it 'registers an offence for assignment of empty list without space' do
|
20
|
+
inspect_source(cop, ['def f(x, y=[])', 'end'])
|
21
|
+
expect(cop.offences.size).to eq(1)
|
22
|
+
end
|
26
23
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
24
|
+
it 'accepts default value assignment with space' do
|
25
|
+
inspect_source(cop, ['def f(x, y = 0, z = {})', 'end'])
|
26
|
+
expect(cop.messages).to be_empty
|
33
27
|
end
|
34
28
|
end
|
@@ -2,215 +2,209 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
inspect_source(space, ['class <<self',
|
210
|
-
'end'])
|
211
|
-
expect(space.messages).to be_empty
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
5
|
+
describe Rubocop::Cop::Style::SpaceAroundOperators do
|
6
|
+
subject(:cop) { described_class.new }
|
7
|
+
|
8
|
+
it 'registers an offence for assignment without space on both sides' do
|
9
|
+
inspect_source(cop, ['x=0', 'y= 0', 'z =0'])
|
10
|
+
expect(cop.messages).to eq(
|
11
|
+
["Surrounding space missing for operator '='."] * 3)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'registers an offence for ternary operator without space' do
|
15
|
+
inspect_source(cop, ['x == 0?1:2'])
|
16
|
+
expect(cop.messages).to eq(
|
17
|
+
["Surrounding space missing for operator '?'.",
|
18
|
+
"Surrounding space missing for operator ':'."])
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'registers an offence in presence of modifier if statement' do
|
22
|
+
check_modifier('if')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'registers an offence in presence of modifier unless statement' do
|
26
|
+
check_modifier('unless')
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'registers an offence in presence of modifier while statement' do
|
30
|
+
check_modifier('unless')
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'registers an offence in presence of modifier until statement' do
|
34
|
+
check_modifier('unless')
|
35
|
+
end
|
36
|
+
|
37
|
+
def check_modifier(keyword)
|
38
|
+
src = ["a=1 #{keyword} condition",
|
39
|
+
'c=2']
|
40
|
+
inspect_source(cop, src)
|
41
|
+
expect(cop.offences.map(&:line)).to eq([1, 2])
|
42
|
+
expect(cop.messages).to eq(
|
43
|
+
["Surrounding space missing for operator '='."] * 2)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'registers an offence for binary operators that could be unary' do
|
47
|
+
inspect_source(cop, ['a-3', 'x&0xff', 'z+0'])
|
48
|
+
expect(cop.messages).to eq(
|
49
|
+
["Surrounding space missing for operator '-'.",
|
50
|
+
"Surrounding space missing for operator '&'.",
|
51
|
+
"Surrounding space missing for operator '+'."])
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'registers an offence for arguments to a method' do
|
55
|
+
inspect_source(cop, ['puts 1+2'])
|
56
|
+
expect(cop.messages).to eq(
|
57
|
+
["Surrounding space missing for operator '+'."])
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'accepts operator symbols' do
|
61
|
+
inspect_source(cop, ['func(:-)'])
|
62
|
+
expect(cop.messages).to be_empty
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'accepts ranges' do
|
66
|
+
inspect_source(cop, ['a, b = (1..2), (1...3)'])
|
67
|
+
expect(cop.messages).to be_empty
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'accepts scope operator' do
|
71
|
+
source = ['@io.class == Zlib::GzipWriter']
|
72
|
+
inspect_source(cop, source)
|
73
|
+
expect(cop.messages).to be_empty
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'accepts ::Kernel::raise' do
|
77
|
+
source = ['::Kernel::raise IllegalBlockError.new']
|
78
|
+
inspect_source(cop, source)
|
79
|
+
expect(cop.messages).to be_empty
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'accepts exclamation point negation' do
|
83
|
+
inspect_source(cop, ['x = !a&&!b'])
|
84
|
+
expect(cop.messages).to eq(
|
85
|
+
["Surrounding space missing for operator '&&'."])
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'accepts exclamation point definition' do
|
89
|
+
inspect_source(cop, [' def !',
|
90
|
+
' !__getobj__',
|
91
|
+
' end'])
|
92
|
+
expect(cop.offences).to be_empty
|
93
|
+
expect(cop.messages).to be_empty
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'accepts a unary' do
|
97
|
+
inspect_source(cop,
|
98
|
+
[' def bm(label_width = 0, *labels, &blk)',
|
99
|
+
' benchmark(CAPTION, label_width, FORMAT,',
|
100
|
+
' *labels, &blk)',
|
101
|
+
' end',
|
102
|
+
'',
|
103
|
+
' def each &block',
|
104
|
+
' end',
|
105
|
+
'',
|
106
|
+
' def each *args',
|
107
|
+
' end',
|
108
|
+
''])
|
109
|
+
expect(cop.messages).to be_empty
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'accepts splat operator' do
|
113
|
+
inspect_source(cop, ['return *list if options'])
|
114
|
+
expect(cop.messages).to be_empty
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'accepts def of operator' do
|
118
|
+
inspect_source(cop, ['def +(other); end',
|
119
|
+
'def self.===(other); end'])
|
120
|
+
expect(cop.messages).to be_empty
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'accepts an operator at the end of a line' do
|
124
|
+
inspect_source(cop,
|
125
|
+
["['Favor unless over if for negative ' +",
|
126
|
+
" 'conditions.'] * 2"])
|
127
|
+
expect(cop.messages).to eq([])
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'accepts an assignment with spaces' do
|
131
|
+
inspect_source(cop, ['x = 0'])
|
132
|
+
expect(cop.offences).to be_empty
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'accepts an operator called with method syntax' do
|
136
|
+
inspect_source(cop, ['Date.today.+(1).to_s'])
|
137
|
+
expect(cop.offences).to be_empty
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'registers an offence for operators without spaces' do
|
141
|
+
inspect_source(cop,
|
142
|
+
['x+= a+b-c*d/e%f^g|h&i||j',
|
143
|
+
'y -=k&&l'])
|
144
|
+
expect(cop.messages)
|
145
|
+
.to eq(["Surrounding space missing for operator '+='.",
|
146
|
+
"Surrounding space missing for operator '+'.",
|
147
|
+
"Surrounding space missing for operator '-'.",
|
148
|
+
"Surrounding space missing for operator '*'.",
|
149
|
+
"Surrounding space missing for operator '/'.",
|
150
|
+
"Surrounding space missing for operator '%'.",
|
151
|
+
"Surrounding space missing for operator '^'.",
|
152
|
+
"Surrounding space missing for operator '|'.",
|
153
|
+
"Surrounding space missing for operator '&'.",
|
154
|
+
"Surrounding space missing for operator '||'.",
|
155
|
+
"Surrounding space missing for operator '-='.",
|
156
|
+
"Surrounding space missing for operator '&&'."])
|
157
|
+
end
|
158
|
+
|
159
|
+
it 'accepts operators with spaces' do
|
160
|
+
inspect_source(cop,
|
161
|
+
['x += a + b - c * d / e % f ^ g | h & i || j',
|
162
|
+
'y -= k && l'])
|
163
|
+
expect(cop.messages).to eq([])
|
164
|
+
end
|
165
|
+
|
166
|
+
it "accepts some operators that are exceptions & don't need spaces" do
|
167
|
+
inspect_source(cop, ['(1..3)',
|
168
|
+
'ActionController::Base',
|
169
|
+
'each { |s, t| }'])
|
170
|
+
expect(cop.messages).to eq([])
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'accepts an assignment followed by newline' do
|
174
|
+
inspect_source(cop, ['x =', '0'])
|
175
|
+
expect(cop.offences).to be_empty
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'registers an offences for exponent operator with spaces' do
|
179
|
+
inspect_source(cop, ['x = a * b ** 2'])
|
180
|
+
expect(cop.messages).to eq(
|
181
|
+
['Space around operator ** detected.'])
|
182
|
+
end
|
183
|
+
|
184
|
+
it 'accepts exponent operator without spaces' do
|
185
|
+
inspect_source(cop, ['x = a * b**2'])
|
186
|
+
expect(cop.offences).to be_empty
|
187
|
+
end
|
188
|
+
|
189
|
+
it 'accepts unary operators without space' do
|
190
|
+
inspect_source(cop, ['[].map(&:size)',
|
191
|
+
'-3',
|
192
|
+
'x = +2'])
|
193
|
+
expect(cop.messages).to eq([])
|
194
|
+
end
|
195
|
+
|
196
|
+
it 'accepts argument default values without space' do
|
197
|
+
# These are handled by SpaceAroundEqualsInParameterDefault,
|
198
|
+
# so SpaceAroundOperators leaves them alone.
|
199
|
+
inspect_source(cop,
|
200
|
+
['def init(name=nil)',
|
201
|
+
'end'])
|
202
|
+
expect(cop.messages).to be_empty
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'accepts the construct class <<self with no space after <<' do
|
206
|
+
inspect_source(cop, ['class <<self',
|
207
|
+
'end'])
|
208
|
+
expect(cop.messages).to be_empty
|
215
209
|
end
|
216
210
|
end
|