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,37 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::CharacterLiteral do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for character literals' do
|
|
9
|
+
inspect_source(cop, ['x = ?x'])
|
|
10
|
+
expect(cop.offences.size).to eq(1)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'registers an offence for literals like \n' do
|
|
14
|
+
inspect_source(cop, ['x = ?\n'])
|
|
15
|
+
expect(cop.offences.size).to eq(1)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'accepts literals like ?\C-\M-d' do
|
|
19
|
+
inspect_source(cop, ['x = ?\C-\M-d'])
|
|
20
|
+
expect(cop.offences).to be_empty
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'accepts ? in a %w literal' do
|
|
24
|
+
inspect_source(cop, ['%w{? A}'])
|
|
25
|
+
expect(cop.offences).to be_empty
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "auto-corrects ?x to 'x'" do
|
|
29
|
+
new_source = autocorrect_source(cop, 'x = ?x')
|
|
30
|
+
expect(new_source).to eq("x = 'x'")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it 'auto-corrects ?\n to "\\n"' do
|
|
34
|
+
new_source = autocorrect_source(cop, 'x = ?\n')
|
|
35
|
+
expect(new_source).to eq('x = "\\n"')
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::ClassAndModuleCamelCase do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for underscore in class and module name' do
|
|
9
|
+
inspect_source(cop,
|
|
10
|
+
['class My_Class',
|
|
11
|
+
'end',
|
|
12
|
+
'',
|
|
13
|
+
'module My_Module',
|
|
14
|
+
'end'
|
|
15
|
+
])
|
|
16
|
+
expect(cop.offences.size).to eq(2)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'is not fooled by qualified names' do
|
|
20
|
+
inspect_source(cop,
|
|
21
|
+
['class Top::My_Class',
|
|
22
|
+
'end',
|
|
23
|
+
'',
|
|
24
|
+
'module My_Module::Ala',
|
|
25
|
+
'end'
|
|
26
|
+
])
|
|
27
|
+
expect(cop.offences.size).to eq(2)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'accepts CamelCase names' do
|
|
31
|
+
inspect_source(cop,
|
|
32
|
+
['class MyClass',
|
|
33
|
+
'end',
|
|
34
|
+
'',
|
|
35
|
+
'module Mine',
|
|
36
|
+
'end'
|
|
37
|
+
])
|
|
38
|
+
expect(cop.offences).to be_empty
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
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
|
+
expect(cop.messages).to eq(['Class definition is too long. [6/5]'])
|
|
20
|
+
expect(cop.config_to_allow_offences).to eq('Max' => 6)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'accepts a class with 5 lines' do
|
|
24
|
+
inspect_source(cop, ['class Test',
|
|
25
|
+
' a = 1',
|
|
26
|
+
' a = 2',
|
|
27
|
+
' a = 3',
|
|
28
|
+
' a = 4',
|
|
29
|
+
' a = 5',
|
|
30
|
+
'end'])
|
|
31
|
+
expect(cop.offences).to be_empty
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'accepts a class with less than 5 lines' do
|
|
35
|
+
inspect_source(cop, ['class Test',
|
|
36
|
+
' a = 1',
|
|
37
|
+
' a = 2',
|
|
38
|
+
' a = 3',
|
|
39
|
+
' a = 4',
|
|
40
|
+
'end'])
|
|
41
|
+
expect(cop.offences).to be_empty
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'does not count blank lines' do
|
|
45
|
+
inspect_source(cop, ['class Test',
|
|
46
|
+
' a = 1',
|
|
47
|
+
' a = 2',
|
|
48
|
+
' a = 3',
|
|
49
|
+
' a = 4',
|
|
50
|
+
'',
|
|
51
|
+
'',
|
|
52
|
+
' a = 7',
|
|
53
|
+
'end'])
|
|
54
|
+
expect(cop.offences).to be_empty
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'accepts empty classes' do
|
|
58
|
+
inspect_source(cop, ['class Test',
|
|
59
|
+
'end'])
|
|
60
|
+
expect(cop.offences).to be_empty
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context 'when a class has inner classes' do
|
|
64
|
+
it 'does not count lines of inner classes' do
|
|
65
|
+
inspect_source(cop, ['class NamespaceClass',
|
|
66
|
+
' class TestOne',
|
|
67
|
+
' a = 1',
|
|
68
|
+
' a = 2',
|
|
69
|
+
' a = 3',
|
|
70
|
+
' a = 4',
|
|
71
|
+
' a = 5',
|
|
72
|
+
' end',
|
|
73
|
+
' class TestTwo',
|
|
74
|
+
' a = 1',
|
|
75
|
+
' a = 2',
|
|
76
|
+
' a = 3',
|
|
77
|
+
' a = 4',
|
|
78
|
+
' a = 5',
|
|
79
|
+
' end',
|
|
80
|
+
' a = 1',
|
|
81
|
+
' a = 2',
|
|
82
|
+
' a = 3',
|
|
83
|
+
' a = 4',
|
|
84
|
+
' a = 5',
|
|
85
|
+
'end'])
|
|
86
|
+
expect(cop.offences).to be_empty
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it 'rejects a class with 6 lines that belong to the class directly' do
|
|
90
|
+
inspect_source(cop, ['class NamespaceClass',
|
|
91
|
+
' class TestOne',
|
|
92
|
+
' a = 1',
|
|
93
|
+
' a = 2',
|
|
94
|
+
' a = 3',
|
|
95
|
+
' a = 4',
|
|
96
|
+
' a = 5',
|
|
97
|
+
' end',
|
|
98
|
+
' class TestTwo',
|
|
99
|
+
' a = 1',
|
|
100
|
+
' a = 2',
|
|
101
|
+
' a = 3',
|
|
102
|
+
' a = 4',
|
|
103
|
+
' a = 5',
|
|
104
|
+
' end',
|
|
105
|
+
' a = 1',
|
|
106
|
+
' a = 2',
|
|
107
|
+
' a = 3',
|
|
108
|
+
' a = 4',
|
|
109
|
+
' a = 5',
|
|
110
|
+
' a = 6',
|
|
111
|
+
'end'])
|
|
112
|
+
expect(cop.offences.size).to eq(1)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
context 'when CountComments is enabled' do
|
|
117
|
+
before { cop_config['CountComments'] = true }
|
|
118
|
+
|
|
119
|
+
it 'also counts commented lines' do
|
|
120
|
+
inspect_source(cop, ['class Test',
|
|
121
|
+
' a = 1',
|
|
122
|
+
' #a = 2',
|
|
123
|
+
' a = 3',
|
|
124
|
+
' #a = 4',
|
|
125
|
+
' a = 5',
|
|
126
|
+
' a = 6',
|
|
127
|
+
'end'])
|
|
128
|
+
expect(cop.offences.size).to eq(1)
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::ClassMethods do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
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
|
|
17
|
+
|
|
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
|
|
27
|
+
|
|
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
|
|
37
|
+
|
|
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
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::ClassVars do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
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
|
|
14
|
+
|
|
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
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
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)')
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::ColonMethodCall do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
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
|
|
13
|
+
|
|
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
|
|
19
|
+
|
|
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
|
|
25
|
+
|
|
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
|
|
31
|
+
|
|
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
|
|
37
|
+
|
|
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
|
|
43
|
+
|
|
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
|
|
49
|
+
|
|
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
|
|
55
|
+
|
|
56
|
+
it 'auto-corrects "::" with "."' do
|
|
57
|
+
new_source = autocorrect_source(cop, 'test::method')
|
|
58
|
+
expect(new_source).to eq('test.method')
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
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
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|