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,65 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe LeadingCommentSpace do
|
9
|
+
let(:lcs) { LeadingCommentSpace.new }
|
10
|
+
|
11
|
+
it 'registers an offence for comment without leading space' do
|
12
|
+
inspect_source(lcs,
|
13
|
+
['#missing space'])
|
14
|
+
expect(lcs.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'does not register an offence for # followed by no text' do
|
18
|
+
inspect_source(lcs,
|
19
|
+
['#'])
|
20
|
+
expect(lcs.offences).to be_empty
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'does not register an offence for more than one space' do
|
24
|
+
inspect_source(lcs,
|
25
|
+
['# heavily indented'])
|
26
|
+
expect(lcs.offences).to be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'does not register an offence for more than one #' do
|
30
|
+
inspect_source(lcs,
|
31
|
+
['###### heavily indented'])
|
32
|
+
expect(lcs.offences).to be_empty
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'does not register an offence for only #s' do
|
36
|
+
inspect_source(lcs,
|
37
|
+
['######'])
|
38
|
+
expect(lcs.offences).to be_empty
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'does not register an offence for #! on first line' do
|
42
|
+
inspect_source(lcs,
|
43
|
+
['#!/usr/bin/ruby',
|
44
|
+
'test'])
|
45
|
+
expect(lcs.offences).to be_empty
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'registers an offence for #! after the first line' do
|
49
|
+
inspect_source(lcs,
|
50
|
+
['test', '#!/usr/bin/ruby'])
|
51
|
+
expect(lcs.offences.size).to eq(1)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'accepts rdoc syntax' do
|
55
|
+
inspect_source(lcs,
|
56
|
+
['#++',
|
57
|
+
'#--',
|
58
|
+
'#:nodoc:'])
|
59
|
+
|
60
|
+
expect(lcs.offences).to be_empty
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe LineContinuation do
|
9
|
+
let(:lc) { LineContinuation.new }
|
10
|
+
|
11
|
+
it 'registers an offence for line continuation char' do
|
12
|
+
inspect_source(lc,
|
13
|
+
['test = 5 \\', '+ 5'])
|
14
|
+
expect(lc.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'does not register an offence for cont char in a string' do
|
18
|
+
inspect_source(lc,
|
19
|
+
['result = "test string\\\n"',
|
20
|
+
'more'])
|
21
|
+
expect(lc.offences).to be_empty
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe LineLength do
|
9
|
+
let(:ll) { LineLength.new }
|
10
|
+
before { LineLength.config = { 'Max' => 79 } }
|
11
|
+
|
12
|
+
it "registers an offence for a line that's 80 characters wide" do
|
13
|
+
inspect_source(ll, ['#' * 80])
|
14
|
+
expect(ll.offences.size).to eq(1)
|
15
|
+
expect(ll.offences.first.message).to eq('Line is too long. [80/79]')
|
16
|
+
end
|
17
|
+
|
18
|
+
it "accepts a line that's 79 characters wide" do
|
19
|
+
inspect_source(ll, ['#' * 79])
|
20
|
+
expect(ll.offences).to be_empty
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe MethodAndVariableSnakeCase do
|
9
|
+
let(:snake_case) { MethodAndVariableSnakeCase.new }
|
10
|
+
|
11
|
+
it 'registers an offence for camel case in instance method name' do
|
12
|
+
inspect_source(snake_case,
|
13
|
+
['def myMethod',
|
14
|
+
' # ...',
|
15
|
+
'end',
|
16
|
+
])
|
17
|
+
expect(snake_case.offences.map(&:message)).to eq(
|
18
|
+
['Use snake_case for methods and variables.'])
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'registers an offence for camel case in singleton method name' do
|
22
|
+
inspect_source(snake_case,
|
23
|
+
['def self.myMethod',
|
24
|
+
' # ...',
|
25
|
+
'end',
|
26
|
+
])
|
27
|
+
expect(snake_case.offences.map(&:message)).to eq(
|
28
|
+
['Use snake_case for methods and variables.'])
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'registers an offence for camel case in local variable name' do
|
32
|
+
inspect_source(snake_case, ['myLocal = 1'])
|
33
|
+
expect(snake_case.offences.map(&:message)).to eq(
|
34
|
+
['Use snake_case for methods and variables.'])
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'registers an offence for camel case in instance variable name' do
|
38
|
+
inspect_source(snake_case, ['@myAttribute = 3'])
|
39
|
+
expect(snake_case.offences.map(&:message)).to eq(
|
40
|
+
['Use snake_case for methods and variables.'])
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'registers an offence for camel case in setter name' do
|
44
|
+
inspect_source(snake_case, ['self.mySetter = 2'])
|
45
|
+
expect(snake_case.offences.map(&:message)).to eq(
|
46
|
+
['Use snake_case for methods and variables.'])
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'registers an offence for capitalized camel case' do
|
50
|
+
inspect_source(snake_case,
|
51
|
+
['def MyMethod',
|
52
|
+
'end',
|
53
|
+
])
|
54
|
+
expect(snake_case.offences.map(&:message)).to eq(
|
55
|
+
['Use snake_case for methods and variables.'])
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'accepts snake case in names' do
|
59
|
+
inspect_source(snake_case,
|
60
|
+
['def my_method',
|
61
|
+
' my_local_html = 1',
|
62
|
+
' self.my_setter = 2',
|
63
|
+
' @my_attribute = 3',
|
64
|
+
'end',
|
65
|
+
])
|
66
|
+
expect(snake_case.offences.map(&:message)).to be_empty
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'registers an offence for mixed snake case and camel case' do
|
70
|
+
inspect_source(snake_case,
|
71
|
+
['def visit_Arel_Nodes_SelectStatement',
|
72
|
+
'end'])
|
73
|
+
expect(snake_case.offences.map(&:message)).to eq(
|
74
|
+
['Use snake_case for methods and variables.'])
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'accepts screaming snake case globals' do
|
78
|
+
inspect_source(snake_case, ['$MY_GLOBAL = 0'])
|
79
|
+
expect(snake_case.offences.map(&:message)).to be_empty
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'accepts screaming snake case constants' do
|
83
|
+
inspect_source(snake_case, ['MY_CONSTANT = 0'])
|
84
|
+
expect(snake_case.offences.map(&:message)).to be_empty
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'accepts assigning to camel case constant' do
|
88
|
+
inspect_source(snake_case,
|
89
|
+
['Paren = Struct.new :left, :right, :kind'])
|
90
|
+
expect(snake_case.offences.map(&:message)).to be_empty
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe MethodCallParentheses do
|
9
|
+
let(:cop) { MethodCallParentheses.new }
|
10
|
+
|
11
|
+
it 'registers an offence for parens in method call without args' do
|
12
|
+
inspect_source(cop, ['top.test()'])
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'it accepts no parens in method call without args' do
|
16
|
+
inspect_source(cop, ['top.test'])
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'it accepts parens in method call with args' do
|
20
|
+
inspect_source(cop, ['top.test(a)'])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe MethodLength do
|
9
|
+
let(:method_length) { MethodLength.new }
|
10
|
+
before do
|
11
|
+
MethodLength.config = { 'Max' => 5, 'CountComments' => false }
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'rejects a method with more than 5 lines' do
|
15
|
+
inspect_source(method_length, ['def m()',
|
16
|
+
' a = 1',
|
17
|
+
' a = 2',
|
18
|
+
' a = 3',
|
19
|
+
' a = 4',
|
20
|
+
' a = 5',
|
21
|
+
' a = 6',
|
22
|
+
'end'])
|
23
|
+
expect(method_length.offences.size).to eq(1)
|
24
|
+
expect(method_length.offences.map(&:line).sort).to eq([1])
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'accepts a method with less than 5 lines' do
|
28
|
+
inspect_source(method_length, ['def m()',
|
29
|
+
' a = 1',
|
30
|
+
' a = 2',
|
31
|
+
' a = 3',
|
32
|
+
' a = 4',
|
33
|
+
'end'])
|
34
|
+
expect(method_length.offences).to be_empty
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'does not count blank lines' do
|
38
|
+
inspect_source(method_length, ['def m()',
|
39
|
+
' a = 1',
|
40
|
+
' a = 2',
|
41
|
+
' a = 3',
|
42
|
+
' a = 4',
|
43
|
+
'',
|
44
|
+
'',
|
45
|
+
' a = 7',
|
46
|
+
'end'])
|
47
|
+
expect(method_length.offences).to be_empty
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'accepts empty methods' do
|
51
|
+
inspect_source(method_length, ['def m()',
|
52
|
+
'end'])
|
53
|
+
expect(method_length.offences).to be_empty
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'is not fooled by one-liner methods, syntax #1' do
|
57
|
+
inspect_source(method_length, ['def one_line; 10 end',
|
58
|
+
'def self.m()',
|
59
|
+
' a = 1',
|
60
|
+
' a = 2',
|
61
|
+
' a = 4',
|
62
|
+
' a = 5',
|
63
|
+
' a = 6',
|
64
|
+
'end'])
|
65
|
+
expect(method_length.offences).to be_empty
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'is not fooled by one-liner methods, syntax #2' do
|
69
|
+
inspect_source(method_length, ['def one_line(test) 10 end',
|
70
|
+
'def self.m()',
|
71
|
+
' a = 1',
|
72
|
+
' a = 2',
|
73
|
+
' a = 4',
|
74
|
+
' a = 5',
|
75
|
+
' a = 6',
|
76
|
+
'end'])
|
77
|
+
expect(method_length.offences).to be_empty
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'checks class methods, syntax #1' do
|
81
|
+
inspect_source(method_length, ['def self.m()',
|
82
|
+
' a = 1',
|
83
|
+
' a = 2',
|
84
|
+
' a = 3',
|
85
|
+
' a = 4',
|
86
|
+
' a = 5',
|
87
|
+
' a = 6',
|
88
|
+
'end'])
|
89
|
+
expect(method_length.offences.size).to eq(1)
|
90
|
+
expect(method_length.offences.map(&:line).sort).to eq([1])
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'checks class methods, syntax #2' do
|
94
|
+
inspect_source(method_length, ['class K',
|
95
|
+
' class << self',
|
96
|
+
' def m()',
|
97
|
+
' a = 1',
|
98
|
+
' a = 2',
|
99
|
+
' a = 3',
|
100
|
+
' a = 4',
|
101
|
+
' a = 5',
|
102
|
+
' a = 6',
|
103
|
+
' end',
|
104
|
+
' end',
|
105
|
+
'end'])
|
106
|
+
expect(method_length.offences.size).to eq(1)
|
107
|
+
expect(method_length.offences.map(&:line).sort).to eq([3])
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'properly counts lines when method ends with block' do
|
111
|
+
inspect_source(method_length, ['def m()',
|
112
|
+
' something do',
|
113
|
+
' a = 2',
|
114
|
+
' a = 3',
|
115
|
+
' a = 4',
|
116
|
+
' a = 5',
|
117
|
+
' end',
|
118
|
+
'end'])
|
119
|
+
expect(method_length.offences.size).to eq(1)
|
120
|
+
expect(method_length.offences.map(&:line).sort).to eq([1])
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'does not count commented lines by default' do
|
124
|
+
inspect_source(method_length, ['def m()',
|
125
|
+
' a = 1',
|
126
|
+
' #a = 2',
|
127
|
+
' a = 3',
|
128
|
+
' #a = 4',
|
129
|
+
' a = 5',
|
130
|
+
' a = 6',
|
131
|
+
'end'])
|
132
|
+
expect(method_length.offences).to be_empty
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'has the option of counting commented lines' do
|
136
|
+
MethodLength.config['CountComments'] = true
|
137
|
+
inspect_source(method_length, ['def m()',
|
138
|
+
' a = 1',
|
139
|
+
' #a = 2',
|
140
|
+
' a = 3',
|
141
|
+
' #a = 4',
|
142
|
+
' a = 5',
|
143
|
+
' a = 6',
|
144
|
+
'end'])
|
145
|
+
expect(method_length.offences.size).to eq(1)
|
146
|
+
expect(method_length.offences.map(&:line).sort).to eq([1])
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe MultilineIfThen do
|
9
|
+
let(:mit) { MultilineIfThen.new }
|
10
|
+
|
11
|
+
# if
|
12
|
+
|
13
|
+
it 'registers an offence for then in multiline if' do
|
14
|
+
inspect_source(mit, ['if cond then',
|
15
|
+
'end',
|
16
|
+
"if cond then\t",
|
17
|
+
'end',
|
18
|
+
'if cond then ',
|
19
|
+
'end',
|
20
|
+
'if cond',
|
21
|
+
'then',
|
22
|
+
'end',
|
23
|
+
'if cond then # bad',
|
24
|
+
'end'])
|
25
|
+
expect(mit.offences.map(&:line)).to eq([1, 3, 5, 7, 10])
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'accepts multiline if without then' do
|
29
|
+
inspect_source(mit, ['if cond',
|
30
|
+
'end'])
|
31
|
+
expect(mit.offences).to be_empty
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'accepts table style if/then/elsif/ends' do
|
35
|
+
inspect_source(mit,
|
36
|
+
['if @io == $stdout then str << "$stdout"',
|
37
|
+
'elsif @io == $stdin then str << "$stdin"',
|
38
|
+
'elsif @io == $stderr then str << "$stderr"',
|
39
|
+
'else str << @io.class.to_s',
|
40
|
+
'end'])
|
41
|
+
expect(mit.offences).to be_empty
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'does not get confused by a then in a when' do
|
45
|
+
inspect_source(mit,
|
46
|
+
['if a',
|
47
|
+
' case b',
|
48
|
+
' when c then',
|
49
|
+
' end',
|
50
|
+
'end'])
|
51
|
+
expect(mit.offences).to be_empty
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'does not get confused by a commented-out then' do
|
55
|
+
inspect_source(mit,
|
56
|
+
['if a # then',
|
57
|
+
' b',
|
58
|
+
'end',
|
59
|
+
'if c # then',
|
60
|
+
'end'])
|
61
|
+
expect(mit.offences).to be_empty
|
62
|
+
end
|
63
|
+
|
64
|
+
# unless
|
65
|
+
|
66
|
+
it 'registers an offence for then in multiline unless' do
|
67
|
+
inspect_source(mit, ['unless cond then',
|
68
|
+
'end'])
|
69
|
+
expect(mit.offences.map(&:message)).to eq(
|
70
|
+
['Never use then for multi-line if/unless.'])
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'accepts multiline unless without then' do
|
74
|
+
inspect_source(mit, ['unless cond',
|
75
|
+
'end'])
|
76
|
+
expect(mit.offences).to be_empty
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'does not get confused by a postfix unless' do
|
80
|
+
inspect_source(mit,
|
81
|
+
['two unless one',
|
82
|
+
])
|
83
|
+
expect(mit.offences).to be_empty
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'does not get confused by a nested postfix unless' do
|
87
|
+
inspect_source(mit,
|
88
|
+
['if two',
|
89
|
+
' puts 1',
|
90
|
+
'end unless two'
|
91
|
+
])
|
92
|
+
expect(mit.offences).to be_empty
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|