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,127 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::EmptyLineBetweenDefs, :config do
|
|
6
|
+
subject(:cop) { described_class.new(config) }
|
|
7
|
+
let(:cop_config) { { 'AllowAdjacentOneLineDefs' => false } }
|
|
8
|
+
|
|
9
|
+
it 'finds offences in inner classes' do
|
|
10
|
+
source = ['class K',
|
|
11
|
+
' def m',
|
|
12
|
+
' end',
|
|
13
|
+
' class J',
|
|
14
|
+
' def n',
|
|
15
|
+
' end',
|
|
16
|
+
' def o',
|
|
17
|
+
' end',
|
|
18
|
+
' end',
|
|
19
|
+
' # checks something',
|
|
20
|
+
' def p',
|
|
21
|
+
' end',
|
|
22
|
+
'end']
|
|
23
|
+
inspect_source(cop, source)
|
|
24
|
+
expect(cop.offences.size).to eq(1)
|
|
25
|
+
expect(cop.offences.map(&:line).sort).to eq([7])
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Only one def, so rule about empty line *between* defs does not
|
|
29
|
+
# apply.
|
|
30
|
+
it 'accepts a def that follows a line with code' do
|
|
31
|
+
source = ['x = 0',
|
|
32
|
+
'def m',
|
|
33
|
+
'end']
|
|
34
|
+
inspect_source(cop, source)
|
|
35
|
+
expect(cop.offences).to be_empty
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Only one def, so rule about empty line *between* defs does not
|
|
39
|
+
# apply.
|
|
40
|
+
it 'accepts a def that follows code and a comment' do
|
|
41
|
+
source = [' x = 0',
|
|
42
|
+
' # 123',
|
|
43
|
+
' def m',
|
|
44
|
+
' end']
|
|
45
|
+
inspect_source(cop, source)
|
|
46
|
+
expect(cop.offences).to be_empty
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it 'accepts the first def without leading empty line in a class' do
|
|
50
|
+
source = ['class K',
|
|
51
|
+
' def m',
|
|
52
|
+
' end',
|
|
53
|
+
'end']
|
|
54
|
+
inspect_source(cop, source)
|
|
55
|
+
expect(cop.offences).to be_empty
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'accepts a def that follows an empty line and then a comment' do
|
|
59
|
+
source = ['class A',
|
|
60
|
+
' # calculates value',
|
|
61
|
+
' def m',
|
|
62
|
+
' end',
|
|
63
|
+
'',
|
|
64
|
+
' private',
|
|
65
|
+
' # calculates size',
|
|
66
|
+
' def n',
|
|
67
|
+
' end',
|
|
68
|
+
'end'
|
|
69
|
+
]
|
|
70
|
+
inspect_source(cop, source)
|
|
71
|
+
expect(cop.offences).to be_empty
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'accepts a def that is the first of a module' do
|
|
75
|
+
source = ['module Util',
|
|
76
|
+
' public',
|
|
77
|
+
' #',
|
|
78
|
+
' def html_escape(s)',
|
|
79
|
+
' end',
|
|
80
|
+
'end'
|
|
81
|
+
]
|
|
82
|
+
inspect_source(cop, source)
|
|
83
|
+
expect(cop.messages).to be_empty
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'accepts a nested def' do
|
|
87
|
+
source = ['def mock_model(*attributes)',
|
|
88
|
+
' Class.new do',
|
|
89
|
+
' def initialize(attrs)',
|
|
90
|
+
' end',
|
|
91
|
+
' end',
|
|
92
|
+
'end'
|
|
93
|
+
]
|
|
94
|
+
inspect_source(cop, source)
|
|
95
|
+
expect(cop.messages).to be_empty
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it 'registers an offence for adjacent one-liners by default' do
|
|
99
|
+
source = ['def a; end',
|
|
100
|
+
'def b; end']
|
|
101
|
+
inspect_source(cop, source)
|
|
102
|
+
expect(cop.offences.size).to eq(1)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
context 'when AllowAdjacentOneLineDefs is enabled' do
|
|
106
|
+
let(:cop_config) { { 'AllowAdjacentOneLineDefs' => true } }
|
|
107
|
+
|
|
108
|
+
it 'accepts adjacent one-liners' do
|
|
109
|
+
source = ['def a; end',
|
|
110
|
+
'def b; end']
|
|
111
|
+
inspect_source(cop, source)
|
|
112
|
+
expect(cop.offences).to be_empty
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it 'registers an offence for adjacent defs if some are multi-line' do
|
|
116
|
+
source = ['def a; end',
|
|
117
|
+
'def b; end',
|
|
118
|
+
'def c', # Not a one-liner, so this is an offence.
|
|
119
|
+
'end',
|
|
120
|
+
# Also an offence since previous was multi-line:
|
|
121
|
+
'def d; end'
|
|
122
|
+
]
|
|
123
|
+
inspect_source(cop, source)
|
|
124
|
+
expect(cop.offences.map(&:line)).to eq([3, 5])
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::EmptyLinesAroundAccessModifier do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
%w(private protected public).each do |access_modifier|
|
|
9
|
+
it "requires blank line before #{access_modifier}" do
|
|
10
|
+
inspect_source(cop,
|
|
11
|
+
['class Test',
|
|
12
|
+
' something',
|
|
13
|
+
" #{access_modifier}",
|
|
14
|
+
'',
|
|
15
|
+
' def test; end',
|
|
16
|
+
'end'])
|
|
17
|
+
expect(cop.offences.size).to eq(1)
|
|
18
|
+
expect(cop.messages)
|
|
19
|
+
.to eq(["Keep a blank line before and after #{access_modifier}."])
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'requires blank line after #{access_modifier}' do
|
|
23
|
+
inspect_source(cop,
|
|
24
|
+
['class Test',
|
|
25
|
+
' something',
|
|
26
|
+
'',
|
|
27
|
+
" #{access_modifier}",
|
|
28
|
+
' def test; end',
|
|
29
|
+
'end'])
|
|
30
|
+
expect(cop.offences.size).to eq(1)
|
|
31
|
+
expect(cop.messages)
|
|
32
|
+
.to eq(["Keep a blank line before and after #{access_modifier}."])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'accepts missing blank line when at the beginning of class/module' do
|
|
36
|
+
inspect_source(cop,
|
|
37
|
+
['class Test',
|
|
38
|
+
" #{access_modifier}",
|
|
39
|
+
'',
|
|
40
|
+
' def test; end',
|
|
41
|
+
'end'])
|
|
42
|
+
expect(cop.offences).to be_empty
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'recognizes blank lines with DOS style line endings' do
|
|
46
|
+
inspect_source(cop,
|
|
47
|
+
["class Test\r",
|
|
48
|
+
"\r",
|
|
49
|
+
" #{access_modifier}\r",
|
|
50
|
+
"\r",
|
|
51
|
+
" def test; end\r",
|
|
52
|
+
"end\r"])
|
|
53
|
+
expect(cop.offences.size).to eq(0)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::EmptyLinesAroundBody do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for method body starting with a blank' do
|
|
9
|
+
inspect_source(cop,
|
|
10
|
+
['def some_method',
|
|
11
|
+
'',
|
|
12
|
+
' do_something',
|
|
13
|
+
'end'])
|
|
14
|
+
expect(cop.offences.size).to eq(1)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The cop only registers an offence if the extra line is completely emtpy. If
|
|
18
|
+
# there is trailing whitespace, then that must be dealt with first. Having
|
|
19
|
+
# two cops registering offence for the line with only spaces would cause
|
|
20
|
+
# havoc in auto-correction.
|
|
21
|
+
it 'accepts method body starting with a line with spaces' do
|
|
22
|
+
inspect_source(cop,
|
|
23
|
+
['def some_method',
|
|
24
|
+
' ',
|
|
25
|
+
' do_something',
|
|
26
|
+
'end'])
|
|
27
|
+
expect(cop.offences).to be_empty
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'autocorrects method body starting with a blank' do
|
|
31
|
+
corrected = autocorrect_source(cop,
|
|
32
|
+
['def some_method',
|
|
33
|
+
'',
|
|
34
|
+
' do_something',
|
|
35
|
+
'end'])
|
|
36
|
+
expect(corrected).to eq ['def some_method',
|
|
37
|
+
' do_something',
|
|
38
|
+
'end'].join("\n")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'registers an offence for class method body starting with a blank' do
|
|
42
|
+
inspect_source(cop,
|
|
43
|
+
['def Test.some_method',
|
|
44
|
+
'',
|
|
45
|
+
' do_something',
|
|
46
|
+
'end'])
|
|
47
|
+
expect(cop.offences.size).to eq(1)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'autocorrects class method body starting with a blank' do
|
|
51
|
+
corrected = autocorrect_source(cop,
|
|
52
|
+
['def Test.some_method',
|
|
53
|
+
'',
|
|
54
|
+
' do_something',
|
|
55
|
+
'end'])
|
|
56
|
+
expect(corrected).to eq ['def Test.some_method',
|
|
57
|
+
' do_something',
|
|
58
|
+
'end'].join("\n")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'registers an offence for method body ending with a blank' do
|
|
62
|
+
inspect_source(cop,
|
|
63
|
+
['def some_method',
|
|
64
|
+
' do_something',
|
|
65
|
+
'',
|
|
66
|
+
'end'])
|
|
67
|
+
expect(cop.offences.size).to eq(1)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it 'registers an offence for class method body ending with a blank' do
|
|
71
|
+
inspect_source(cop,
|
|
72
|
+
['def Test.some_method',
|
|
73
|
+
' do_something',
|
|
74
|
+
'',
|
|
75
|
+
'end'])
|
|
76
|
+
expect(cop.offences.size).to eq(1)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it 'registers an offence for class body starting with a blank' do
|
|
80
|
+
inspect_source(cop,
|
|
81
|
+
['class SomeClass',
|
|
82
|
+
'',
|
|
83
|
+
' do_something',
|
|
84
|
+
'end'])
|
|
85
|
+
expect(cop.offences.size).to eq(1)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it 'autocorrects class body containing only a blank' do
|
|
89
|
+
corrected = autocorrect_source(cop,
|
|
90
|
+
['class SomeClass',
|
|
91
|
+
'',
|
|
92
|
+
'end'])
|
|
93
|
+
expect(corrected).to eq ['class SomeClass',
|
|
94
|
+
'end'].join("\n")
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'registers an offence for module body starting with a blank' do
|
|
98
|
+
inspect_source(cop,
|
|
99
|
+
['module SomeModule',
|
|
100
|
+
'',
|
|
101
|
+
' do_something',
|
|
102
|
+
'end'])
|
|
103
|
+
expect(cop.offences.size).to eq(1)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it 'registers an offence for class body ending with a blank' do
|
|
107
|
+
inspect_source(cop,
|
|
108
|
+
['class SomeClass',
|
|
109
|
+
' do_something',
|
|
110
|
+
'',
|
|
111
|
+
'end'])
|
|
112
|
+
expect(cop.offences.size).to eq(1)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it 'registers an offence for module body ending with a blank' do
|
|
116
|
+
inspect_source(cop,
|
|
117
|
+
['module SomeModule',
|
|
118
|
+
' do_something',
|
|
119
|
+
'',
|
|
120
|
+
'end'])
|
|
121
|
+
expect(cop.offences.size).to eq(1)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it 'is not fooled by single line methods' do
|
|
125
|
+
inspect_source(cop,
|
|
126
|
+
['def some_method; do_something; end',
|
|
127
|
+
'',
|
|
128
|
+
'something_else'])
|
|
129
|
+
expect(cop.offences).to be_empty
|
|
130
|
+
end
|
|
131
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::EmptyLines do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it 'registers an offence for consecutive empty lines' do
|
|
9
|
+
inspect_source(cop,
|
|
10
|
+
['test = 5', '', '', '', 'top'])
|
|
11
|
+
expect(cop.offences.size).to eq(2)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'auto-corrects consecutive empty lines' do
|
|
15
|
+
corrected = autocorrect_source(cop,
|
|
16
|
+
['test = 5', '', '', '', 'top'])
|
|
17
|
+
expect(corrected).to eq ['test = 5', '', 'top'].join("\n")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'works when there are no tokens' do
|
|
21
|
+
inspect_source(cop,
|
|
22
|
+
['#comment'])
|
|
23
|
+
expect(cop.offences).to be_empty
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'handles comments' do
|
|
27
|
+
inspect_source(cop,
|
|
28
|
+
['test', '', '#comment', 'top'])
|
|
29
|
+
expect(cop.offences).to be_empty
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'does not register an offence for empty lines in a string' do
|
|
33
|
+
inspect_source(cop, ['result = "test
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
string"'])
|
|
38
|
+
expect(cop.offences).to be_empty
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Rubocop::Cop::Style::EmptyLiteral do
|
|
6
|
+
subject(:cop) { described_class.new }
|
|
7
|
+
|
|
8
|
+
describe 'Empty Array' do
|
|
9
|
+
it 'registers an offence for Array.new()' do
|
|
10
|
+
inspect_source(cop,
|
|
11
|
+
['test = Array.new()'])
|
|
12
|
+
expect(cop.offences.size).to eq(1)
|
|
13
|
+
expect(cop.messages)
|
|
14
|
+
.to eq(['Use array literal [] instead of Array.new.'])
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'registers an offence for Array.new' do
|
|
18
|
+
inspect_source(cop,
|
|
19
|
+
['test = Array.new'])
|
|
20
|
+
expect(cop.offences.size).to eq(1)
|
|
21
|
+
expect(cop.messages)
|
|
22
|
+
.to eq(['Use array literal [] instead of Array.new.'])
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'does not register an offence for Array.new(3)' do
|
|
26
|
+
inspect_source(cop,
|
|
27
|
+
['test = Array.new(3)'])
|
|
28
|
+
expect(cop.offences).to be_empty
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'auto-corrects Array.new to []' do
|
|
32
|
+
new_source = autocorrect_source(cop, 'test = Array.new')
|
|
33
|
+
expect(new_source).to eq('test = []')
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'Empty Hash' do
|
|
38
|
+
it 'registers an offence for Hash.new()' do
|
|
39
|
+
inspect_source(cop,
|
|
40
|
+
['test = Hash.new()'])
|
|
41
|
+
expect(cop.offences.size).to eq(1)
|
|
42
|
+
expect(cop.messages)
|
|
43
|
+
.to eq(['Use hash literal {} instead of Hash.new.'])
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it 'registers an offence for Hash.new' do
|
|
47
|
+
inspect_source(cop,
|
|
48
|
+
['test = Hash.new'])
|
|
49
|
+
expect(cop.offences.size).to eq(1)
|
|
50
|
+
expect(cop.messages)
|
|
51
|
+
.to eq(['Use hash literal {} instead of Hash.new.'])
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it 'does not register an offence for Hash.new(3)' do
|
|
55
|
+
inspect_source(cop,
|
|
56
|
+
['test = Hash.new(3)'])
|
|
57
|
+
expect(cop.offences).to be_empty
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'does not register an offence for Hash.new { block }' do
|
|
61
|
+
inspect_source(cop,
|
|
62
|
+
['test = Hash.new { block }'])
|
|
63
|
+
expect(cop.offences).to be_empty
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it 'auto-corrects Hash.new to {}' do
|
|
67
|
+
new_source = autocorrect_source(cop, 'test = Hash.new')
|
|
68
|
+
expect(new_source).to eq('test = {}')
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe 'Empty String' do
|
|
73
|
+
it 'registers an offence for String.new()' do
|
|
74
|
+
inspect_source(cop,
|
|
75
|
+
['test = String.new()'])
|
|
76
|
+
expect(cop.offences.size).to eq(1)
|
|
77
|
+
expect(cop.messages)
|
|
78
|
+
.to eq(["Use string literal '' instead of String.new."])
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'registers an offence for String.new' do
|
|
82
|
+
inspect_source(cop,
|
|
83
|
+
['test = String.new'])
|
|
84
|
+
expect(cop.offences.size).to eq(1)
|
|
85
|
+
expect(cop.messages)
|
|
86
|
+
.to eq(["Use string literal '' instead of String.new."])
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it 'does not register an offence for String.new("top")' do
|
|
90
|
+
inspect_source(cop,
|
|
91
|
+
['test = String.new("top")'])
|
|
92
|
+
expect(cop.offences).to be_empty
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it 'auto-corrects String.new to empty string literal' do
|
|
96
|
+
new_source = autocorrect_source(cop, 'test = String.new')
|
|
97
|
+
expect(new_source).to eq("test = ''")
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|