ridecharge-rubocop 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.rspec +1 -0
- data/.travis.yml +14 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +35 -0
- data/Rakefile +22 -0
- data/bin/ridecharge-rubocop +49 -0
- data/config/0default.yml +8 -0
- data/config/fleet-magic-todo.yml +380 -0
- data/config/rc-todo.yml +190 -0
- data/config/ridecharge-rubocop_todo.yml +73 -0
- data/config/rubocop/default.yml +308 -0
- data/config/rubocop/disabled.yml +9 -0
- data/config/rubocop/enabled.yml +648 -0
- data/config/standard-todo.yml +24 -0
- data/config/tabs.yml +15 -0
- data/config/vehicle-todo.yml +195 -0
- data/lib/ridecharge/rubocop.rb +2 -0
- data/lib/ridecharge/rubocop/version.rb +5 -0
- data/lib/rubocop/config_loader_monkeypatch.rb +117 -0
- data/lib/rubocop/ridecharge.rb +1 -0
- data/ridecharge-rubocop.gemspec +25 -0
- data/spec/isolated_environment_spec.rb +24 -0
- data/spec/project_spec.rb +118 -0
- data/spec/rubocop/cli_spec.rb +1385 -0
- data/spec/rubocop/config_loader_spec.rb +328 -0
- data/spec/rubocop/config_spec.rb +179 -0
- data/spec/rubocop/config_store_spec.rb +53 -0
- data/spec/rubocop/cop/commissioner_spec.rb +83 -0
- data/spec/rubocop/cop/cop_spec.rb +114 -0
- data/spec/rubocop/cop/corrector_spec.rb +59 -0
- data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +113 -0
- data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +35 -0
- data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +107 -0
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +411 -0
- data/spec/rubocop/cop/lint/condition_position_spec.rb +49 -0
- data/spec/rubocop/cop/lint/debugger_spec.rb +39 -0
- data/spec/rubocop/cop/lint/else_layout_spec.rb +65 -0
- data/spec/rubocop/cop/lint/empty_ensure_spec.rb +27 -0
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +136 -0
- data/spec/rubocop/cop/lint/end_in_method_spec.rb +29 -0
- data/spec/rubocop/cop/lint/ensure_return_spec.rb +39 -0
- data/spec/rubocop/cop/lint/eval_spec.rb +35 -0
- data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +30 -0
- data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +33 -0
- data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +63 -0
- data/spec/rubocop/cop/lint/loop_spec.rb +27 -0
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +57 -0
- data/spec/rubocop/cop/lint/require_parentheses_spec.rb +82 -0
- data/spec/rubocop/cop/lint/rescue_exception_spec.rb +131 -0
- data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +237 -0
- data/spec/rubocop/cop/lint/syntax_spec.rb +34 -0
- data/spec/rubocop/cop/lint/unreachable_code_spec.rb +63 -0
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1570 -0
- data/spec/rubocop/cop/lint/useless_comparison_spec.rb +30 -0
- data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +48 -0
- data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +149 -0
- data/spec/rubocop/cop/lint/void_spec.rb +57 -0
- data/spec/rubocop/cop/offence_spec.rb +133 -0
- data/spec/rubocop/cop/rails/default_scope_spec.rb +37 -0
- data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +13 -0
- data/spec/rubocop/cop/rails/output_spec.rb +41 -0
- data/spec/rubocop/cop/rails/read_attribute_spec.rb +13 -0
- data/spec/rubocop/cop/rails/validation_spec.rb +21 -0
- data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +361 -0
- data/spec/rubocop/cop/style/accessor_method_name_spec.rb +81 -0
- data/spec/rubocop/cop/style/alias_spec.rb +59 -0
- data/spec/rubocop/cop/style/align_array_spec.rb +75 -0
- data/spec/rubocop/cop/style/align_hash_spec.rb +310 -0
- data/spec/rubocop/cop/style/align_parameters_spec.rb +222 -0
- data/spec/rubocop/cop/style/and_or_spec.rb +57 -0
- data/spec/rubocop/cop/style/ascii_comments_spec.rb +22 -0
- data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +36 -0
- data/spec/rubocop/cop/style/attr_spec.rb +19 -0
- data/spec/rubocop/cop/style/begin_block_spec.rb +13 -0
- data/spec/rubocop/cop/style/block_comments_spec.rb +21 -0
- data/spec/rubocop/cop/style/block_nesting_spec.rb +156 -0
- data/spec/rubocop/cop/style/blocks_spec.rb +99 -0
- data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +284 -0
- data/spec/rubocop/cop/style/case_equality_spec.rb +12 -0
- data/spec/rubocop/cop/style/case_indentation_spec.rb +289 -0
- data/spec/rubocop/cop/style/character_literal_spec.rb +37 -0
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +40 -0
- data/spec/rubocop/cop/style/class_length_spec.rb +131 -0
- data/spec/rubocop/cop/style/class_methods_spec.rb +45 -0
- data/spec/rubocop/cop/style/class_vars_spec.rb +19 -0
- data/spec/rubocop/cop/style/collection_methods_spec.rb +48 -0
- data/spec/rubocop/cop/style/colon_method_call_spec.rb +60 -0
- data/spec/rubocop/cop/style/comment_annotation_spec.rb +86 -0
- data/spec/rubocop/cop/style/constant_name_spec.rb +65 -0
- data/spec/rubocop/cop/style/cyclomatic_complexity_spec.rb +204 -0
- data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +39 -0
- data/spec/rubocop/cop/style/documentation_spec.rb +123 -0
- data/spec/rubocop/cop/style/dot_position_spec.rb +94 -0
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +127 -0
- data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +56 -0
- data/spec/rubocop/cop/style/empty_lines_around_body_spec.rb +131 -0
- data/spec/rubocop/cop/style/empty_lines_spec.rb +40 -0
- data/spec/rubocop/cop/style/empty_literal_spec.rb +100 -0
- data/spec/rubocop/cop/style/encoding_spec.rb +56 -0
- data/spec/rubocop/cop/style/end_block_spec.rb +13 -0
- data/spec/rubocop/cop/style/end_of_line_spec.rb +47 -0
- data/spec/rubocop/cop/style/even_odd_spec.rb +75 -0
- data/spec/rubocop/cop/style/favor_join_spec.rb +31 -0
- data/spec/rubocop/cop/style/favor_sprintf_spec.rb +47 -0
- data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +76 -0
- data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +41 -0
- data/spec/rubocop/cop/style/final_newline_spec.rb +30 -0
- data/spec/rubocop/cop/style/flip_flop_spec.rb +23 -0
- data/spec/rubocop/cop/style/for_spec.rb +105 -0
- data/spec/rubocop/cop/style/global_vars_spec.rb +34 -0
- data/spec/rubocop/cop/style/hash_methods_spec.rb +45 -0
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +131 -0
- data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +128 -0
- data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +19 -0
- data/spec/rubocop/cop/style/indentation_consistency_spec.rb +490 -0
- data/spec/rubocop/cop/style/indentation_width_spec.rb +470 -0
- data/spec/rubocop/cop/style/lambda_call_spec.rb +65 -0
- data/spec/rubocop/cop/style/lambda_spec.rb +41 -0
- data/spec/rubocop/cop/style/leading_comment_space_spec.rb +64 -0
- data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +34 -0
- data/spec/rubocop/cop/style/line_length_spec.rb +20 -0
- data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +59 -0
- data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +60 -0
- data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +106 -0
- data/spec/rubocop/cop/style/method_length_spec.rb +147 -0
- data/spec/rubocop/cop/style/method_name_spec.rb +125 -0
- data/spec/rubocop/cop/style/module_function_spec.rb +24 -0
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +78 -0
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +107 -0
- data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +18 -0
- data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +21 -0
- data/spec/rubocop/cop/style/nil_comparison_spec.rb +30 -0
- data/spec/rubocop/cop/style/not_spec.rb +22 -0
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +64 -0
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +13 -0
- data/spec/rubocop/cop/style/op_method_spec.rb +74 -0
- data/spec/rubocop/cop/style/parameter_lists_spec.rb +44 -0
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +122 -0
- data/spec/rubocop/cop/style/perl_backrefs_spec.rb +17 -0
- data/spec/rubocop/cop/style/predicate_name_spec.rb +25 -0
- data/spec/rubocop/cop/style/proc_spec.rb +27 -0
- data/spec/rubocop/cop/style/raise_args_spec.rb +82 -0
- data/spec/rubocop/cop/style/redundant_begin_spec.rb +57 -0
- data/spec/rubocop/cop/style/redundant_exception_spec.rb +27 -0
- data/spec/rubocop/cop/style/redundant_return_spec.rb +171 -0
- data/spec/rubocop/cop/style/redundant_self_spec.rb +142 -0
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +83 -0
- data/spec/rubocop/cop/style/rescue_modifier_spec.rb +116 -0
- data/spec/rubocop/cop/style/semicolon_spec.rb +100 -0
- data/spec/rubocop/cop/style/signal_exception_spec.rb +266 -0
- data/spec/rubocop/cop/style/single_line_block_params_spec.rb +68 -0
- data/spec/rubocop/cop/style/single_line_methods_spec.rb +52 -0
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +38 -0
- data/spec/rubocop/cop/style/space_after_comma_spec.rb +30 -0
- data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +84 -0
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +70 -0
- data/spec/rubocop/cop/style/space_after_not_spec.rb +22 -0
- data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +23 -0
- data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +283 -0
- data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +33 -0
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +325 -0
- data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +70 -0
- data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +52 -0
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +138 -0
- data/spec/rubocop/cop/style/space_inside_parens_spec.rb +34 -0
- data/spec/rubocop/cop/style/special_global_vars_spec.rb +56 -0
- data/spec/rubocop/cop/style/string_literals_spec.rb +212 -0
- data/spec/rubocop/cop/style/symbol_array_spec.rb +37 -0
- data/spec/rubocop/cop/style/tab_spec.rb +17 -0
- data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +43 -0
- data/spec/rubocop/cop/style/trailing_comma_spec.rb +230 -0
- data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +30 -0
- data/spec/rubocop/cop/style/trivial_accessors_spec.rb +415 -0
- data/spec/rubocop/cop/style/unless_else_spec.rb +25 -0
- data/spec/rubocop/cop/style/variable_interpolation_spec.rb +47 -0
- data/spec/rubocop/cop/style/variable_name_spec.rb +107 -0
- data/spec/rubocop/cop/style/when_then_spec.rb +41 -0
- data/spec/rubocop/cop/style/while_until_do_spec.rb +53 -0
- data/spec/rubocop/cop/style/while_until_modifier_spec.rb +75 -0
- data/spec/rubocop/cop/style/word_array_spec.rb +97 -0
- data/spec/rubocop/cop/team_spec.rb +156 -0
- data/spec/rubocop/cop/util_spec.rb +49 -0
- data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +213 -0
- data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +734 -0
- data/spec/rubocop/cop/variable_inspector/scope_spec.rb +184 -0
- data/spec/rubocop/cop/variable_inspector/variable_spec.rb +73 -0
- data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +269 -0
- data/spec/rubocop/cop/variable_inspector_spec.rb +29 -0
- data/spec/rubocop/file_inspector_spec.rb +78 -0
- data/spec/rubocop/formatter/base_formatter_spec.rb +191 -0
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +114 -0
- data/spec/rubocop/formatter/colorizable_spec.rb +107 -0
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +50 -0
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +62 -0
- data/spec/rubocop/formatter/file_list_formatter_spec.rb +33 -0
- data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
- data/spec/rubocop/formatter/json_formatter_spec.rb +148 -0
- data/spec/rubocop/formatter/offence_count_formatter_spec.rb +52 -0
- data/spec/rubocop/formatter/progress_formatter_spec.rb +182 -0
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +123 -0
- data/spec/rubocop/options_spec.rb +145 -0
- data/spec/rubocop/path_util_spec.rb +42 -0
- data/spec/rubocop/processed_source_spec.rb +114 -0
- data/spec/rubocop/source_parser_spec.rb +139 -0
- data/spec/rubocop/target_finder_spec.rb +180 -0
- data/spec/rubocop/token_spec.rb +25 -0
- data/spec/spec_helper.rb +136 -0
- data/spec/support/ast_helper.rb +15 -0
- data/spec/support/file_helper.rb +21 -0
- data/spec/support/isolated_environment.rb +34 -0
- data/spec/support/mri_syntax_checker.rb +73 -0
- data/spec/support/shared_context.rb +22 -0
- data/spec/support/shared_examples.rb +33 -0
- data/spec/support/statement_modifier_helper.rb +41 -0
- metadata +511 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Rails::HasAndBelongsToMany do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for has_and_belongs_to_many' do
|
|
9
|
+
inspect_source(cop,
|
|
10
|
+
['has_and_belongs_to_many :groups'])
|
|
11
|
+
expect(cop.offences.size).to eq(1)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Rails::Output, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
let(:cop_config) { { 'Ignore' => ['^.*\.rake$'] } }
|
|
8
|
+
|
|
9
|
+
it 'should record an offence for puts statements' do
|
|
10
|
+
source = ['p "edmond dantes"',
|
|
11
|
+
'puts "sinbad"',
|
|
12
|
+
'print "abbe busoni"',
|
|
13
|
+
'pp "monte cristo"']
|
|
14
|
+
inspect_source(cop, source)
|
|
15
|
+
expect(cop.offences.size).to eq(4)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'should not record an offence for methods' do
|
|
19
|
+
source = ['obj.print',
|
|
20
|
+
'something.p',
|
|
21
|
+
'nothing.pp']
|
|
22
|
+
inspect_source(cop, source)
|
|
23
|
+
expect(cop.offences).to be_empty
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'should not record an offence for comments' do
|
|
27
|
+
source = ['# print "test"',
|
|
28
|
+
'# p']
|
|
29
|
+
inspect_source(cop, source)
|
|
30
|
+
expect(cop.offences).to be_empty
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it 'should ignore certain files' do
|
|
34
|
+
source = ['print 1']
|
|
35
|
+
processed_source = parse_source(source)
|
|
36
|
+
allow(processed_source.buffer)
|
|
37
|
+
.to receive(:name).and_return('/var/lib/test.rake')
|
|
38
|
+
_investigate(cop, processed_source)
|
|
39
|
+
expect(cop.offences).to be_empty
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Rails::ReadAttribute do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for read_attribute' do
|
|
9
|
+
inspect_source(cop,
|
|
10
|
+
['res = read_attribute(:test)'])
|
|
11
|
+
expect(cop.offences.size).to eq(1)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Rails::Validation do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
described_class::BLACKLIST.each do |validation|
|
|
9
|
+
it "registers an offence for #{validation}" do
|
|
10
|
+
inspect_source(cop,
|
|
11
|
+
["#{validation} :name"])
|
|
12
|
+
expect(cop.offences.size).to eq(1)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'accepts sexy validations' do
|
|
17
|
+
inspect_source(cop,
|
|
18
|
+
['validates :name'])
|
|
19
|
+
expect(cop.offences).to be_empty
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::AccessModifierIndentation, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
|
|
8
|
+
context 'when EnforcedStyle is set to indent' do
|
|
9
|
+
let(:cop_config) { { 'EnforcedStyle' => 'indent' } }
|
|
10
|
+
|
|
11
|
+
it 'registers an offence for misaligned private' do
|
|
12
|
+
inspect_source(cop,
|
|
13
|
+
['class Test',
|
|
14
|
+
'',
|
|
15
|
+
'private',
|
|
16
|
+
'',
|
|
17
|
+
' def test; end',
|
|
18
|
+
'end'])
|
|
19
|
+
expect(cop.offences.size).to eq(1)
|
|
20
|
+
expect(cop.messages)
|
|
21
|
+
.to eq(['Indent access modifiers like private.'])
|
|
22
|
+
expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'outdent')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'registers an offence for misaligned private in module' do
|
|
26
|
+
inspect_source(cop,
|
|
27
|
+
['module Test',
|
|
28
|
+
'',
|
|
29
|
+
' private',
|
|
30
|
+
'',
|
|
31
|
+
' def test; end',
|
|
32
|
+
'end'])
|
|
33
|
+
expect(cop.offences.size).to eq(1)
|
|
34
|
+
expect(cop.messages).to eq(['Indent access modifiers like private.'])
|
|
35
|
+
# Not aligned according to `indent` or `outdent` style:
|
|
36
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'registers an offence for correct + opposite alignment' do
|
|
40
|
+
inspect_source(cop,
|
|
41
|
+
['module Test',
|
|
42
|
+
'',
|
|
43
|
+
' public',
|
|
44
|
+
'',
|
|
45
|
+
'private',
|
|
46
|
+
'',
|
|
47
|
+
' def test; end',
|
|
48
|
+
'end'])
|
|
49
|
+
expect(cop.offences.size).to eq(1)
|
|
50
|
+
expect(cop.messages).to eq(['Indent access modifiers like private.'])
|
|
51
|
+
# No EnforcedStyle can allow both aligments:
|
|
52
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'registers an offence for opposite + correct alignment' do
|
|
56
|
+
inspect_source(cop,
|
|
57
|
+
['module Test',
|
|
58
|
+
'',
|
|
59
|
+
'public',
|
|
60
|
+
'',
|
|
61
|
+
' private',
|
|
62
|
+
'',
|
|
63
|
+
' def test; end',
|
|
64
|
+
'end'])
|
|
65
|
+
expect(cop.offences.size).to eq(1)
|
|
66
|
+
expect(cop.messages).to eq(['Indent access modifiers like public.'])
|
|
67
|
+
# No EnforcedStyle can allow both aligments:
|
|
68
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it 'registers an offence for misaligned private in singleton class' do
|
|
72
|
+
inspect_source(cop,
|
|
73
|
+
['class << self',
|
|
74
|
+
'',
|
|
75
|
+
'private',
|
|
76
|
+
'',
|
|
77
|
+
' def test; end',
|
|
78
|
+
'end'])
|
|
79
|
+
expect(cop.offences.size).to eq(1)
|
|
80
|
+
expect(cop.messages)
|
|
81
|
+
.to eq(['Indent access modifiers like private.'])
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it 'registers an offence for misaligned private in class ' \
|
|
85
|
+
'defined with Class.new' do
|
|
86
|
+
inspect_source(cop,
|
|
87
|
+
['Test = Class.new do',
|
|
88
|
+
'',
|
|
89
|
+
'private',
|
|
90
|
+
'',
|
|
91
|
+
' def test; end',
|
|
92
|
+
'end'])
|
|
93
|
+
expect(cop.offences.size).to eq(1)
|
|
94
|
+
expect(cop.messages)
|
|
95
|
+
.to eq(['Indent access modifiers like private.'])
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it 'registers an offence for misaligned private in module ' \
|
|
99
|
+
'defined with Module.new' do
|
|
100
|
+
inspect_source(cop,
|
|
101
|
+
['Test = Module.new do',
|
|
102
|
+
'',
|
|
103
|
+
'private',
|
|
104
|
+
'',
|
|
105
|
+
' def test; end',
|
|
106
|
+
'end'])
|
|
107
|
+
expect(cop.offences.size).to eq(1)
|
|
108
|
+
expect(cop.messages)
|
|
109
|
+
.to eq(['Indent access modifiers like private.'])
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it 'registers an offence for misaligned protected' do
|
|
113
|
+
inspect_source(cop,
|
|
114
|
+
['class Test',
|
|
115
|
+
'',
|
|
116
|
+
'protected',
|
|
117
|
+
'',
|
|
118
|
+
' def test; end',
|
|
119
|
+
'end'])
|
|
120
|
+
expect(cop.offences.size).to eq(1)
|
|
121
|
+
expect(cop.messages)
|
|
122
|
+
.to eq(['Indent access modifiers like protected.'])
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it 'accepts properly indented private' do
|
|
126
|
+
inspect_source(cop,
|
|
127
|
+
['class Test',
|
|
128
|
+
'',
|
|
129
|
+
' private',
|
|
130
|
+
'',
|
|
131
|
+
' def test; end',
|
|
132
|
+
'end'])
|
|
133
|
+
expect(cop.offences).to be_empty
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it 'accepts properly indented protected' do
|
|
137
|
+
inspect_source(cop,
|
|
138
|
+
['class Test',
|
|
139
|
+
'',
|
|
140
|
+
' protected',
|
|
141
|
+
'',
|
|
142
|
+
' def test; end',
|
|
143
|
+
'end'])
|
|
144
|
+
expect(cop.offences).to be_empty
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it 'accepts an empty class' do
|
|
148
|
+
inspect_source(cop,
|
|
149
|
+
['class Test',
|
|
150
|
+
'end'])
|
|
151
|
+
expect(cop.offences).to be_empty
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it 'handles properly nested classes' do
|
|
155
|
+
inspect_source(cop,
|
|
156
|
+
['class Test',
|
|
157
|
+
'',
|
|
158
|
+
' class Nested',
|
|
159
|
+
'',
|
|
160
|
+
' private',
|
|
161
|
+
'',
|
|
162
|
+
' def a; end',
|
|
163
|
+
' end',
|
|
164
|
+
'',
|
|
165
|
+
' protected',
|
|
166
|
+
'',
|
|
167
|
+
' def test; end',
|
|
168
|
+
'end'])
|
|
169
|
+
expect(cop.offences.size).to eq(1)
|
|
170
|
+
expect(cop.messages)
|
|
171
|
+
.to eq(['Indent access modifiers like private.'])
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
it 'auto-corrects incorrectly indented access modifiers' do
|
|
175
|
+
corrected = autocorrect_source(cop, ['class Test',
|
|
176
|
+
'',
|
|
177
|
+
'public',
|
|
178
|
+
' private',
|
|
179
|
+
' protected',
|
|
180
|
+
'',
|
|
181
|
+
' def test; end',
|
|
182
|
+
'end'])
|
|
183
|
+
expect(corrected).to eq(['class Test',
|
|
184
|
+
'',
|
|
185
|
+
' public',
|
|
186
|
+
' private',
|
|
187
|
+
' protected',
|
|
188
|
+
'',
|
|
189
|
+
' def test; end',
|
|
190
|
+
'end'].join("\n"))
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
context 'when EnforcedStyle is set to outdent' do
|
|
195
|
+
let(:cop_config) { { 'EnforcedStyle' => 'outdent' } }
|
|
196
|
+
let(:indent_msg) { 'Outdent access modifiers like private.' }
|
|
197
|
+
|
|
198
|
+
it 'registers offence for private indented to method depth in a class' do
|
|
199
|
+
inspect_source(cop,
|
|
200
|
+
['class Test',
|
|
201
|
+
'',
|
|
202
|
+
' private',
|
|
203
|
+
'',
|
|
204
|
+
' def test; end',
|
|
205
|
+
'end'])
|
|
206
|
+
expect(cop.offences.size).to eq(1)
|
|
207
|
+
expect(cop.messages).to eq([indent_msg])
|
|
208
|
+
expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'indent')
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
it 'registers offence for private indented to method depth in a module' do
|
|
212
|
+
inspect_source(cop,
|
|
213
|
+
['module Test',
|
|
214
|
+
'',
|
|
215
|
+
' private',
|
|
216
|
+
'',
|
|
217
|
+
' def test; end',
|
|
218
|
+
'end'])
|
|
219
|
+
expect(cop.offences.size).to eq(1)
|
|
220
|
+
expect(cop.messages).to eq([indent_msg])
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
it 'registers offence for private indented to method depth in singleton' \
|
|
224
|
+
'class' do
|
|
225
|
+
inspect_source(cop,
|
|
226
|
+
['class << self',
|
|
227
|
+
'',
|
|
228
|
+
' private',
|
|
229
|
+
'',
|
|
230
|
+
' def test; end',
|
|
231
|
+
'end'])
|
|
232
|
+
expect(cop.offences.size).to eq(1)
|
|
233
|
+
expect(cop.messages).to eq([indent_msg])
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
it 'registers offence for private indented to method depth in class ' \
|
|
237
|
+
'defined with Class.new' do
|
|
238
|
+
inspect_source(cop,
|
|
239
|
+
['Test = Class.new do',
|
|
240
|
+
'',
|
|
241
|
+
' private',
|
|
242
|
+
'',
|
|
243
|
+
' def test; end',
|
|
244
|
+
'end'])
|
|
245
|
+
expect(cop.offences.size).to eq(1)
|
|
246
|
+
expect(cop.messages).to eq([indent_msg])
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
it 'registers offence for private indented to method depth in module ' \
|
|
250
|
+
'defined with Module.new' do
|
|
251
|
+
inspect_source(cop,
|
|
252
|
+
['Test = Module.new do',
|
|
253
|
+
'',
|
|
254
|
+
' private',
|
|
255
|
+
'',
|
|
256
|
+
' def test; end',
|
|
257
|
+
'end'])
|
|
258
|
+
expect(cop.offences.size).to eq(1)
|
|
259
|
+
expect(cop.messages).to eq([indent_msg])
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
it 'accepts private indented to the containing class indent level' do
|
|
263
|
+
inspect_source(cop,
|
|
264
|
+
['class Test',
|
|
265
|
+
'',
|
|
266
|
+
'private',
|
|
267
|
+
'',
|
|
268
|
+
' def test; end',
|
|
269
|
+
'end'])
|
|
270
|
+
expect(cop.offences).to be_empty
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
it 'accepts protected indented to the containing class indent level' do
|
|
274
|
+
inspect_source(cop,
|
|
275
|
+
['class Test',
|
|
276
|
+
'',
|
|
277
|
+
'protected',
|
|
278
|
+
'',
|
|
279
|
+
' def test; end',
|
|
280
|
+
'end'])
|
|
281
|
+
expect(cop.offences).to be_empty
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
it 'handles properly nested classes' do
|
|
285
|
+
inspect_source(cop,
|
|
286
|
+
['class Test',
|
|
287
|
+
'',
|
|
288
|
+
' class Nested',
|
|
289
|
+
'',
|
|
290
|
+
' private',
|
|
291
|
+
'',
|
|
292
|
+
' def a; end',
|
|
293
|
+
' end',
|
|
294
|
+
'',
|
|
295
|
+
'protected',
|
|
296
|
+
'',
|
|
297
|
+
' def test; end',
|
|
298
|
+
'end'])
|
|
299
|
+
expect(cop.offences.size).to eq(1)
|
|
300
|
+
expect(cop.messages).to eq([indent_msg])
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
it 'auto-corrects incorrectly indented access modifiers' do
|
|
304
|
+
corrected = autocorrect_source(cop, ['module M',
|
|
305
|
+
' class Test',
|
|
306
|
+
'',
|
|
307
|
+
'public',
|
|
308
|
+
' private',
|
|
309
|
+
' protected',
|
|
310
|
+
'',
|
|
311
|
+
' def test; end',
|
|
312
|
+
' end',
|
|
313
|
+
'end'])
|
|
314
|
+
expect(corrected).to eq(['module M',
|
|
315
|
+
' class Test',
|
|
316
|
+
'',
|
|
317
|
+
' public',
|
|
318
|
+
' private',
|
|
319
|
+
' protected',
|
|
320
|
+
'',
|
|
321
|
+
' def test; end',
|
|
322
|
+
' end',
|
|
323
|
+
'end'].join("\n"))
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
it 'auto-corrects private in complicated case' do
|
|
327
|
+
corrected = autocorrect_source(cop, ['class Hello',
|
|
328
|
+
' def foo',
|
|
329
|
+
" 'hi'",
|
|
330
|
+
' end',
|
|
331
|
+
'',
|
|
332
|
+
' def bar',
|
|
333
|
+
' Module.new do',
|
|
334
|
+
'',
|
|
335
|
+
' private',
|
|
336
|
+
'',
|
|
337
|
+
' def hi',
|
|
338
|
+
" 'bye'",
|
|
339
|
+
' end',
|
|
340
|
+
' end',
|
|
341
|
+
' end',
|
|
342
|
+
'end'])
|
|
343
|
+
expect(corrected).to eq(['class Hello',
|
|
344
|
+
' def foo',
|
|
345
|
+
" 'hi'",
|
|
346
|
+
' end',
|
|
347
|
+
'',
|
|
348
|
+
' def bar',
|
|
349
|
+
' Module.new do',
|
|
350
|
+
'',
|
|
351
|
+
' private',
|
|
352
|
+
'',
|
|
353
|
+
' def hi',
|
|
354
|
+
" 'bye'",
|
|
355
|
+
' end',
|
|
356
|
+
' end',
|
|
357
|
+
' end',
|
|
358
|
+
'end'].join("\n"))
|
|
359
|
+
end
|
|
360
|
+
end
|
|
361
|
+
end
|