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,50 +2,44 @@
|
|
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
|
-
it 'auto-corrects has_value? with value?' do
|
45
|
-
new_source = autocorrect_source(cop, 'hash.has_value?(value)')
|
46
|
-
expect(new_source).to eq('hash.value?(value)')
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
5
|
+
describe Rubocop::Cop::Style::HashMethods do
|
6
|
+
subject(:cop) { described_class.new }
|
7
|
+
|
8
|
+
it 'registers an offence for has_key? with one arg' do
|
9
|
+
inspect_source(cop,
|
10
|
+
['o.has_key?(o)'])
|
11
|
+
expect(cop.offences.size).to eq(1)
|
12
|
+
expect(cop.messages)
|
13
|
+
.to eq(['has_key? is deprecated in favor of key?.'])
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'accepts has_key? with no args' do
|
17
|
+
inspect_source(cop,
|
18
|
+
['o.has_key?'])
|
19
|
+
expect(cop.offences).to be_empty
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'registers an offence for has_value? with one arg' do
|
23
|
+
inspect_source(cop,
|
24
|
+
['o.has_value?(o)'])
|
25
|
+
expect(cop.offences.size).to eq(1)
|
26
|
+
expect(cop.messages)
|
27
|
+
.to eq(['has_value? is deprecated in favor of value?.'])
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'accepts has_value? with no args' do
|
31
|
+
inspect_source(cop,
|
32
|
+
['o.has_value?'])
|
33
|
+
expect(cop.offences).to be_empty
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'auto-corrects has_key? with key?' do
|
37
|
+
new_source = autocorrect_source(cop, 'hash.has_key?(:test)')
|
38
|
+
expect(new_source).to eq('hash.key?(:test)')
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'auto-corrects has_value? with value?' do
|
42
|
+
new_source = autocorrect_source(cop, 'hash.has_value?(value)')
|
43
|
+
expect(new_source).to eq('hash.value?(value)')
|
50
44
|
end
|
51
45
|
end
|
@@ -2,71 +2,99 @@
|
|
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
|
-
|
5
|
+
describe Rubocop::Cop::Style::HashSyntax, :config do
|
6
|
+
subject(:cop) { described_class.new(config) }
|
7
|
+
|
8
|
+
context 'configured to enforce ruby19 style' do
|
9
|
+
let(:cop_config) { { 'EnforcedStyle' => 'ruby19' } }
|
10
|
+
|
11
|
+
it 'registers offence for hash rocket syntax when new is possible' do
|
12
|
+
inspect_source(cop, ['x = { :a => 0 }'])
|
13
|
+
expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'registers an offence for mixed syntax when new is possible' do
|
17
|
+
inspect_source(cop, ['x = { :a => 0, b: 1 }'])
|
18
|
+
expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'registers an offence for hash rockets in method calls' do
|
22
|
+
inspect_source(cop, ['func(3, :a => 0)'])
|
23
|
+
expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'accepts hash rockets when keys have different types' do
|
27
|
+
inspect_source(cop, ['x = { :a => 0, "b" => 1 }'])
|
28
|
+
expect(cop.messages).to be_empty
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'accepts hash rockets when keys have whitespaces in them' do
|
32
|
+
inspect_source(cop, ['x = { :"t o" => 0 }'])
|
33
|
+
expect(cop.messages).to be_empty
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'accepts hash rockets when keys have special symbols in them' do
|
37
|
+
inspect_source(cop, ['x = { :"\tab" => 1 }'])
|
38
|
+
expect(cop.messages).to be_empty
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'accepts hash rockets when keys start with a digit' do
|
42
|
+
inspect_source(cop, ['x = { :"1" => 1 }'])
|
43
|
+
expect(cop.messages).to be_empty
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'registers offence when keys start with an uppercase letter' do
|
47
|
+
inspect_source(cop, ['x = { :A => 0 }'])
|
48
|
+
expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'accepts new syntax in a hash literal' do
|
52
|
+
inspect_source(cop, ['x = { a: 0, b: 1 }'])
|
53
|
+
expect(cop.messages).to be_empty
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'accepts new syntax in method calls' do
|
57
|
+
inspect_source(cop, ['func(3, a: 0)'])
|
58
|
+
expect(cop.messages).to be_empty
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'auto-corrects old to new style' do
|
62
|
+
new_source = autocorrect_source(cop, '{ :a => 1, :b => 2}')
|
63
|
+
expect(new_source).to eq('{ a: 1, b: 2}')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'configured to enforce ruby19 style' do
|
68
|
+
let(:cop_config) { { 'EnforcedStyle' => 'hash_rockets' } }
|
69
|
+
|
70
|
+
it 'registers offence for Ruby 1.9 style' do
|
71
|
+
inspect_source(cop, ['x = { a: 0 }'])
|
72
|
+
expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'registers an offence for mixed syntax' do
|
76
|
+
inspect_source(cop, ['x = { :a => 0, b: 1 }'])
|
77
|
+
expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'registers an offence for 1.9 style in method calls' do
|
81
|
+
inspect_source(cop, ['func(3, a: 0)'])
|
82
|
+
expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'accepts hash rockets in a hash literal' do
|
86
|
+
inspect_source(cop, ['x = { :a => 0, :b => 1 }'])
|
87
|
+
expect(cop.messages).to be_empty
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'accepts hash rockets in method calls' do
|
91
|
+
inspect_source(cop, ['func(3, :a => 0)'])
|
92
|
+
expect(cop.messages).to be_empty
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'auto-corrects new style to hash rockets' do
|
96
|
+
new_source = autocorrect_source(cop, '{ a: 1, b: 2}')
|
97
|
+
expect(new_source).to eq('{ :a => 1, :b => 2}')
|
70
98
|
end
|
71
99
|
end
|
72
100
|
end
|
@@ -2,24 +2,18 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe IfWithSemicolon do
|
9
|
-
subject(:iws) { IfWithSemicolon.new }
|
5
|
+
describe Rubocop::Cop::Style::IfWithSemicolon do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
it 'registers an offence for one line if/;/end' do
|
9
|
+
inspect_source(cop, ['if cond; run else dont end'])
|
10
|
+
expect(cop.messages).to eq(
|
11
|
+
['Never use if x; Use the ternary operator instead.'])
|
12
|
+
end
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
14
|
+
it 'can handle modifier conditionals' do
|
15
|
+
inspect_source(cop, ['class Hash',
|
16
|
+
'end if RUBY_VERSION < "1.8.7"'])
|
17
|
+
expect(cop.messages).to be_empty
|
24
18
|
end
|
25
19
|
end
|
@@ -2,389 +2,383 @@
|
|
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
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
['a = func do',
|
383
|
-
'end'])
|
384
|
-
expect(cop.offences).to be_empty
|
385
|
-
end
|
386
|
-
end
|
387
|
-
end
|
5
|
+
describe Rubocop::Cop::Style::IndentationWidth do
|
6
|
+
subject(:cop) { described_class.new }
|
7
|
+
|
8
|
+
context 'with if statement' do
|
9
|
+
it 'registers an offence for bad indentation of an if body' do
|
10
|
+
inspect_source(cop,
|
11
|
+
['if cond',
|
12
|
+
' func',
|
13
|
+
'end'])
|
14
|
+
expect(cop.messages)
|
15
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'registers an offence for bad indentation of an else body' do
|
19
|
+
inspect_source(cop,
|
20
|
+
['if cond',
|
21
|
+
' func1',
|
22
|
+
'else',
|
23
|
+
' func2',
|
24
|
+
'end'])
|
25
|
+
expect(cop.messages)
|
26
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'registers an offence for bad indentation of an elsif body' do
|
30
|
+
inspect_source(cop,
|
31
|
+
['if a1',
|
32
|
+
' b1',
|
33
|
+
'elsif a2',
|
34
|
+
' b2',
|
35
|
+
'else',
|
36
|
+
' c',
|
37
|
+
'end'])
|
38
|
+
expect(cop.messages)
|
39
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'registers offence for bad indentation of ternary inside else' do
|
43
|
+
inspect_source(cop,
|
44
|
+
['if a',
|
45
|
+
' b',
|
46
|
+
'else',
|
47
|
+
' x ? y : z',
|
48
|
+
'end'])
|
49
|
+
expect(cop.messages)
|
50
|
+
.to eq(['Use 2 (not 5) spaces for indentation.'])
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'registers offence for bad indentation of modifier if in else' do
|
54
|
+
inspect_source(cop,
|
55
|
+
['if a',
|
56
|
+
' b',
|
57
|
+
'else',
|
58
|
+
' x if y',
|
59
|
+
'end'])
|
60
|
+
expect(cop.messages)
|
61
|
+
.to eq(['Use 2 (not 3) spaces for indentation.'])
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'accepts a one line if statement' do
|
65
|
+
inspect_source(cop,
|
66
|
+
['if cond then func1 else func2 end'])
|
67
|
+
expect(cop.offences).to be_empty
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'accepts a correctly aligned if/elsif/else/end' do
|
71
|
+
inspect_source(cop,
|
72
|
+
['if a1',
|
73
|
+
' b1',
|
74
|
+
'elsif a2',
|
75
|
+
' b2',
|
76
|
+
'else',
|
77
|
+
' c',
|
78
|
+
'end'])
|
79
|
+
expect(cop.offences).to be_empty
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'accepts if/elsif/else/end laid out as a table' do
|
83
|
+
inspect_source(cop,
|
84
|
+
['if @io == $stdout then str << "$stdout"',
|
85
|
+
'elsif @io == $stdin then str << "$stdin"',
|
86
|
+
'elsif @io == $stderr then str << "$stderr"',
|
87
|
+
'else str << @io.class.to_s',
|
88
|
+
'end'])
|
89
|
+
expect(cop.offences).to be_empty
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'accepts if/then/else/end laid out as another table' do
|
93
|
+
inspect_source(cop,
|
94
|
+
["if File.exist?('config.save')",
|
95
|
+
'then ConfigTable.load',
|
96
|
+
'else ConfigTable.new',
|
97
|
+
'end'])
|
98
|
+
expect(cop.offences).to be_empty
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'accepts an empty if' do
|
102
|
+
inspect_source(cop,
|
103
|
+
['if a',
|
104
|
+
'else',
|
105
|
+
'end'])
|
106
|
+
expect(cop.offences).to be_empty
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'accepts an if/else branches with rescue clauses' do
|
110
|
+
# Because of how the rescue clauses come out of Parser, these are
|
111
|
+
# special and need to be tested.
|
112
|
+
inspect_source(cop,
|
113
|
+
['if a',
|
114
|
+
' a rescue nil',
|
115
|
+
'else',
|
116
|
+
' a rescue nil',
|
117
|
+
'end'])
|
118
|
+
expect(cop.offences).to be_empty
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'with unless' do
|
123
|
+
it 'registers an offence for bad indentation of an unless body' do
|
124
|
+
inspect_source(cop,
|
125
|
+
['unless cond',
|
126
|
+
' func',
|
127
|
+
'end'])
|
128
|
+
expect(cop.messages)
|
129
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'accepts an empty unless' do
|
133
|
+
inspect_source(cop,
|
134
|
+
['unless a',
|
135
|
+
'else',
|
136
|
+
'end'])
|
137
|
+
expect(cop.offences).to be_empty
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
context 'with case' do
|
142
|
+
it 'registers an offence for bad indentation in a case/when body' do
|
143
|
+
inspect_source(cop,
|
144
|
+
['case a',
|
145
|
+
'when b',
|
146
|
+
' c',
|
147
|
+
'end'])
|
148
|
+
expect(cop.messages)
|
149
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'registers an offence for bad indentation in a case/else body' do
|
153
|
+
inspect_source(cop,
|
154
|
+
['case a',
|
155
|
+
'when b',
|
156
|
+
' c',
|
157
|
+
'when d',
|
158
|
+
' e',
|
159
|
+
'else',
|
160
|
+
' f',
|
161
|
+
'end'])
|
162
|
+
expect(cop.messages)
|
163
|
+
.to eq(['Use 2 (not 3) spaces for indentation.'])
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'accepts correctly indented case/when/else' do
|
167
|
+
inspect_source(cop,
|
168
|
+
['case a',
|
169
|
+
'when b',
|
170
|
+
' c',
|
171
|
+
'when d',
|
172
|
+
'else',
|
173
|
+
' f',
|
174
|
+
'end'])
|
175
|
+
expect(cop.offences).to be_empty
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'accepts case/when/else laid out as a table' do
|
179
|
+
inspect_source(cop,
|
180
|
+
['case sexp.loc.keyword.source',
|
181
|
+
"when 'if' then cond, body, _else = *sexp",
|
182
|
+
"when 'unless' then cond, _else, body = *sexp",
|
183
|
+
'else cond, body = *sexp',
|
184
|
+
'end'])
|
185
|
+
expect(cop.offences).to be_empty
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'accepts case/when/else with then beginning a line' do
|
189
|
+
inspect_source(cop,
|
190
|
+
['case sexp.loc.keyword.source',
|
191
|
+
"when 'if'",
|
192
|
+
'then cond, body, _else = *sexp',
|
193
|
+
'end'])
|
194
|
+
expect(cop.offences).to be_empty
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'accepts indented when/else plus indented body' do
|
198
|
+
# "Indent when as deep as case" is the job of another cop.
|
199
|
+
inspect_source(cop,
|
200
|
+
['case code_type',
|
201
|
+
" when 'ruby', 'sql', 'plain'",
|
202
|
+
' code_type',
|
203
|
+
" when 'erb'",
|
204
|
+
" 'ruby; html-script: true'",
|
205
|
+
' when "html"',
|
206
|
+
" 'xml'",
|
207
|
+
' else',
|
208
|
+
" 'plain'",
|
209
|
+
'end'])
|
210
|
+
expect(cop.offences).to be_empty
|
211
|
+
end
|
212
|
+
|
213
|
+
it 'accepts an empty case' do
|
214
|
+
inspect_source(cop,
|
215
|
+
['case a',
|
216
|
+
'end'])
|
217
|
+
expect(cop.offences).to be_empty
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
context 'with while/until' do
|
222
|
+
it 'registers an offence for bad indentation of a while body' do
|
223
|
+
inspect_source(cop,
|
224
|
+
['while cond',
|
225
|
+
' func',
|
226
|
+
'end'])
|
227
|
+
expect(cop.messages)
|
228
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
229
|
+
end
|
230
|
+
|
231
|
+
it 'registers an offence for bad indentation of begin/end/while' do
|
232
|
+
inspect_source(cop,
|
233
|
+
['begin',
|
234
|
+
' func1',
|
235
|
+
' func2',
|
236
|
+
'end while cond'])
|
237
|
+
expect(cop.messages)
|
238
|
+
.to eq(['Use 2 (not 1) spaces for indentation.',
|
239
|
+
'Use 2 (not 3) spaces for indentation.'])
|
240
|
+
end
|
241
|
+
|
242
|
+
it 'registers an offence for bad indentation of an until body' do
|
243
|
+
inspect_source(cop,
|
244
|
+
['until cond',
|
245
|
+
' func',
|
246
|
+
'end'])
|
247
|
+
expect(cop.messages)
|
248
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
249
|
+
end
|
250
|
+
|
251
|
+
it 'accepts an empty while' do
|
252
|
+
inspect_source(cop,
|
253
|
+
['while a',
|
254
|
+
'end'])
|
255
|
+
expect(cop.offences).to be_empty
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
context 'with for' do
|
260
|
+
it 'registers an offence for bad indentation of a for body' do
|
261
|
+
inspect_source(cop,
|
262
|
+
['for var in 1..10',
|
263
|
+
' func',
|
264
|
+
'end'])
|
265
|
+
expect(cop.messages)
|
266
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
267
|
+
end
|
268
|
+
|
269
|
+
it 'accepts an empty for' do
|
270
|
+
inspect_source(cop,
|
271
|
+
['for var in 1..10',
|
272
|
+
'end'])
|
273
|
+
expect(cop.offences).to be_empty
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
context 'with def/defs' do
|
278
|
+
it 'registers an offence for bad indentation of a def body' do
|
279
|
+
inspect_source(cop,
|
280
|
+
['def test',
|
281
|
+
' func1',
|
282
|
+
' func2', # No offence registered for this.
|
283
|
+
'end'])
|
284
|
+
expect(cop.messages)
|
285
|
+
.to eq(['Use 2 (not 4) spaces for indentation.'])
|
286
|
+
end
|
287
|
+
|
288
|
+
it 'registers an offence for bad indentation of a defs body' do
|
289
|
+
inspect_source(cop,
|
290
|
+
['def self.test',
|
291
|
+
' func',
|
292
|
+
'end'])
|
293
|
+
expect(cop.messages)
|
294
|
+
.to eq(['Use 2 (not 3) spaces for indentation.'])
|
295
|
+
end
|
296
|
+
|
297
|
+
it 'accepts an empty def body' do
|
298
|
+
inspect_source(cop,
|
299
|
+
['def test',
|
300
|
+
'end'])
|
301
|
+
expect(cop.offences).to be_empty
|
302
|
+
end
|
303
|
+
|
304
|
+
it 'accepts an empty defs body' do
|
305
|
+
inspect_source(cop,
|
306
|
+
['def self.test',
|
307
|
+
'end'])
|
308
|
+
expect(cop.offences).to be_empty
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
context 'with class' do
|
313
|
+
it 'registers an offence for bad indentation of a class body' do
|
314
|
+
inspect_source(cop,
|
315
|
+
['class Test',
|
316
|
+
' def func',
|
317
|
+
' end',
|
318
|
+
'end'])
|
319
|
+
expect(cop.messages)
|
320
|
+
.to eq(['Use 2 (not 4) spaces for indentation.'])
|
321
|
+
end
|
322
|
+
|
323
|
+
it 'accepts an empty class body' do
|
324
|
+
inspect_source(cop,
|
325
|
+
['class Test',
|
326
|
+
'end'])
|
327
|
+
expect(cop.offences).to be_empty
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
context 'with module' do
|
332
|
+
it 'registers an offence for bad indentation of a module body' do
|
333
|
+
inspect_source(cop,
|
334
|
+
['module Test',
|
335
|
+
' def func',
|
336
|
+
' end',
|
337
|
+
'end'])
|
338
|
+
expect(cop.messages)
|
339
|
+
.to eq(['Use 2 (not 4) spaces for indentation.'])
|
340
|
+
end
|
341
|
+
|
342
|
+
it 'accepts an empty module body' do
|
343
|
+
inspect_source(cop,
|
344
|
+
['module Test',
|
345
|
+
'end'])
|
346
|
+
expect(cop.offences).to be_empty
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
350
|
+
context 'with block' do
|
351
|
+
it 'registers an offence for bad indentation of a do/end body' do
|
352
|
+
inspect_source(cop,
|
353
|
+
['a = func do',
|
354
|
+
' b',
|
355
|
+
'end'])
|
356
|
+
expect(cop.messages)
|
357
|
+
.to eq(['Use 2 (not 1) spaces for indentation.'])
|
358
|
+
end
|
359
|
+
|
360
|
+
it 'registers an offence for bad indentation of a {} body' do
|
361
|
+
inspect_source(cop,
|
362
|
+
['func {',
|
363
|
+
' b',
|
364
|
+
'}'])
|
365
|
+
expect(cop.messages)
|
366
|
+
.to eq(['Use 2 (not 3) spaces for indentation.'])
|
367
|
+
end
|
368
|
+
|
369
|
+
it 'accepts a correctly indented block body' do
|
370
|
+
inspect_source(cop,
|
371
|
+
['a = func do',
|
372
|
+
' b',
|
373
|
+
'end'])
|
374
|
+
expect(cop.offences).to be_empty
|
375
|
+
end
|
376
|
+
|
377
|
+
it 'accepts an empty block body' do
|
378
|
+
inspect_source(cop,
|
379
|
+
['a = func do',
|
380
|
+
'end'])
|
381
|
+
expect(cop.offences).to be_empty
|
388
382
|
end
|
389
383
|
end
|
390
384
|
end
|