sabat-rubocop 0.9.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.
- data/.gitignore +50 -0
- data/.rspec +1 -0
- data/.rubocop.yml +7 -0
- data/.travis.yml +7 -0
- data/.yardopts +2 -0
- data/CHANGELOG.md +268 -0
- data/CONTRIBUTING.md +16 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +20 -0
- data/README.md +324 -0
- data/Rakefile +29 -0
- data/bin/rubocop +22 -0
- data/config/default.yml +58 -0
- data/config/disabled.yml +5 -0
- data/config/enabled.yml +403 -0
- data/lib/rubocop.rb +116 -0
- data/lib/rubocop/cli.rb +407 -0
- data/lib/rubocop/config.rb +250 -0
- data/lib/rubocop/config_store.rb +39 -0
- data/lib/rubocop/cop/cop.rb +138 -0
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +54 -0
- data/lib/rubocop/cop/lint/end_alignment.rb +189 -0
- data/lib/rubocop/cop/lint/end_in_method.rb +30 -0
- data/lib/rubocop/cop/lint/ensure_return.rb +22 -0
- data/lib/rubocop/cop/lint/eval.rb +22 -0
- data/lib/rubocop/cop/lint/handle_exceptions.rb +20 -0
- data/lib/rubocop/cop/lint/literal_in_condition.rb +81 -0
- data/lib/rubocop/cop/lint/loop.rb +29 -0
- data/lib/rubocop/cop/lint/rescue_exception.rb +29 -0
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +34 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +35 -0
- data/lib/rubocop/cop/lint/unused_local_variable.rb +32 -0
- data/lib/rubocop/cop/lint/void.rb +58 -0
- data/lib/rubocop/cop/offence.rb +136 -0
- data/lib/rubocop/cop/rails/validation.rb +30 -0
- data/lib/rubocop/cop/style/access_control.rb +58 -0
- data/lib/rubocop/cop/style/alias.rb +28 -0
- data/lib/rubocop/cop/style/align_parameters.rb +39 -0
- data/lib/rubocop/cop/style/and_or.rb +45 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +21 -0
- data/lib/rubocop/cop/style/ascii_identifiers.rb +22 -0
- data/lib/rubocop/cop/style/attr.rb +20 -0
- data/lib/rubocop/cop/style/avoid_class_vars.rb +20 -0
- data/lib/rubocop/cop/style/avoid_for.rb +18 -0
- data/lib/rubocop/cop/style/avoid_global_vars.rb +65 -0
- data/lib/rubocop/cop/style/avoid_perl_backrefs.rb +21 -0
- data/lib/rubocop/cop/style/avoid_perlisms.rb +50 -0
- data/lib/rubocop/cop/style/begin_block.rb +18 -0
- data/lib/rubocop/cop/style/block_comments.rb +20 -0
- data/lib/rubocop/cop/style/block_nesting.rb +47 -0
- data/lib/rubocop/cop/style/blocks.rb +27 -0
- data/lib/rubocop/cop/style/case_equality.rb +22 -0
- data/lib/rubocop/cop/style/case_indentation.rb +28 -0
- data/lib/rubocop/cop/style/character_literal.rb +37 -0
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +33 -0
- data/lib/rubocop/cop/style/class_methods.rb +22 -0
- data/lib/rubocop/cop/style/collection_methods.rb +56 -0
- data/lib/rubocop/cop/style/colon_method_call.rb +29 -0
- data/lib/rubocop/cop/style/constant_name.rb +31 -0
- data/lib/rubocop/cop/style/def_parentheses.rb +70 -0
- data/lib/rubocop/cop/style/documentation.rb +58 -0
- data/lib/rubocop/cop/style/dot_position.rb +25 -0
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +26 -0
- data/lib/rubocop/cop/style/empty_lines.rb +40 -0
- data/lib/rubocop/cop/style/empty_literal.rb +53 -0
- data/lib/rubocop/cop/style/encoding.rb +29 -0
- data/lib/rubocop/cop/style/end_block.rb +18 -0
- data/lib/rubocop/cop/style/end_of_line.rb +23 -0
- data/lib/rubocop/cop/style/favor_join.rb +29 -0
- data/lib/rubocop/cop/style/favor_modifier.rb +118 -0
- data/lib/rubocop/cop/style/favor_sprintf.rb +28 -0
- data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +54 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +47 -0
- data/lib/rubocop/cop/style/if_then_else.rb +29 -0
- data/lib/rubocop/cop/style/if_with_semicolon.rb +20 -0
- data/lib/rubocop/cop/style/lambda.rb +47 -0
- data/lib/rubocop/cop/style/leading_comment_space.rb +25 -0
- data/lib/rubocop/cop/style/line_continuation.rb +26 -0
- data/lib/rubocop/cop/style/line_length.rb +30 -0
- data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +61 -0
- data/lib/rubocop/cop/style/method_call_parentheses.rb +22 -0
- data/lib/rubocop/cop/style/method_length.rb +57 -0
- data/lib/rubocop/cop/style/multiline_if_then.rb +47 -0
- data/lib/rubocop/cop/style/not.rb +24 -0
- data/lib/rubocop/cop/style/numeric_literals.rb +25 -0
- data/lib/rubocop/cop/style/one_line_conditional.rb +20 -0
- data/lib/rubocop/cop/style/op_method.rb +29 -0
- data/lib/rubocop/cop/style/parameter_lists.rb +42 -0
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +42 -0
- data/lib/rubocop/cop/style/proc.rb +30 -0
- data/lib/rubocop/cop/style/reduce_arguments.rb +34 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +39 -0
- data/lib/rubocop/cop/style/rescue_modifier.rb +55 -0
- data/lib/rubocop/cop/style/semicolon.rb +51 -0
- data/lib/rubocop/cop/style/single_line_methods.rb +48 -0
- data/lib/rubocop/cop/style/space_after_comma_etc.rb +69 -0
- data/lib/rubocop/cop/style/space_after_control_keyword.rb +32 -0
- data/lib/rubocop/cop/style/string_literals.rb +36 -0
- data/lib/rubocop/cop/style/surrounding_space.rb +314 -0
- data/lib/rubocop/cop/style/symbol_array.rb +31 -0
- data/lib/rubocop/cop/style/symbol_name.rb +27 -0
- data/lib/rubocop/cop/style/tab.rb +25 -0
- data/lib/rubocop/cop/style/ternary_operator.rb +49 -0
- data/lib/rubocop/cop/style/trailing_whitespace.rb +24 -0
- data/lib/rubocop/cop/style/trivial_accessors.rb +32 -0
- data/lib/rubocop/cop/style/unless_else.rb +26 -0
- data/lib/rubocop/cop/style/variable_interpolation.rb +32 -0
- data/lib/rubocop/cop/style/when_then.rb +25 -0
- data/lib/rubocop/cop/style/while_until_do.rb +45 -0
- data/lib/rubocop/cop/style/word_array.rb +44 -0
- data/lib/rubocop/cop/util.rb +27 -0
- data/lib/rubocop/cop/variable_inspector.rb +280 -0
- data/lib/rubocop/formatter/base_formatter.rb +119 -0
- data/lib/rubocop/formatter/clang_style_formatter.rb +21 -0
- data/lib/rubocop/formatter/emacs_style_formatter.rb +17 -0
- data/lib/rubocop/formatter/formatter_set.rb +77 -0
- data/lib/rubocop/formatter/json_formatter.rb +76 -0
- data/lib/rubocop/formatter/progress_formatter.rb +63 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +62 -0
- data/lib/rubocop/version.rb +21 -0
- data/rubocop.gemspec +36 -0
- data/spec/.rubocop.yml +5 -0
- data/spec/project_spec.rb +24 -0
- data/spec/rubocop/cli_spec.rb +906 -0
- data/spec/rubocop/config_spec.rb +470 -0
- data/spec/rubocop/config_store_spec.rb +66 -0
- data/spec/rubocop/cops/cop_spec.rb +38 -0
- data/spec/rubocop/cops/lint/assignment_in_condition_spec.rb +111 -0
- data/spec/rubocop/cops/lint/end_alignment_spec.rb +333 -0
- data/spec/rubocop/cops/lint/end_in_method_spec.rb +35 -0
- data/spec/rubocop/cops/lint/ensure_return_spec.rb +37 -0
- data/spec/rubocop/cops/lint/eval_spec.rb +41 -0
- data/spec/rubocop/cops/lint/handle_exceptions_spec.rb +36 -0
- data/spec/rubocop/cops/lint/literal_in_condition_spec.rb +42 -0
- data/spec/rubocop/cops/lint/loop_spec.rb +33 -0
- data/spec/rubocop/cops/lint/rescue_exception_spec.rb +127 -0
- data/spec/rubocop/cops/lint/shadowing_outer_local_variable_spec.rb +243 -0
- data/spec/rubocop/cops/lint/unreachable_code_spec.rb +69 -0
- data/spec/rubocop/cops/lint/unused_local_variable_spec.rb +497 -0
- data/spec/rubocop/cops/lint/void_spec.rb +63 -0
- data/spec/rubocop/cops/offence_spec.rb +133 -0
- data/spec/rubocop/cops/rails/validation_spec.rb +27 -0
- data/spec/rubocop/cops/style/access_control_spec.rb +142 -0
- data/spec/rubocop/cops/style/alias_spec.rb +47 -0
- data/spec/rubocop/cops/style/align_parameters_spec.rb +199 -0
- data/spec/rubocop/cops/style/and_or_spec.rb +39 -0
- data/spec/rubocop/cops/style/ascii_comments_spec.rb +28 -0
- data/spec/rubocop/cops/style/ascii_identifiers_spec.rb +28 -0
- data/spec/rubocop/cops/style/attr_spec.rb +20 -0
- data/spec/rubocop/cops/style/avoid_class_vars_spec.rb +27 -0
- data/spec/rubocop/cops/style/avoid_for_spec.rb +37 -0
- data/spec/rubocop/cops/style/avoid_global_vars_spec.rb +34 -0
- data/spec/rubocop/cops/style/avoid_perl_backrefs_spec.rb +20 -0
- data/spec/rubocop/cops/style/avoid_perlisms_spec.rb +47 -0
- data/spec/rubocop/cops/style/begin_block_spec.rb +19 -0
- data/spec/rubocop/cops/style/block_comments_spec.rb +27 -0
- data/spec/rubocop/cops/style/block_nesting_spec.rb +159 -0
- data/spec/rubocop/cops/style/blocks_spec.rb +35 -0
- data/spec/rubocop/cops/style/case_equality_spec.rb +18 -0
- data/spec/rubocop/cops/style/case_indentation_spec.rb +88 -0
- data/spec/rubocop/cops/style/character_literal_spec.rb +28 -0
- data/spec/rubocop/cops/style/class_and_module_camel_case_spec.rb +46 -0
- data/spec/rubocop/cops/style/class_methods_spec.rb +51 -0
- data/spec/rubocop/cops/style/collection_methods_spec.rb +41 -0
- data/spec/rubocop/cops/style/colon_method_call_spec.rb +55 -0
- data/spec/rubocop/cops/style/constant_name_spec.rb +56 -0
- data/spec/rubocop/cops/style/def_with_parentheses_spec.rb +40 -0
- data/spec/rubocop/cops/style/def_without_parentheses_spec.rb +34 -0
- data/spec/rubocop/cops/style/documentation_spec.rb +79 -0
- data/spec/rubocop/cops/style/dot_position_spec.rb +30 -0
- data/spec/rubocop/cops/style/empty_line_between_defs_spec.rb +85 -0
- data/spec/rubocop/cops/style/empty_lines_spec.rb +40 -0
- data/spec/rubocop/cops/style/empty_literal_spec.rb +91 -0
- data/spec/rubocop/cops/style/encoding_spec.rb +49 -0
- data/spec/rubocop/cops/style/end_block_spec.rb +19 -0
- data/spec/rubocop/cops/style/end_of_line_spec.rb +25 -0
- data/spec/rubocop/cops/style/favor_join_spec.rb +37 -0
- data/spec/rubocop/cops/style/favor_modifier_spec.rb +160 -0
- data/spec/rubocop/cops/style/favor_sprintf_spec.rb +53 -0
- data/spec/rubocop/cops/style/favor_unless_over_negated_if_spec.rb +64 -0
- data/spec/rubocop/cops/style/favor_until_over_negated_while_spec.rb +47 -0
- data/spec/rubocop/cops/style/hash_syntax_spec.rb +51 -0
- data/spec/rubocop/cops/style/if_with_semicolon_spec.rb +25 -0
- data/spec/rubocop/cops/style/lambda_spec.rb +45 -0
- data/spec/rubocop/cops/style/leading_comment_space_spec.rb +65 -0
- data/spec/rubocop/cops/style/line_continuation_spec.rb +26 -0
- data/spec/rubocop/cops/style/line_length_spec.rb +25 -0
- data/spec/rubocop/cops/style/method_and_variable_snake_case_spec.rb +95 -0
- data/spec/rubocop/cops/style/method_call_parentheses_spec.rb +25 -0
- data/spec/rubocop/cops/style/method_length_spec.rb +151 -0
- data/spec/rubocop/cops/style/multiline_if_then_spec.rb +97 -0
- data/spec/rubocop/cops/style/not_spec.rb +28 -0
- data/spec/rubocop/cops/style/numeric_literals_spec.rb +51 -0
- data/spec/rubocop/cops/style/one_line_conditional_spec.rb +18 -0
- data/spec/rubocop/cops/style/op_method_spec.rb +80 -0
- data/spec/rubocop/cops/style/parameter_lists_spec.rb +49 -0
- data/spec/rubocop/cops/style/parentheses_around_condition_spec.rb +59 -0
- data/spec/rubocop/cops/style/proc_spec.rb +28 -0
- data/spec/rubocop/cops/style/reduce_arguments_spec.rb +59 -0
- data/spec/rubocop/cops/style/regexp_literal_spec.rb +83 -0
- data/spec/rubocop/cops/style/rescue_modifier_spec.rb +122 -0
- data/spec/rubocop/cops/style/semicolon_spec.rb +95 -0
- data/spec/rubocop/cops/style/single_line_methods_spec.rb +54 -0
- data/spec/rubocop/cops/style/space_after_colon_spec.rb +29 -0
- data/spec/rubocop/cops/style/space_after_comma_spec.rb +31 -0
- data/spec/rubocop/cops/style/space_after_control_keyword_spec.rb +69 -0
- data/spec/rubocop/cops/style/space_after_semicolon_spec.rb +24 -0
- data/spec/rubocop/cops/style/space_around_braces_spec.rb +49 -0
- data/spec/rubocop/cops/style/space_around_equals_in_default_parameter_spec.rb +34 -0
- data/spec/rubocop/cops/style/space_around_operators_spec.rb +216 -0
- data/spec/rubocop/cops/style/space_inside_brackets_spec.rb +51 -0
- data/spec/rubocop/cops/style/space_inside_hash_literal_braces_spec.rb +99 -0
- data/spec/rubocop/cops/style/space_inside_parens_spec.rb +33 -0
- data/spec/rubocop/cops/style/string_literals_spec.rb +62 -0
- data/spec/rubocop/cops/style/symbol_array_spec.rb +45 -0
- data/spec/rubocop/cops/style/symbol_name_spec.rb +122 -0
- data/spec/rubocop/cops/style/tab_spec.rb +23 -0
- data/spec/rubocop/cops/style/ternary_operator_spec.rb +42 -0
- data/spec/rubocop/cops/style/trailing_whitespace_spec.rb +29 -0
- data/spec/rubocop/cops/style/trivial_accessors_spec.rb +338 -0
- data/spec/rubocop/cops/style/unless_else_spec.rb +31 -0
- data/spec/rubocop/cops/style/variable_interpolation_spec.rb +53 -0
- data/spec/rubocop/cops/style/when_then_spec.rb +40 -0
- data/spec/rubocop/cops/style/while_until_do_spec.rb +47 -0
- data/spec/rubocop/cops/style/word_array_spec.rb +61 -0
- data/spec/rubocop/cops/variable_inspector_spec.rb +374 -0
- data/spec/rubocop/formatter/base_formatter_spec.rb +190 -0
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +70 -0
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +32 -0
- data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
- data/spec/rubocop/formatter/json_formatter_spec.rb +142 -0
- data/spec/rubocop/formatter/progress_formatter_spec.rb +196 -0
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +74 -0
- data/spec/spec_helper.rb +92 -0
- data/spec/support/file_helper.rb +21 -0
- data/spec/support/isolated_environment.rb +27 -0
- data/spec/support/mri_syntax_checker.rb +69 -0
- data/spec/support/shared_examples.rb +33 -0
- metadata +517 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe Blocks do
|
9
|
+
let(:blocks) { Blocks.new }
|
10
|
+
|
11
|
+
it 'registers an offence for a multiline block with braces' do
|
12
|
+
inspect_source(blocks, ['each { |x|',
|
13
|
+
'}'])
|
14
|
+
expect(blocks.messages).to eq([Blocks::MULTI_LINE_MSG])
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'accepts a multiline block with do-end' do
|
18
|
+
inspect_source(blocks, ['each do |x|',
|
19
|
+
'end'])
|
20
|
+
expect(blocks.offences.map(&:message)).to be_empty
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'registers an offence for a single line block with do-end' do
|
24
|
+
inspect_source(blocks, ['each do |x| end'])
|
25
|
+
expect(blocks.messages).to eq([Blocks::SINGLE_LINE_MSG])
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'accepts a single line block with braces' do
|
29
|
+
inspect_source(blocks, ['each { |x| }'])
|
30
|
+
expect(blocks.offences.map(&:message)).to be_empty
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe CaseEquality do
|
9
|
+
let(:ce) { CaseEquality.new }
|
10
|
+
|
11
|
+
it 'registers an offence for ===' do
|
12
|
+
inspect_source(ce, ['Array === var'])
|
13
|
+
expect(ce.offences.size).to eq(1)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe CaseIndentation do
|
9
|
+
let(:ind) { CaseIndentation.new }
|
10
|
+
|
11
|
+
it "registers an offence for a when clause that's deeper than case" do
|
12
|
+
source = ['case a',
|
13
|
+
' when 0 then return',
|
14
|
+
' case b',
|
15
|
+
' when 1 then return',
|
16
|
+
' end',
|
17
|
+
'end']
|
18
|
+
inspect_source(ind, source)
|
19
|
+
expect(ind.offences.map(&:message)).to eq(
|
20
|
+
['Indent when as deep as case.'] * 2)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "accepts a when clause that's equally indented with case" do
|
24
|
+
source = ['y = case a',
|
25
|
+
' when 0 then break',
|
26
|
+
' when 0 then return',
|
27
|
+
' z = case b',
|
28
|
+
' when 1 then return',
|
29
|
+
' when 1 then break',
|
30
|
+
' end',
|
31
|
+
' end',
|
32
|
+
'case c',
|
33
|
+
'when 2 then encoding',
|
34
|
+
'end',
|
35
|
+
'']
|
36
|
+
inspect_source(ind, source)
|
37
|
+
expect(ind.offences).to be_empty
|
38
|
+
end
|
39
|
+
|
40
|
+
it "doesn't get confused by strings with case in them" do
|
41
|
+
source = ['a = "case"',
|
42
|
+
'case x',
|
43
|
+
'when 0',
|
44
|
+
'end',
|
45
|
+
'']
|
46
|
+
inspect_source(ind, source)
|
47
|
+
expect(ind.offences.map(&:message)).to be_empty
|
48
|
+
end
|
49
|
+
|
50
|
+
it "doesn't get confused by symbols named case or when" do
|
51
|
+
source = ['KEYWORDS = { :case => true, :when => true }',
|
52
|
+
'case type',
|
53
|
+
'when 0',
|
54
|
+
' ParameterNode',
|
55
|
+
'when 1',
|
56
|
+
' MethodCallNode',
|
57
|
+
'end',
|
58
|
+
'']
|
59
|
+
inspect_source(ind, source)
|
60
|
+
expect(ind.offences.map(&:message)).to be_empty
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'accepts correctly indented whens in complex combinations' do
|
64
|
+
source = ['each {',
|
65
|
+
' case state',
|
66
|
+
' when 0',
|
67
|
+
' case name',
|
68
|
+
' when :a',
|
69
|
+
' end',
|
70
|
+
' when 1',
|
71
|
+
' loop {',
|
72
|
+
' case name',
|
73
|
+
' when :b',
|
74
|
+
' end',
|
75
|
+
' }',
|
76
|
+
' end',
|
77
|
+
'}',
|
78
|
+
'case s',
|
79
|
+
'when Array',
|
80
|
+
'end',
|
81
|
+
'']
|
82
|
+
inspect_source(ind, source)
|
83
|
+
expect(ind.offences.map(&:message)).to be_empty
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe CharacterLiteral do
|
9
|
+
let(:cop) { CharacterLiteral.new }
|
10
|
+
|
11
|
+
it 'registers an offence for character literals' do
|
12
|
+
inspect_source(cop, ['x = ?x'])
|
13
|
+
expect(cop.offences.size).to eq(1)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'registers an offence for literals like \n' do
|
17
|
+
inspect_source(cop, ['x = ?\n'])
|
18
|
+
expect(cop.offences.size).to eq(1)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'accepts literals like ?\C-\M-d' do
|
22
|
+
inspect_source(cop, ['x = ?\C-\M-d'])
|
23
|
+
expect(cop.offences).to be_empty
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe ClassAndModuleCamelCase do
|
9
|
+
let(:camel_case) { ClassAndModuleCamelCase.new }
|
10
|
+
|
11
|
+
it 'registers an offence for underscore in class and module name' do
|
12
|
+
inspect_source(camel_case,
|
13
|
+
['class My_Class',
|
14
|
+
'end',
|
15
|
+
'',
|
16
|
+
'module My_Module',
|
17
|
+
'end',
|
18
|
+
])
|
19
|
+
expect(camel_case.offences.size).to eq(2)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'is not fooled by qualified names' do
|
23
|
+
inspect_source(camel_case,
|
24
|
+
['class Top::My_Class',
|
25
|
+
'end',
|
26
|
+
'',
|
27
|
+
'module My_Module::Ala',
|
28
|
+
'end',
|
29
|
+
])
|
30
|
+
expect(camel_case.offences.size).to eq(2)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'accepts CamelCase names' do
|
34
|
+
inspect_source(camel_case,
|
35
|
+
['class MyClass',
|
36
|
+
'end',
|
37
|
+
'',
|
38
|
+
'module Mine',
|
39
|
+
'end',
|
40
|
+
])
|
41
|
+
expect(camel_case.offences).to be_empty
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe ClassMethods do
|
9
|
+
let(:cm) { ClassMethods.new }
|
10
|
+
|
11
|
+
it 'registers an offence for methods using a class name' do
|
12
|
+
inspect_source(cm,
|
13
|
+
['class Test',
|
14
|
+
' def Test.some_method',
|
15
|
+
' do_something',
|
16
|
+
' end',
|
17
|
+
'end'])
|
18
|
+
expect(cm.offences.size).to eq(1)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'registers an offence for methods using a module name' do
|
22
|
+
inspect_source(cm,
|
23
|
+
['module Test',
|
24
|
+
' def Test.some_method',
|
25
|
+
' do_something',
|
26
|
+
' end',
|
27
|
+
'end'])
|
28
|
+
expect(cm.offences.size).to eq(1)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not register an offence for methods using self' do
|
32
|
+
inspect_source(cm,
|
33
|
+
['module Test',
|
34
|
+
' def self.some_method',
|
35
|
+
' do_something',
|
36
|
+
' end',
|
37
|
+
'end'])
|
38
|
+
expect(cm.offences).to be_empty
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'does not register an offence outside class/module bodies' do
|
42
|
+
inspect_source(cm,
|
43
|
+
['def self.some_method',
|
44
|
+
' do_something',
|
45
|
+
'end'])
|
46
|
+
expect(cm.offences).to be_empty
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe CollectionMethods do
|
9
|
+
let(:cop) { CollectionMethods.new }
|
10
|
+
|
11
|
+
CollectionMethods::PREFERRED_METHODS.keys.each do |method|
|
12
|
+
it "registers an offence for #{method} with block" do
|
13
|
+
inspect_source(cop, ["[1, 2, 3].#{method} { |e| e + 1 }"])
|
14
|
+
expect(cop.offences.size).to eq(1)
|
15
|
+
preferred_method = CollectionMethods::PREFERRED_METHODS[method]
|
16
|
+
expect(cop.messages)
|
17
|
+
.to eq(["Prefer #{preferred_method} over #{method}."])
|
18
|
+
end
|
19
|
+
|
20
|
+
it "registers an offence for #{method} with proc param" do
|
21
|
+
inspect_source(cop, ["[1, 2, 3].#{method}(&:test)"])
|
22
|
+
expect(cop.offences.size).to eq(1)
|
23
|
+
preferred_method = CollectionMethods::PREFERRED_METHODS[method]
|
24
|
+
expect(cop.messages)
|
25
|
+
.to eq(["Prefer #{preferred_method} over #{method}."])
|
26
|
+
end
|
27
|
+
|
28
|
+
it "accepts #{method} with more than 1 param" do
|
29
|
+
inspect_source(cop, ["[1, 2, 3].#{method}(other, &:test)"])
|
30
|
+
expect(cop.offences).to be_empty
|
31
|
+
end
|
32
|
+
|
33
|
+
it "accepts #{method} without a block" do
|
34
|
+
inspect_source(cop, ["[1, 2, 3].#{method}"])
|
35
|
+
expect(cop.offences).to be_empty
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe ColonMethodCall do
|
9
|
+
let(:smc) { ColonMethodCall.new }
|
10
|
+
|
11
|
+
it 'registers an offence for instance method call' do
|
12
|
+
inspect_source(smc,
|
13
|
+
['test::method_name'])
|
14
|
+
expect(smc.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'registers an offence for instance method call with arg' do
|
18
|
+
inspect_source(smc,
|
19
|
+
['test::method_name(arg)'])
|
20
|
+
expect(smc.offences.size).to eq(1)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'registers an offence for class method call' do
|
24
|
+
inspect_source(smc,
|
25
|
+
['Class::method_name'])
|
26
|
+
expect(smc.offences.size).to eq(1)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'registers an offence for class method call with arg' do
|
30
|
+
inspect_source(smc,
|
31
|
+
['Class::method_name(arg, arg2)'])
|
32
|
+
expect(smc.offences.size).to eq(1)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'does not register an offence for constant access' do
|
36
|
+
inspect_source(smc,
|
37
|
+
['Tip::Top::SOME_CONST'])
|
38
|
+
expect(smc.offences).to be_empty
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'does not register an offence for nested class' do
|
42
|
+
inspect_source(smc,
|
43
|
+
['Tip::Top.some_method'])
|
44
|
+
expect(smc.offences).to be_empty
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'does not register an offence for op methods' do
|
48
|
+
inspect_source(smc,
|
49
|
+
['Tip::Top.some_method[3]'])
|
50
|
+
expect(smc.offences).to be_empty
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe ConstantName do
|
9
|
+
let(:const) { ConstantName.new }
|
10
|
+
|
11
|
+
it 'registers an offence for camel case in const name' do
|
12
|
+
inspect_source(const,
|
13
|
+
['TopCase = 5'])
|
14
|
+
expect(const.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'registers offences for camel case in multiple const assignment' do
|
18
|
+
inspect_source(const,
|
19
|
+
['TopCase, Test2, TEST_3 = 5, 6, 7'])
|
20
|
+
expect(const.offences.size).to eq(2)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'registers an offence for snake case in const name' do
|
24
|
+
inspect_source(const,
|
25
|
+
['TOP_test = 5'])
|
26
|
+
expect(const.offences.size).to eq(1)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'allows screaming snake case in const name' do
|
30
|
+
inspect_source(const,
|
31
|
+
['TOP_TEST = 5'])
|
32
|
+
expect(const.offences).to be_empty
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'allows screaming snake case in multiple const assignment' do
|
36
|
+
inspect_source(const,
|
37
|
+
['TOP_TEST, TEST_2 = 5, 6'])
|
38
|
+
expect(const.offences).to be_empty
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'does not check names if rhs is a method call' do
|
42
|
+
inspect_source(const,
|
43
|
+
['AnythingGoes = test'])
|
44
|
+
expect(const.offences).to be_empty
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'checks qualified const names' do
|
48
|
+
inspect_source(const,
|
49
|
+
['::AnythingGoes = 30',
|
50
|
+
'a::Bar_foo = 10'])
|
51
|
+
expect(const.offences.size).to eq(2)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe DefWithParentheses do
|
9
|
+
let(:def_par) { DefWithParentheses.new }
|
10
|
+
|
11
|
+
it 'reports an offence for def with empty parens' do
|
12
|
+
src = ['def func()',
|
13
|
+
'end']
|
14
|
+
inspect_source(def_par, src)
|
15
|
+
expect(def_par.offences.size).to eq(1)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'reports an offence for class def with empty parens' do
|
19
|
+
src = ['def Test.func()',
|
20
|
+
'end']
|
21
|
+
inspect_source(def_par, src)
|
22
|
+
expect(def_par.offences.size).to eq(1)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'accepts def with arg and parens' do
|
26
|
+
src = ['def func(a)',
|
27
|
+
'end']
|
28
|
+
inspect_source(def_par, src)
|
29
|
+
expect(def_par.offences).to be_empty
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'accepts empty parentheses in one liners' do
|
33
|
+
src = ["def to_s() join '/' end"]
|
34
|
+
inspect_source(def_par, src)
|
35
|
+
expect(def_par.offences).to be_empty
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|