rubocop 0.13.1 → 0.14.0
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.
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
@@ -0,0 +1,65 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Rubocop::Cop::Style::ClassLength, :config do
|
6
|
+
subject(:cop) { described_class.new(config) }
|
7
|
+
let(:cop_config) { { 'Max' => 5, 'CountComments' => false } }
|
8
|
+
|
9
|
+
it 'rejects a class with more than 5 lines' do
|
10
|
+
inspect_source(cop, ['class Test',
|
11
|
+
' a = 1',
|
12
|
+
' a = 2',
|
13
|
+
' a = 3',
|
14
|
+
' a = 4',
|
15
|
+
' a = 5',
|
16
|
+
' a = 6',
|
17
|
+
'end'])
|
18
|
+
expect(cop.offences.size).to eq(1)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'accepts a class with less than 5 lines' do
|
22
|
+
inspect_source(cop, ['class Test',
|
23
|
+
' a = 1',
|
24
|
+
' a = 2',
|
25
|
+
' a = 3',
|
26
|
+
' a = 4',
|
27
|
+
'end'])
|
28
|
+
expect(cop.offences).to be_empty
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not count blank lines' do
|
32
|
+
inspect_source(cop, ['class Test',
|
33
|
+
' a = 1',
|
34
|
+
' a = 2',
|
35
|
+
' a = 3',
|
36
|
+
' a = 4',
|
37
|
+
'',
|
38
|
+
'',
|
39
|
+
' a = 7',
|
40
|
+
'end'])
|
41
|
+
expect(cop.offences).to be_empty
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'accepts empty classes' do
|
45
|
+
inspect_source(cop, ['class Test',
|
46
|
+
'end'])
|
47
|
+
expect(cop.offences).to be_empty
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'when CountComments is enabled' do
|
51
|
+
before { cop_config['CountComments'] = true }
|
52
|
+
|
53
|
+
it 'also counts commented lines' do
|
54
|
+
inspect_source(cop, ['class Test',
|
55
|
+
' a = 1',
|
56
|
+
' #a = 2',
|
57
|
+
' a = 3',
|
58
|
+
' #a = 4',
|
59
|
+
' a = 5',
|
60
|
+
' a = 6',
|
61
|
+
'end'])
|
62
|
+
expect(cop.offences.size).to eq(1)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -2,50 +2,44 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe ClassMethods do
|
9
|
-
subject(:cm) { ClassMethods.new }
|
5
|
+
describe Rubocop::Cop::Style::ClassMethods do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
8
|
+
it 'registers an offence for methods using a class name' do
|
9
|
+
inspect_source(cop,
|
10
|
+
['class Test',
|
11
|
+
' def Test.some_method',
|
12
|
+
' do_something',
|
13
|
+
' end',
|
14
|
+
'end'])
|
15
|
+
expect(cop.offences.size).to eq(1)
|
16
|
+
end
|
20
17
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
18
|
+
it 'registers an offence for methods using a module name' do
|
19
|
+
inspect_source(cop,
|
20
|
+
['module Test',
|
21
|
+
' def Test.some_method',
|
22
|
+
' do_something',
|
23
|
+
' end',
|
24
|
+
'end'])
|
25
|
+
expect(cop.offences.size).to eq(1)
|
26
|
+
end
|
30
27
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
28
|
+
it 'does not register an offence for methods using self' do
|
29
|
+
inspect_source(cop,
|
30
|
+
['module Test',
|
31
|
+
' def self.some_method',
|
32
|
+
' do_something',
|
33
|
+
' end',
|
34
|
+
'end'])
|
35
|
+
expect(cop.offences).to be_empty
|
36
|
+
end
|
40
37
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
38
|
+
it 'does not register an offence outside class/module bodies' do
|
39
|
+
inspect_source(cop,
|
40
|
+
['def self.some_method',
|
41
|
+
' do_something',
|
42
|
+
'end'])
|
43
|
+
expect(cop.offences).to be_empty
|
50
44
|
end
|
51
45
|
end
|
@@ -2,24 +2,18 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe ClassVars do
|
9
|
-
subject(:cop) { described_class.new }
|
5
|
+
describe Rubocop::Cop::Style::ClassVars do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
it 'registers an offence for class variable declaration' do
|
9
|
+
inspect_source(cop, ['class TestClass; @@test = 10; end'])
|
10
|
+
expect(cop.offences.size).to eq(1)
|
11
|
+
expect(cop.messages)
|
12
|
+
.to eq(['Replace class var @@test with a class instance var.'])
|
13
|
+
end
|
17
14
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
15
|
+
it 'does not register an offence for class variable usage' do
|
16
|
+
inspect_source(cop, ['@@test.test(20)'])
|
17
|
+
expect(cop.offences).to be_empty
|
24
18
|
end
|
25
19
|
end
|
@@ -2,53 +2,47 @@
|
|
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
|
-
it 'auto-corrects to preferred method' do
|
47
|
-
new_source = autocorrect_source(cop, 'some.collect(&:test)')
|
48
|
-
expect(new_source).to eq('some.map(&:test)')
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
5
|
+
describe Rubocop::Cop::Style::CollectionMethods, :config do
|
6
|
+
cop_config = {
|
7
|
+
'PreferredMethods' => {
|
8
|
+
'collect' => 'map',
|
9
|
+
'inject' => 'reduce',
|
10
|
+
'detect' => 'find',
|
11
|
+
'find_all' => 'select'
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
subject(:cop) { described_class.new(config) }
|
16
|
+
let(:cop_config) { cop_config }
|
17
|
+
|
18
|
+
cop_config['PreferredMethods'].each do |method, preferred_method|
|
19
|
+
it "registers an offence for #{method} with block" do
|
20
|
+
inspect_source(cop, ["[1, 2, 3].#{method} { |e| e + 1 }"])
|
21
|
+
expect(cop.offences.size).to eq(1)
|
22
|
+
expect(cop.messages)
|
23
|
+
.to eq(["Prefer #{preferred_method} over #{method}."])
|
24
|
+
end
|
25
|
+
|
26
|
+
it "registers an offence for #{method} with proc param" do
|
27
|
+
inspect_source(cop, ["[1, 2, 3].#{method}(&:test)"])
|
28
|
+
expect(cop.offences.size).to eq(1)
|
29
|
+
expect(cop.messages)
|
30
|
+
.to eq(["Prefer #{preferred_method} over #{method}."])
|
31
|
+
end
|
32
|
+
|
33
|
+
it "accepts #{method} with more than 1 param" do
|
34
|
+
inspect_source(cop, ["[1, 2, 3].#{method}(other, &:test)"])
|
35
|
+
expect(cop.offences).to be_empty
|
36
|
+
end
|
37
|
+
|
38
|
+
it "accepts #{method} without a block" do
|
39
|
+
inspect_source(cop, ["[1, 2, 3].#{method}"])
|
40
|
+
expect(cop.offences).to be_empty
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'auto-corrects to preferred method' do
|
44
|
+
new_source = autocorrect_source(cop, 'some.collect(&:test)')
|
45
|
+
expect(new_source).to eq('some.map(&:test)')
|
52
46
|
end
|
53
47
|
end
|
54
48
|
end
|
@@ -2,65 +2,59 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
module Style
|
8
|
-
describe ColonMethodCall do
|
9
|
-
subject(:cop) { described_class.new }
|
5
|
+
describe Rubocop::Cop::Style::ColonMethodCall do
|
6
|
+
subject(:cop) { described_class.new }
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
it 'registers an offence for instance method call' do
|
9
|
+
inspect_source(cop,
|
10
|
+
['test::method_name'])
|
11
|
+
expect(cop.offences.size).to eq(1)
|
12
|
+
end
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
it 'registers an offence for instance method call with arg' do
|
15
|
+
inspect_source(cop,
|
16
|
+
['test::method_name(arg)'])
|
17
|
+
expect(cop.offences.size).to eq(1)
|
18
|
+
end
|
22
19
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
20
|
+
it 'registers an offence for class method call' do
|
21
|
+
inspect_source(cop,
|
22
|
+
['Class::method_name'])
|
23
|
+
expect(cop.offences.size).to eq(1)
|
24
|
+
end
|
28
25
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
it 'registers an offence for class method call with arg' do
|
27
|
+
inspect_source(cop,
|
28
|
+
['Class::method_name(arg, arg2)'])
|
29
|
+
expect(cop.offences.size).to eq(1)
|
30
|
+
end
|
34
31
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
it 'does not register an offence for constant access' do
|
33
|
+
inspect_source(cop,
|
34
|
+
['Tip::Top::SOME_CONST'])
|
35
|
+
expect(cop.offences).to be_empty
|
36
|
+
end
|
40
37
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
38
|
+
it 'does not register an offence for nested class' do
|
39
|
+
inspect_source(cop,
|
40
|
+
['Tip::Top.some_method'])
|
41
|
+
expect(cop.offences).to be_empty
|
42
|
+
end
|
46
43
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
44
|
+
it 'does not register an offence for op methods' do
|
45
|
+
inspect_source(cop,
|
46
|
+
['Tip::Top.some_method[3]'])
|
47
|
+
expect(cop.offences).to be_empty
|
48
|
+
end
|
52
49
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
50
|
+
it 'does not register an offence when for constructor methods' do
|
51
|
+
inspect_source(cop,
|
52
|
+
['Tip::Top(some_arg)'])
|
53
|
+
expect(cop.offences).to be_empty
|
54
|
+
end
|
58
55
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
56
|
+
it 'auto-corrects "::" with "."' do
|
57
|
+
new_source = autocorrect_source(cop, 'test::method')
|
58
|
+
expect(new_source).to eq('test.method')
|
65
59
|
end
|
66
60
|
end
|
@@ -2,91 +2,85 @@
|
|
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
|
-
it 'accepts the word without colon' do
|
85
|
-
inspect_source(cop, ['# TODO make better'])
|
86
|
-
expect(cop.offences).to be_empty
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
5
|
+
describe Rubocop::Cop::Style::CommentAnnotation, :config do
|
6
|
+
subject(:cop) { described_class.new(config) }
|
7
|
+
let(:cop_config) do
|
8
|
+
{ 'Keywords' => %w(TODO FIXME OPTIMIZE HACK REVIEW) }
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'registers an offence for a missing colon' do
|
12
|
+
inspect_source(cop, ['# TODO make better'])
|
13
|
+
expect(cop.offences.size).to eq(1)
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with configured keyword' do
|
17
|
+
let(:cop_config) { { 'Keywords' => %w(ISSUE) } }
|
18
|
+
|
19
|
+
it 'registers an offence for a missing colon after the word' do
|
20
|
+
inspect_source(cop, ['# ISSUE wrong order'])
|
21
|
+
expect(cop.offences.size).to eq(1)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when used with the clang formatter' do
|
26
|
+
let(:formatter) { Rubocop::Formatter::ClangStyleFormatter.new(output) }
|
27
|
+
let(:output) { StringIO.new }
|
28
|
+
|
29
|
+
it 'marks the annotation keyword' do
|
30
|
+
inspect_source(cop, ['# TODO:make better'])
|
31
|
+
formatter.report_file('t', cop.offences)
|
32
|
+
expect(output.string).to eq(["t:1:3: C: #{described_class::MSG}",
|
33
|
+
'# TODO:make better',
|
34
|
+
' ^^^^^',
|
35
|
+
''].join("\n"))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'registers an offence for lower case' do
|
40
|
+
inspect_source(cop, ['# fixme: does not work'])
|
41
|
+
expect(cop.offences.size).to eq(1)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'registers an offence for capitalized annotation keyword' do
|
45
|
+
inspect_source(cop, ['# Optimize: does not work'])
|
46
|
+
expect(cop.offences.size).to eq(1)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'registers an offence for upper case with colon but no note' do
|
50
|
+
inspect_source(cop, ['# HACK:'])
|
51
|
+
expect(cop.offences.size).to eq(1)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'accepts upper case keyword with colon, space and note' do
|
55
|
+
inspect_source(cop, ['# REVIEW: not sure about this'])
|
56
|
+
expect(cop.offences).to be_empty
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'accepts upper case keyword alone' do
|
60
|
+
inspect_source(cop, ['# OPTIMIZE'])
|
61
|
+
expect(cop.offences).to be_empty
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'accepts a comment that is obviously a code example' do
|
65
|
+
inspect_source(cop, ['# Todo.destroy(1)'])
|
66
|
+
expect(cop.offences).to be_empty
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'accepts a keyword that is just the beginning of a sentence' do
|
70
|
+
inspect_source(cop,
|
71
|
+
["# Optimize if you want. I wouldn't recommend it.",
|
72
|
+
'# Hack is a fun game.'])
|
73
|
+
expect(cop.offences).to be_empty
|
74
|
+
end
|
75
|
+
|
76
|
+
context 'when a keyword is not in the configuration' do
|
77
|
+
let(:cop_config) do
|
78
|
+
{ 'Keywords' => %w(FIXME OPTIMIZE HACK REVIEW) }
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'accepts the word without colon' do
|
82
|
+
inspect_source(cop, ['# TODO make better'])
|
83
|
+
expect(cop.offences).to be_empty
|
90
84
|
end
|
91
85
|
end
|
92
86
|
end
|