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,22 +2,16 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe PerlBackrefs do
|
9
|
-
subject(:cop) { described_class.new }
|
5
|
+
describe Rubocop::Cop::Style::PerlBackrefs do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
it 'registers an offence for $1' do
|
9
|
+
inspect_source(cop, ['puts $1'])
|
10
|
+
expect(cop.offences.size).to eq(1)
|
11
|
+
end
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
13
|
+
it 'auto-corrects $1 to Regexp.last_match[1]' do
|
14
|
+
new_source = autocorrect_source(cop, '$1')
|
15
|
+
expect(new_source).to eq('Regexp.last_match[1]')
|
22
16
|
end
|
23
17
|
end
|
@@ -2,27 +2,21 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe Proc do
|
9
|
-
subject(:proc) { Proc.new }
|
5
|
+
describe Rubocop::Cop::Style::Proc do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
20
17
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
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
|
27
21
|
end
|
28
22
|
end
|
@@ -0,0 +1,55 @@
|
|
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
|
+
end
|
15
|
+
|
16
|
+
it 'reports an offence for a raise with 3 args' do
|
17
|
+
inspect_source(cop, ['raise RuntimeError, msg, caller'])
|
18
|
+
expect(cop.offences.size).to eq(1)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'accepts a raise with msg argument' do
|
22
|
+
inspect_source(cop, ['raise msg'])
|
23
|
+
expect(cop.offences).to be_empty
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'accepts a raise with an exception argument' do
|
27
|
+
inspect_source(cop, ['raise Ex.new(msg)'])
|
28
|
+
expect(cop.offences).to be_empty
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when enforced style is exploded' do
|
33
|
+
let(:cop_config) { { 'EnforcedStyle' => 'exploded' } }
|
34
|
+
|
35
|
+
it 'reports an offence for a raise with exception object' do
|
36
|
+
inspect_source(cop, ['raise Ex.new(msg)'])
|
37
|
+
expect(cop.offences.size).to eq(1)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'accepts a raise with 3 args' do
|
41
|
+
inspect_source(cop, ['raise RuntimeError, msg, caller'])
|
42
|
+
expect(cop.offences).to be_empty
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'accepts a raise with 2 args' do
|
46
|
+
inspect_source(cop, ['raise RuntimeError, msg'])
|
47
|
+
expect(cop.offences).to be_empty
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'accepts a raise with msg argument' do
|
51
|
+
inspect_source(cop, ['raise msg'])
|
52
|
+
expect(cop.offences).to be_empty
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -2,65 +2,59 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe ReduceArguments do
|
9
|
-
subject(:cop) { described_class.new }
|
5
|
+
describe Rubocop::Cop::Style::ReduceArguments do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
8
|
+
it 'find wrong argument names in calls with different syntax' do
|
9
|
+
inspect_source(cop,
|
10
|
+
['def m',
|
11
|
+
' [0, 1].reduce { |c, d| c + d }',
|
12
|
+
' [0, 1].reduce{ |c, d| c + d }',
|
13
|
+
' [0, 1].reduce(5) { |c, d| c + d }',
|
14
|
+
' [0, 1].reduce(5){ |c, d| c + d }',
|
15
|
+
' [0, 1].reduce (5) { |c, d| c + d }',
|
16
|
+
' [0, 1].reduce(5) { |c, d| c + d }',
|
17
|
+
'end'])
|
18
|
+
expect(cop.offences.size).to eq(6)
|
19
|
+
expect(cop.offences.map(&:line).sort).to eq((2..7).to_a)
|
20
|
+
end
|
24
21
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
22
|
+
it 'allows calls with proper argument names' do
|
23
|
+
inspect_source(cop,
|
24
|
+
['def m',
|
25
|
+
' [0, 1].reduce { |a, e| a + e }',
|
26
|
+
' [0, 1].reduce{ |a, e| a + e }',
|
27
|
+
' [0, 1].reduce(5) { |a, e| a + e }',
|
28
|
+
' [0, 1].reduce(5){ |a, e| a + e }',
|
29
|
+
' [0, 1].reduce (5) { |a, e| a + e }',
|
30
|
+
' [0, 1].reduce(5) { |a, e| a + e }',
|
31
|
+
'end'])
|
32
|
+
expect(cop.offences).to be_empty
|
33
|
+
end
|
37
34
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
35
|
+
it 'ignores do..end blocks' do
|
36
|
+
inspect_source(cop,
|
37
|
+
['def m',
|
38
|
+
' [0, 1].reduce do |c, d|',
|
39
|
+
' c + d',
|
40
|
+
' end',
|
41
|
+
'end'])
|
42
|
+
expect(cop.offences).to be_empty
|
43
|
+
end
|
47
44
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
45
|
+
it 'ignores :reduce symbols' do
|
46
|
+
inspect_source(cop,
|
47
|
+
['def m',
|
48
|
+
' call_method(:reduce) { |a, b| a + b}',
|
49
|
+
'end'])
|
50
|
+
expect(cop.offences).to be_empty
|
51
|
+
end
|
55
52
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
53
|
+
it 'does not report when destructuring is used' do
|
54
|
+
inspect_source(cop,
|
55
|
+
['def m',
|
56
|
+
' test.reduce { |a, (id, _)| a + id}',
|
57
|
+
'end'])
|
58
|
+
expect(cop.offences).to be_empty
|
65
59
|
end
|
66
60
|
end
|
@@ -2,62 +2,56 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe RedundantBegin do
|
9
|
-
subject(:cop) { RedundantBegin.new }
|
5
|
+
describe Rubocop::Cop::Style::RedundantBegin do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
22
19
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
34
31
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
47
44
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
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
|
62
56
|
end
|
63
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
|
@@ -2,78 +2,170 @@
|
|
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
|
-
|
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)
|
77
169
|
end
|
78
170
|
end
|
79
171
|
end
|