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,65 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::LambdaCall, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
|
|
8
|
+
context 'when style is set to call' do
|
|
9
|
+
let(:cop_config) { { 'EnforcedStyle' => 'call' } }
|
|
10
|
+
|
|
11
|
+
it 'registers an offence for x.()' do
|
|
12
|
+
inspect_source(cop,
|
|
13
|
+
['x.(a, b)'])
|
|
14
|
+
expect(cop.offences.size).to eq(1)
|
|
15
|
+
expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'braces')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'registers an offence for correct + opposite' do
|
|
19
|
+
inspect_source(cop,
|
|
20
|
+
['x.call(a, b)',
|
|
21
|
+
'x.(a, b)'])
|
|
22
|
+
expect(cop.offences.size).to eq(1)
|
|
23
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'accepts x.call()' do
|
|
27
|
+
inspect_source(cop, ['x.call(a, b)'])
|
|
28
|
+
expect(cop.offences).to be_empty
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'auto-corrects x.() to x.call()' do
|
|
32
|
+
new_source = autocorrect_source(cop, ['a.(x)'])
|
|
33
|
+
expect(new_source).to eq('a.call(x)')
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'when style is set to braces' do
|
|
38
|
+
let(:cop_config) { { 'EnforcedStyle' => 'braces' } }
|
|
39
|
+
|
|
40
|
+
it 'registers an offence for x.call()' do
|
|
41
|
+
inspect_source(cop,
|
|
42
|
+
['x.call(a, b)'])
|
|
43
|
+
expect(cop.offences.size).to eq(1)
|
|
44
|
+
expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'call')
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'registers an offence for opposite + correct' do
|
|
48
|
+
inspect_source(cop,
|
|
49
|
+
['x.call(a, b)',
|
|
50
|
+
'x.(a, b)'])
|
|
51
|
+
expect(cop.offences.size).to eq(1)
|
|
52
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'accepts x.()' do
|
|
56
|
+
inspect_source(cop, ['x.(a, b)'])
|
|
57
|
+
expect(cop.offences).to be_empty
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'auto-corrects x.call() to x.()' do
|
|
61
|
+
new_source = autocorrect_source(cop, ['a.call(x)'])
|
|
62
|
+
expect(new_source).to eq('a.(x)')
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::Lambda do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for an old single-line lambda call' do
|
|
9
|
+
inspect_source(cop, ['f = lambda { |x| x }'])
|
|
10
|
+
expect(cop.offences.size).to eq(1)
|
|
11
|
+
expect(cop.messages)
|
|
12
|
+
.to eq(['Use the new lambda literal syntax ->(params) {...}.'])
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'accepts the new lambda literal with single-line body' do
|
|
16
|
+
inspect_source(cop, ['lambda = ->(x) { x }',
|
|
17
|
+
'lambda.(1)'])
|
|
18
|
+
expect(cop.offences).to be_empty
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'registers an offence for a new multi-line lambda call' do
|
|
22
|
+
inspect_source(cop, ['f = ->(x) do',
|
|
23
|
+
' x',
|
|
24
|
+
'end'])
|
|
25
|
+
expect(cop.offences.size).to eq(1)
|
|
26
|
+
expect(cop.messages)
|
|
27
|
+
.to eq(['Use the lambda method for multi-line lambdas.'])
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'accepts the old lambda syntax with multi-line body' do
|
|
31
|
+
inspect_source(cop, ['l = lambda do |x|',
|
|
32
|
+
' x',
|
|
33
|
+
'end'])
|
|
34
|
+
expect(cop.offences).to be_empty
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'accepts the lambda call outside of block' do
|
|
38
|
+
inspect_source(cop, ['l = lambda.test'])
|
|
39
|
+
expect(cop.offences).to be_empty
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::LeadingCommentSpace do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for comment without leading space' do
|
|
9
|
+
inspect_source(cop,
|
|
10
|
+
['#missing space'])
|
|
11
|
+
expect(cop.offences.size).to eq(1)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'does not register an offence for # followed by no text' do
|
|
15
|
+
inspect_source(cop,
|
|
16
|
+
['#'])
|
|
17
|
+
expect(cop.offences).to be_empty
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'does not register an offence for more than one space' do
|
|
21
|
+
inspect_source(cop,
|
|
22
|
+
['# heavily indented'])
|
|
23
|
+
expect(cop.offences).to be_empty
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'does not register an offence for more than one #' do
|
|
27
|
+
inspect_source(cop,
|
|
28
|
+
['###### heavily indented'])
|
|
29
|
+
expect(cop.offences).to be_empty
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'does not register an offence for only #s' do
|
|
33
|
+
inspect_source(cop,
|
|
34
|
+
['######'])
|
|
35
|
+
expect(cop.offences).to be_empty
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'does not register an offence for #! on first line' do
|
|
39
|
+
inspect_source(cop,
|
|
40
|
+
['#!/usr/bin/ruby',
|
|
41
|
+
'test'])
|
|
42
|
+
expect(cop.offences).to be_empty
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'registers an offence for #! after the first line' do
|
|
46
|
+
inspect_source(cop,
|
|
47
|
+
['test', '#!/usr/bin/ruby'])
|
|
48
|
+
expect(cop.offences.size).to eq(1)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'accepts rdoc syntax' do
|
|
52
|
+
inspect_source(cop,
|
|
53
|
+
['#++',
|
|
54
|
+
'#--',
|
|
55
|
+
'#:nodoc:'])
|
|
56
|
+
|
|
57
|
+
expect(cop.offences).to be_empty
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'auto-corrects missing space' do
|
|
61
|
+
new_source = autocorrect_source(cop, '#comment')
|
|
62
|
+
expect(new_source).to eq('# comment')
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::LineEndConcatenation do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for string concat at line end' do
|
|
9
|
+
inspect_source(cop,
|
|
10
|
+
['top = "test" +',
|
|
11
|
+
'"top"'])
|
|
12
|
+
expect(cop.offences.size).to eq(1)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'accepts string concat on the same line' do
|
|
16
|
+
inspect_source(cop,
|
|
17
|
+
['top = "test" + "top"'])
|
|
18
|
+
expect(cop.offences).to be_empty
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'accepts string concat at line end when followed by comment' do
|
|
22
|
+
inspect_source(cop,
|
|
23
|
+
['top = "test" + # something',
|
|
24
|
+
'"top"'])
|
|
25
|
+
expect(cop.offences).to be_empty
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'autocorrects by replacing + with \\' do
|
|
29
|
+
corrected = autocorrect_source(cop,
|
|
30
|
+
['top = "test" +',
|
|
31
|
+
'"top"'])
|
|
32
|
+
expect(corrected).to eq ['top = "test" \\', '"top"'].join("\n")
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::LineLength, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
let(:cop_config) { { 'Max' => 79 } }
|
|
8
|
+
|
|
9
|
+
it "registers an offence for a line that's 80 characters wide" do
|
|
10
|
+
inspect_source(cop, ['#' * 80])
|
|
11
|
+
expect(cop.offences.size).to eq(1)
|
|
12
|
+
expect(cop.offences.first.message).to eq('Line is too long. [80/79]')
|
|
13
|
+
expect(cop.config_to_allow_offences).to eq('Max' => 80)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "accepts a line that's 79 characters wide" do
|
|
17
|
+
inspect_source(cop, ['#' * 79])
|
|
18
|
+
expect(cop.offences).to be_empty
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::MethodCallParentheses, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
let(:config) do
|
|
8
|
+
Rubocop::Config.new('EmptyLiteral' => { 'Enabled' => true })
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'registers an offence for parens in method call without args' do
|
|
12
|
+
inspect_source(cop, ['top.test()'])
|
|
13
|
+
expect(cop.offences.size).to eq(1)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'accepts parentheses for methods starting with an upcase letter' do
|
|
17
|
+
inspect_source(cop, ['Test()'])
|
|
18
|
+
expect(cop.offences).to be_empty
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'accepts no parens in method call without args' do
|
|
22
|
+
inspect_source(cop, ['top.test'])
|
|
23
|
+
expect(cop.offences).to be_empty
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'accepts parens in method call with args' do
|
|
27
|
+
inspect_source(cop, ['top.test(a)'])
|
|
28
|
+
expect(cop.offences).to be_empty
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'auto-corrects by removing unneeded braces' do
|
|
32
|
+
new_source = autocorrect_source(cop, 'test()')
|
|
33
|
+
expect(new_source).to eq('test')
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'does not auto-correct calls that will be changed to empty literals' do
|
|
37
|
+
original = ['Hash.new()',
|
|
38
|
+
'Array.new()',
|
|
39
|
+
'String.new()']
|
|
40
|
+
new_source = autocorrect_source(cop, original)
|
|
41
|
+
expect(new_source).to eq(original.join("\n"))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context 'when EmptyLiteral is disabled' do
|
|
45
|
+
let(:config) do
|
|
46
|
+
Rubocop::Config.new('EmptyLiteral' => { 'Enabled' => false })
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it 'auto-corrects calls that could be empty literals' do
|
|
50
|
+
original = ['Hash.new()',
|
|
51
|
+
'Array.new()',
|
|
52
|
+
'String.new()']
|
|
53
|
+
new_source = autocorrect_source(cop, original)
|
|
54
|
+
expect(new_source).to eq(['Hash.new',
|
|
55
|
+
'Array.new',
|
|
56
|
+
'String.new'].join("\n"))
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::MethodCalledOnDoEndBlock do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
context 'with a multi-line do..end block' do
|
|
9
|
+
it 'registers an offence for a chained call' do
|
|
10
|
+
inspect_source(cop, ['a do',
|
|
11
|
+
' b',
|
|
12
|
+
'end.c'])
|
|
13
|
+
expect(cop.offences.size).to eq(1)
|
|
14
|
+
expect(cop.highlights).to eq(['end.c'])
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'accepts it if there is no chained call' do
|
|
18
|
+
inspect_source(cop, ['a do',
|
|
19
|
+
' b',
|
|
20
|
+
'end'])
|
|
21
|
+
expect(cop.offences).to be_empty
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'accepts a chained block' do
|
|
25
|
+
inspect_source(cop, ['a do',
|
|
26
|
+
' b',
|
|
27
|
+
'end.c do',
|
|
28
|
+
' d',
|
|
29
|
+
'end'])
|
|
30
|
+
expect(cop.offences).to be_empty
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context 'with a single-line do..end block' do
|
|
35
|
+
it 'registers an offence for a chained call' do
|
|
36
|
+
inspect_source(cop, ['a do b end.c'])
|
|
37
|
+
expect(cop.offences.size).to eq(1)
|
|
38
|
+
expect(cop.highlights).to eq(['end.c'])
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'accepts a single-line do..end block with a chained block' do
|
|
42
|
+
inspect_source(cop, ['a do b end.c do d end'])
|
|
43
|
+
expect(cop.offences).to be_empty
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context 'with a {} block' do
|
|
48
|
+
it 'accepts a multi-line block with a chained call' do
|
|
49
|
+
inspect_source(cop, ['a {',
|
|
50
|
+
' b',
|
|
51
|
+
'}.c'])
|
|
52
|
+
expect(cop.offences).to be_empty
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'accepts a single-line block with a chained call' do
|
|
56
|
+
inspect_source(cop, ['a { b }.c'])
|
|
57
|
+
expect(cop.offences).to be_empty
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::MethodDefParentheses, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
|
|
8
|
+
context 'require_parentheses' do
|
|
9
|
+
let(:cop_config) { { 'EnforcedStyle' => 'require_parentheses' } }
|
|
10
|
+
|
|
11
|
+
it 'reports an offence for def with parameters but no parens' do
|
|
12
|
+
src = ['def func a, b',
|
|
13
|
+
'end']
|
|
14
|
+
inspect_source(cop, src)
|
|
15
|
+
expect(cop.offences.size).to eq(1)
|
|
16
|
+
expect(cop.config_to_allow_offences).to eq('EnforcedStyle' =>
|
|
17
|
+
'require_no_parentheses')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'reports an offence for correct + opposite' do
|
|
21
|
+
src = ['def func(a, b)',
|
|
22
|
+
'end',
|
|
23
|
+
'def func a, b',
|
|
24
|
+
'end']
|
|
25
|
+
inspect_source(cop, src)
|
|
26
|
+
expect(cop.offences.size).to eq(1)
|
|
27
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'reports an offence for class def with parameters but no parens' do
|
|
31
|
+
src = ['def Test.func a, b',
|
|
32
|
+
'end']
|
|
33
|
+
inspect_source(cop, src)
|
|
34
|
+
expect(cop.offences.size).to eq(1)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'accepts def with no args and no parens' do
|
|
38
|
+
src = ['def func',
|
|
39
|
+
'end']
|
|
40
|
+
inspect_source(cop, src)
|
|
41
|
+
expect(cop.offences).to be_empty
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'auto-adds required parens for a def' do
|
|
45
|
+
new_source = autocorrect_source(cop, 'def test param; end')
|
|
46
|
+
expect(new_source).to eq('def test(param); end')
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it 'auto-adds required parens for a defs' do
|
|
50
|
+
new_source = autocorrect_source(cop, 'def self.test param; end')
|
|
51
|
+
expect(new_source).to eq('def self.test(param); end')
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it 'auto-adds required parens to argument lists on multiple lines' do
|
|
55
|
+
new_source = autocorrect_source(cop, ['def test one,', 'two', 'end'])
|
|
56
|
+
expect(new_source).to eq("def test(one,\ntwo)\nend")
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context 'require_no_parentheses' do
|
|
61
|
+
let(:cop_config) { { 'EnforcedStyle' => 'require_no_parentheses' } }
|
|
62
|
+
|
|
63
|
+
it 'reports an offence for def with parameters with parens' do
|
|
64
|
+
src = ['def func(a, b)',
|
|
65
|
+
'end']
|
|
66
|
+
inspect_source(cop, src)
|
|
67
|
+
expect(cop.offences.size).to eq(1)
|
|
68
|
+
expect(cop.config_to_allow_offences).to eq('EnforcedStyle' =>
|
|
69
|
+
'require_parentheses')
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'reports an offence for opposite + correct' do
|
|
73
|
+
src = ['def func(a, b)',
|
|
74
|
+
'end',
|
|
75
|
+
'def func a, b',
|
|
76
|
+
'end']
|
|
77
|
+
inspect_source(cop, src)
|
|
78
|
+
expect(cop.offences.size).to eq(1)
|
|
79
|
+
expect(cop.config_to_allow_offences).to eq('Enabled' => false)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it 'reports an offence for class def with parameters with parens' do
|
|
83
|
+
src = ['def Test.func(a, b)',
|
|
84
|
+
'end']
|
|
85
|
+
inspect_source(cop, src)
|
|
86
|
+
expect(cop.offences.size).to eq(1)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it 'reports an offence for def with no args and parens' do
|
|
90
|
+
src = ['def func()',
|
|
91
|
+
'end']
|
|
92
|
+
inspect_source(cop, src)
|
|
93
|
+
expect(cop.offences.size).to eq(1)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it 'auto-removes the parens' do
|
|
97
|
+
new_source = autocorrect_source(cop, 'def test(param); end')
|
|
98
|
+
expect(new_source).to eq('def test param; end')
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'auto-removes the parens for defs' do
|
|
102
|
+
new_source = autocorrect_source(cop, 'def self.test(param); end')
|
|
103
|
+
expect(new_source).to eq('def self.test param; end')
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|