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,27 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::Proc do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for a Proc.new call' do
|
|
9
|
+
inspect_source(cop, ['f = Proc.new { |x| puts x }'])
|
|
10
|
+
expect(cop.offences.size).to eq(1)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'accepts the proc method' do
|
|
14
|
+
inspect_source(cop, ['f = proc { |x| puts x }'])
|
|
15
|
+
expect(cop.offences).to be_empty
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'accepts the Proc.new call outside of block' do
|
|
19
|
+
inspect_source(cop, ['p = Proc.new'])
|
|
20
|
+
expect(cop.offences).to be_empty
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'auto-corrects Proc.new to proc' do
|
|
24
|
+
corrected = autocorrect_source(cop, ['Proc.new { test }'])
|
|
25
|
+
expect(corrected).to eq 'proc { test }'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::RaiseArgs, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
|
|
8
|
+
context 'when enforced style is compact' do
|
|
9
|
+
let(:cop_config) { { 'EnforcedStyle' => 'compact' } }
|
|
10
|
+
|
|
11
|
+
it 'reports an offence for a raise with 2 args' do
|
|
12
|
+
inspect_source(cop, ['raise RuntimeError, msg'])
|
|
13
|
+
expect(cop.offences.size).to eq(1)
|
|
14
|
+
expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'exploded')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'reports an offence for correct + opposite' do
|
|
18
|
+
inspect_source(cop, ['if a',
|
|
19
|
+
' raise RuntimeError, msg',
|
|
20
|
+
'else',
|
|
21
|
+
' raise Ex.new(msg)',
|
|
22
|
+
'end'])
|
|
23
|
+
expect(cop.offences.size).to eq(1)
|
|
24
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'reports an offence for a raise with 3 args' do
|
|
28
|
+
inspect_source(cop, ['raise RuntimeError, msg, caller'])
|
|
29
|
+
expect(cop.offences.size).to eq(1)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'accepts a raise with msg argument' do
|
|
33
|
+
inspect_source(cop, ['raise msg'])
|
|
34
|
+
expect(cop.offences).to be_empty
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'accepts a raise with an exception argument' do
|
|
38
|
+
inspect_source(cop, ['raise Ex.new(msg)'])
|
|
39
|
+
expect(cop.offences).to be_empty
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context 'when enforced style is exploded' do
|
|
44
|
+
let(:cop_config) { { 'EnforcedStyle' => 'exploded' } }
|
|
45
|
+
|
|
46
|
+
it 'reports an offence for a raise with exception object' do
|
|
47
|
+
inspect_source(cop, ['raise Ex.new(msg)'])
|
|
48
|
+
expect(cop.offences.size).to eq(1)
|
|
49
|
+
expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'compact')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it 'reports an offence for opposite + correct' do
|
|
53
|
+
inspect_source(cop, ['if a',
|
|
54
|
+
' raise RuntimeError, msg',
|
|
55
|
+
'else',
|
|
56
|
+
' raise Ex.new(msg)',
|
|
57
|
+
'end'])
|
|
58
|
+
expect(cop.offences.size).to eq(1)
|
|
59
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it 'accepts exception constructor with more than 1 argument' do
|
|
63
|
+
inspect_source(cop, ['raise RuntimeError.new(a1, a2, a3)'])
|
|
64
|
+
expect(cop.offences).to be_empty
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it 'accepts a raise with 3 args' do
|
|
68
|
+
inspect_source(cop, ['raise RuntimeError, msg, caller'])
|
|
69
|
+
expect(cop.offences).to be_empty
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'accepts a raise with 2 args' do
|
|
73
|
+
inspect_source(cop, ['raise RuntimeError, msg'])
|
|
74
|
+
expect(cop.offences).to be_empty
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it 'accepts a raise with msg argument' do
|
|
78
|
+
inspect_source(cop, ['raise msg'])
|
|
79
|
+
expect(cop.offences).to be_empty
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::RedundantBegin do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'reports an offence for def with redundant begin block' do
|
|
9
|
+
src = ['def func',
|
|
10
|
+
' begin',
|
|
11
|
+
' ala',
|
|
12
|
+
' rescue => e',
|
|
13
|
+
' bala',
|
|
14
|
+
' end',
|
|
15
|
+
'end']
|
|
16
|
+
inspect_source(cop, src)
|
|
17
|
+
expect(cop.offences.size).to eq(1)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'reports an offence for defs with redundant begin block' do
|
|
21
|
+
src = ['def Test.func',
|
|
22
|
+
' begin',
|
|
23
|
+
' ala',
|
|
24
|
+
' rescue => e',
|
|
25
|
+
' bala',
|
|
26
|
+
' end',
|
|
27
|
+
'end']
|
|
28
|
+
inspect_source(cop, src)
|
|
29
|
+
expect(cop.offences.size).to eq(1)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'accepts a def with required begin block' do
|
|
33
|
+
src = ['def func',
|
|
34
|
+
' begin',
|
|
35
|
+
' ala',
|
|
36
|
+
' rescue => e',
|
|
37
|
+
' bala',
|
|
38
|
+
' end',
|
|
39
|
+
' something',
|
|
40
|
+
'end']
|
|
41
|
+
inspect_source(cop, src)
|
|
42
|
+
expect(cop.offences).to be_empty
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'accepts a defs with required begin block' do
|
|
46
|
+
src = ['def Test.func',
|
|
47
|
+
' begin',
|
|
48
|
+
' ala',
|
|
49
|
+
' rescue => e',
|
|
50
|
+
' bala',
|
|
51
|
+
' end',
|
|
52
|
+
' something',
|
|
53
|
+
'end']
|
|
54
|
+
inspect_source(cop, src)
|
|
55
|
+
expect(cop.offences).to be_empty
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::RedundantException do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'reports an offence for a raise with RuntimeError' do
|
|
9
|
+
inspect_source(cop, ['raise RuntimeError, msg'])
|
|
10
|
+
expect(cop.offences.size).to eq(1)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'reports an offence for a fail with RuntimeError' do
|
|
14
|
+
inspect_source(cop, ['fail RuntimeError, msg'])
|
|
15
|
+
expect(cop.offences.size).to eq(1)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'accepts a raise with RuntimeError if it does not have 2 args' do
|
|
19
|
+
inspect_source(cop, ['raise RuntimeError, msg, caller'])
|
|
20
|
+
expect(cop.offences).to be_empty
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'accepts a fail with RuntimeError if it does not have 2 args' do
|
|
24
|
+
inspect_source(cop, ['fail RuntimeError, msg, caller'])
|
|
25
|
+
expect(cop.offences).to be_empty
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::RedundantReturn, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
let(:cop_config) { { 'AllowMultipleReturnValues' => false } }
|
|
8
|
+
|
|
9
|
+
it 'reports an offence for def with only a return' do
|
|
10
|
+
src = ['def func',
|
|
11
|
+
' return something',
|
|
12
|
+
'end']
|
|
13
|
+
inspect_source(cop, src)
|
|
14
|
+
expect(cop.offences.size).to eq(1)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'reports an offence for defs with only a return' do
|
|
18
|
+
src = ['def Test.func',
|
|
19
|
+
' return something',
|
|
20
|
+
'end']
|
|
21
|
+
inspect_source(cop, src)
|
|
22
|
+
expect(cop.offences.size).to eq(1)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'reports an offence for def ending with return' do
|
|
26
|
+
src = ['def func',
|
|
27
|
+
' one',
|
|
28
|
+
' two',
|
|
29
|
+
' return something',
|
|
30
|
+
'end']
|
|
31
|
+
inspect_source(cop, src)
|
|
32
|
+
expect(cop.offences.size).to eq(1)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'reports an offence for defs ending with return' do
|
|
36
|
+
src = ['def func',
|
|
37
|
+
' one',
|
|
38
|
+
' two',
|
|
39
|
+
' return something',
|
|
40
|
+
'end']
|
|
41
|
+
inspect_source(cop, src)
|
|
42
|
+
expect(cop.offences.size).to eq(1)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'accepts return in a non-final position' do
|
|
46
|
+
src = ['def func',
|
|
47
|
+
' return something if something_else',
|
|
48
|
+
'end']
|
|
49
|
+
inspect_source(cop, src)
|
|
50
|
+
expect(cop.offences).to be_empty
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it 'does not blow up on empty method body' do
|
|
54
|
+
src = ['def func',
|
|
55
|
+
'end']
|
|
56
|
+
inspect_source(cop, src)
|
|
57
|
+
expect(cop.offences).to be_empty
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'auto-corrects by removing redundant returns' do
|
|
61
|
+
src = ['def func',
|
|
62
|
+
' one',
|
|
63
|
+
' two',
|
|
64
|
+
' return something',
|
|
65
|
+
'end'].join("\n")
|
|
66
|
+
result_src = ['def func',
|
|
67
|
+
' one',
|
|
68
|
+
' two',
|
|
69
|
+
' something',
|
|
70
|
+
'end'].join("\n")
|
|
71
|
+
new_source = autocorrect_source(cop, src)
|
|
72
|
+
expect(new_source).to eq(result_src)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context 'when multi-value returns are not allowed' do
|
|
76
|
+
it 'reports an offence for def with only a return' do
|
|
77
|
+
src = ['def func',
|
|
78
|
+
' return something, test',
|
|
79
|
+
'end']
|
|
80
|
+
inspect_source(cop, src)
|
|
81
|
+
expect(cop.offences.size).to eq(1)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it 'reports an offence for defs with only a return' do
|
|
85
|
+
src = ['def Test.func',
|
|
86
|
+
' return something, test',
|
|
87
|
+
'end']
|
|
88
|
+
inspect_source(cop, src)
|
|
89
|
+
expect(cop.offences.size).to eq(1)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'reports an offence for def ending with return' do
|
|
93
|
+
src = ['def func',
|
|
94
|
+
' one',
|
|
95
|
+
' two',
|
|
96
|
+
' return something, test',
|
|
97
|
+
'end']
|
|
98
|
+
inspect_source(cop, src)
|
|
99
|
+
expect(cop.offences.size).to eq(1)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'reports an offence for defs ending with return' do
|
|
103
|
+
src = ['def func',
|
|
104
|
+
' one',
|
|
105
|
+
' two',
|
|
106
|
+
' return something, test',
|
|
107
|
+
'end']
|
|
108
|
+
inspect_source(cop, src)
|
|
109
|
+
expect(cop.offences.size).to eq(1)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it 'auto-corrects by making implicit arrays explicit' do
|
|
113
|
+
src = ['def func',
|
|
114
|
+
' return 1, 2',
|
|
115
|
+
'end'].join("\n")
|
|
116
|
+
result_src = ['def func',
|
|
117
|
+
' [1, 2]', # Just 1, 2 is not valid Ruby.
|
|
118
|
+
'end'].join("\n")
|
|
119
|
+
new_source = autocorrect_source(cop, src)
|
|
120
|
+
expect(new_source).to eq(result_src)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
context 'when multi-value returns are allowed' do
|
|
125
|
+
let(:cop_config) { { 'AllowMultipleReturnValues' => true } }
|
|
126
|
+
|
|
127
|
+
it 'accepts def with only a return' do
|
|
128
|
+
src = ['def func',
|
|
129
|
+
' return something, test',
|
|
130
|
+
'end']
|
|
131
|
+
inspect_source(cop, src)
|
|
132
|
+
expect(cop.offences).to be_empty
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it 'accepts defs with only a return' do
|
|
136
|
+
src = ['def Test.func',
|
|
137
|
+
' return something, test',
|
|
138
|
+
'end']
|
|
139
|
+
inspect_source(cop, src)
|
|
140
|
+
expect(cop.offences).to be_empty
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it 'accepts def ending with return' do
|
|
144
|
+
src = ['def func',
|
|
145
|
+
' one',
|
|
146
|
+
' two',
|
|
147
|
+
' return something, test',
|
|
148
|
+
'end']
|
|
149
|
+
inspect_source(cop, src)
|
|
150
|
+
expect(cop.offences).to be_empty
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it 'accepts defs ending with return' do
|
|
154
|
+
src = ['def func',
|
|
155
|
+
' one',
|
|
156
|
+
' two',
|
|
157
|
+
' return something, test',
|
|
158
|
+
'end']
|
|
159
|
+
inspect_source(cop, src)
|
|
160
|
+
expect(cop.offences).to be_empty
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
it 'does not auto-correct' do
|
|
164
|
+
src = ['def func',
|
|
165
|
+
' return 1, 2',
|
|
166
|
+
'end'].join("\n")
|
|
167
|
+
new_source = autocorrect_source(cop, src)
|
|
168
|
+
expect(new_source).to eq(src)
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::RedundantSelf do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'reports an offence a self receiver on an rvalue' do
|
|
9
|
+
src = ['a = self.b']
|
|
10
|
+
inspect_source(cop, src)
|
|
11
|
+
expect(cop.offences.size).to eq(1)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'accepts a self receiver on an lvalue of an assignment' do
|
|
15
|
+
src = ['self.a = b']
|
|
16
|
+
inspect_source(cop, src)
|
|
17
|
+
expect(cop.offences).to be_empty
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'accepts a self receiver on an lvalue of an or-assignment' do
|
|
21
|
+
src = ['self.logger ||= Rails.logger']
|
|
22
|
+
inspect_source(cop, src)
|
|
23
|
+
expect(cop.offences).to be_empty
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'accepts a self receiver on an lvalue of an and-assignment' do
|
|
27
|
+
src = ['self.flag &&= value']
|
|
28
|
+
inspect_source(cop, src)
|
|
29
|
+
expect(cop.offences).to be_empty
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'accepts a self receiver on an lvalue of a plus-assignment' do
|
|
33
|
+
src = ['self.sum += 10']
|
|
34
|
+
inspect_source(cop, src)
|
|
35
|
+
expect(cop.offences).to be_empty
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'accepts a self receiver with the square bracket operator' do
|
|
39
|
+
src = ['self[a]']
|
|
40
|
+
inspect_source(cop, src)
|
|
41
|
+
expect(cop.offences).to be_empty
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'accepts a self receiver with the double less-than operator' do
|
|
45
|
+
src = ['self << a']
|
|
46
|
+
inspect_source(cop, src)
|
|
47
|
+
expect(cop.offences).to be_empty
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'accepts a self receiver for methods named like ruby keywords' do
|
|
51
|
+
src = ['a = self.class',
|
|
52
|
+
'self.for(deps, [], true)',
|
|
53
|
+
'self.and(other)',
|
|
54
|
+
'self.or(other)',
|
|
55
|
+
'self.alias',
|
|
56
|
+
'self.begin',
|
|
57
|
+
'self.break',
|
|
58
|
+
'self.case',
|
|
59
|
+
'self.def',
|
|
60
|
+
'self.defined',
|
|
61
|
+
'self.do',
|
|
62
|
+
'self.else',
|
|
63
|
+
'self.elsif',
|
|
64
|
+
'self.end',
|
|
65
|
+
'self.ensure',
|
|
66
|
+
'self.false',
|
|
67
|
+
'self.if',
|
|
68
|
+
'self.in',
|
|
69
|
+
'self.module',
|
|
70
|
+
'self.next',
|
|
71
|
+
'self.nil',
|
|
72
|
+
'self.not',
|
|
73
|
+
'self.redo',
|
|
74
|
+
'self.rescue',
|
|
75
|
+
'self.retry',
|
|
76
|
+
'self.return',
|
|
77
|
+
'self.self',
|
|
78
|
+
'self.super',
|
|
79
|
+
'self.then',
|
|
80
|
+
'self.true',
|
|
81
|
+
'self.undef',
|
|
82
|
+
'self.unless',
|
|
83
|
+
'self.until',
|
|
84
|
+
'self.when',
|
|
85
|
+
'self.while',
|
|
86
|
+
'self.yield'
|
|
87
|
+
]
|
|
88
|
+
inspect_source(cop, src)
|
|
89
|
+
expect(cop.offences).to be_empty
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'accepts a self receiver used to distinguish from blockarg' do
|
|
93
|
+
src = ['def requested_specs(&groups)',
|
|
94
|
+
' some_method(self.groups)',
|
|
95
|
+
'end'
|
|
96
|
+
]
|
|
97
|
+
inspect_source(cop, src)
|
|
98
|
+
expect(cop.offences).to be_empty
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'accepts a self receiver used to distinguish from argument' do
|
|
102
|
+
src = ['def requested_specs(groups)',
|
|
103
|
+
' some_method(self.groups)',
|
|
104
|
+
'end'
|
|
105
|
+
]
|
|
106
|
+
inspect_source(cop, src)
|
|
107
|
+
expect(cop.offences).to be_empty
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it 'accepts a self receiver used to distinguish from argument' do
|
|
111
|
+
src = ['def requested_specs(final = true)',
|
|
112
|
+
' something if self.final != final',
|
|
113
|
+
'end'
|
|
114
|
+
]
|
|
115
|
+
inspect_source(cop, src)
|
|
116
|
+
expect(cop.offences).to be_empty
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it 'accepts a self receiver used to distinguish from local variable' do
|
|
120
|
+
src = ['def requested_specs',
|
|
121
|
+
' @requested_specs ||= begin',
|
|
122
|
+
' groups = self.groups - Bundler.settings.without',
|
|
123
|
+
' groups.map! { |g| g.to_sym }',
|
|
124
|
+
' specs_for(groups)',
|
|
125
|
+
' end',
|
|
126
|
+
'end'
|
|
127
|
+
]
|
|
128
|
+
inspect_source(cop, src)
|
|
129
|
+
expect(cop.offences).to be_empty
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it 'accepts a self receiver used to distinguish from constant' do
|
|
133
|
+
src = ['self.Foo']
|
|
134
|
+
inspect_source(cop, src)
|
|
135
|
+
expect(cop.offences).to be_empty
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it 'auto-corrects by removing redundant self' do
|
|
139
|
+
new_source = autocorrect_source(cop, ['self.x'])
|
|
140
|
+
expect(new_source).to eq('x')
|
|
141
|
+
end
|
|
142
|
+
end
|