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,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe DefWithoutParentheses do
|
9
|
+
let(:def_par) { DefWithoutParentheses.new }
|
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(def_par, src)
|
15
|
+
expect(def_par.offences.size).to eq(1)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'reports an offence for class def with parameters but no parens' do
|
19
|
+
src = ['def Test.func a, b',
|
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 no args and no parens' do
|
26
|
+
src = ['def func',
|
27
|
+
'end']
|
28
|
+
inspect_source(def_par, src)
|
29
|
+
expect(def_par.offences).to be_empty
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe Documentation do
|
9
|
+
let(:documentation) { Documentation.new }
|
10
|
+
|
11
|
+
it 'registers an offence for non-empty class' do
|
12
|
+
inspect_source(documentation,
|
13
|
+
['class My_Class',
|
14
|
+
' TEST = 20',
|
15
|
+
'end'
|
16
|
+
])
|
17
|
+
expect(documentation.offences.size).to eq(1)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'registers an offence for non-namespace' do
|
21
|
+
inspect_source(documentation,
|
22
|
+
['module My_Class',
|
23
|
+
' TEST = 20',
|
24
|
+
'end'
|
25
|
+
])
|
26
|
+
expect(documentation.offences.size).to eq(1)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'registers an offence for empty module without documentation' do
|
30
|
+
# Because why would you have an empty module? It requires some
|
31
|
+
# explanation.
|
32
|
+
inspect_source(documentation,
|
33
|
+
['module Test',
|
34
|
+
'end'
|
35
|
+
])
|
36
|
+
expect(documentation.offences.size).to eq(1)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'accepts non-empty class with documentation' do
|
40
|
+
inspect_source(documentation,
|
41
|
+
['# class comment',
|
42
|
+
'class My_Class',
|
43
|
+
' TEST = 20',
|
44
|
+
'end'
|
45
|
+
])
|
46
|
+
expect(documentation.offences).to be_empty
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'accepts non-empty module with documentation' do
|
50
|
+
inspect_source(documentation,
|
51
|
+
['# class comment',
|
52
|
+
'module My_Class',
|
53
|
+
' TEST = 20',
|
54
|
+
'end'
|
55
|
+
])
|
56
|
+
expect(documentation.offences).to be_empty
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'accepts empty class without documentation' do
|
60
|
+
inspect_source(documentation,
|
61
|
+
['class My_Class',
|
62
|
+
'end'
|
63
|
+
])
|
64
|
+
expect(documentation.offences).to be_empty
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'accepts namespace module without documentation' do
|
68
|
+
inspect_source(documentation,
|
69
|
+
['module Test',
|
70
|
+
' class A; end',
|
71
|
+
' class B; end',
|
72
|
+
'end'
|
73
|
+
])
|
74
|
+
expect(documentation.offences).to be_empty
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe DotPosition do
|
9
|
+
let(:cop) { DotPosition.new }
|
10
|
+
|
11
|
+
it 'registers an offence for trailing dot in multi-line method call' do
|
12
|
+
inspect_source(cop, ['something.',
|
13
|
+
' method_name'])
|
14
|
+
expect(cop.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'accepts leading do in multi-line method call' do
|
18
|
+
inspect_source(cop, ['something',
|
19
|
+
' .method_name'])
|
20
|
+
expect(cop.offences).to be_empty
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'does not err on method call with no dots' do
|
24
|
+
inspect_source(cop, ['puts something'])
|
25
|
+
expect(cop.offences).to be_empty
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe EmptyLineBetweenDefs do
|
9
|
+
let(:empty_lines) { EmptyLineBetweenDefs.new }
|
10
|
+
|
11
|
+
it 'finds offences in inner classes' do
|
12
|
+
inspect_source(empty_lines, ['class K',
|
13
|
+
' def m',
|
14
|
+
' end',
|
15
|
+
' class J',
|
16
|
+
' def n',
|
17
|
+
' end',
|
18
|
+
' def o',
|
19
|
+
' end',
|
20
|
+
' end',
|
21
|
+
' # checks something',
|
22
|
+
' def p',
|
23
|
+
' end',
|
24
|
+
'end'])
|
25
|
+
expect(empty_lines.offences.size).to eq(1)
|
26
|
+
expect(empty_lines.offences.map(&:line).sort).to eq([7])
|
27
|
+
end
|
28
|
+
|
29
|
+
# Only one def, so rule about empty line *between* defs does not
|
30
|
+
# apply.
|
31
|
+
it 'accepts a def that follows a line with code' do
|
32
|
+
inspect_source(empty_lines, ['x = 0',
|
33
|
+
'def m',
|
34
|
+
'end'])
|
35
|
+
expect(empty_lines.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
|
+
inspect_source(empty_lines, [' x = 0',
|
42
|
+
' # 123',
|
43
|
+
' def m',
|
44
|
+
' end'])
|
45
|
+
expect(empty_lines.offences).to be_empty
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'accepts the first def without leading empty line in a class' do
|
49
|
+
inspect_source(empty_lines, ['class K',
|
50
|
+
' def m',
|
51
|
+
' end',
|
52
|
+
'end'])
|
53
|
+
expect(empty_lines.offences).to be_empty
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'accepts a def that follows an empty line and then a comment' do
|
57
|
+
inspect_source(empty_lines, ['class A',
|
58
|
+
' # calculates value',
|
59
|
+
' def m',
|
60
|
+
' end',
|
61
|
+
'',
|
62
|
+
' private',
|
63
|
+
' # calculates size',
|
64
|
+
' def n',
|
65
|
+
' end',
|
66
|
+
'end',
|
67
|
+
])
|
68
|
+
expect(empty_lines.offences).to be_empty
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'accepts a def that is the first of a module' do
|
72
|
+
source = ['module Util',
|
73
|
+
' public',
|
74
|
+
' #',
|
75
|
+
' def html_escape(s)',
|
76
|
+
' end',
|
77
|
+
'end',
|
78
|
+
]
|
79
|
+
inspect_source(empty_lines, source)
|
80
|
+
expect(empty_lines.offences.map(&:message)).to be_empty
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
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 EmptyLines do
|
9
|
+
let(:empty_lines) { EmptyLines.new }
|
10
|
+
|
11
|
+
it 'registers an offence for consecutive empty lines' do
|
12
|
+
inspect_source(empty_lines,
|
13
|
+
['test = 5', '', '', '', 'top'])
|
14
|
+
expect(empty_lines.offences.size).to eq(2)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'works when there are no tokens' do
|
18
|
+
inspect_source(empty_lines,
|
19
|
+
['#comment'])
|
20
|
+
expect(empty_lines.offences).to be_empty
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'handles comments' do
|
24
|
+
inspect_source(empty_lines,
|
25
|
+
['test', '', '#comment', 'top'])
|
26
|
+
expect(empty_lines.offences).to be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'does not register an offence for empty lines in a string' do
|
30
|
+
inspect_source(empty_lines, ['result = "test
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
string"'])
|
35
|
+
expect(empty_lines.offences).to be_empty
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe EmptyLiteral do
|
9
|
+
let(:a) { EmptyLiteral.new }
|
10
|
+
|
11
|
+
describe 'Empty Array' do
|
12
|
+
it 'registers an offence for Array.new()' do
|
13
|
+
inspect_source(a,
|
14
|
+
['test = Array.new()'])
|
15
|
+
expect(a.offences.size).to eq(1)
|
16
|
+
expect(a.offences.map(&:message))
|
17
|
+
.to eq([EmptyLiteral::ARR_MSG])
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'registers an offence for Array.new' do
|
21
|
+
inspect_source(a,
|
22
|
+
['test = Array.new'])
|
23
|
+
expect(a.offences.size).to eq(1)
|
24
|
+
expect(a.offences.map(&:message))
|
25
|
+
.to eq([EmptyLiteral::ARR_MSG])
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'does not register an offence for Array.new(3)' do
|
29
|
+
inspect_source(a,
|
30
|
+
['test = Array.new(3)'])
|
31
|
+
expect(a.offences).to be_empty
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'Empty Hash' do
|
36
|
+
it 'registers an offence for Hash.new()' do
|
37
|
+
inspect_source(a,
|
38
|
+
['test = Hash.new()'])
|
39
|
+
expect(a.offences.size).to eq(1)
|
40
|
+
expect(a.offences.map(&:message))
|
41
|
+
.to eq([EmptyLiteral::HASH_MSG])
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'registers an offence for Hash.new' do
|
45
|
+
inspect_source(a,
|
46
|
+
['test = Hash.new'])
|
47
|
+
expect(a.offences.size).to eq(1)
|
48
|
+
expect(a.offences.map(&:message))
|
49
|
+
.to eq([EmptyLiteral::HASH_MSG])
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'does not register an offence for Hash.new(3)' do
|
53
|
+
inspect_source(a,
|
54
|
+
['test = Hash.new(3)'])
|
55
|
+
expect(a.offences).to be_empty
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'does not register an offence for Hash.new { block }' do
|
59
|
+
inspect_source(a,
|
60
|
+
['test = Hash.new { block }'])
|
61
|
+
expect(a.offences).to be_empty
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe 'Empty String' do
|
66
|
+
it 'registers an offence for String.new()' do
|
67
|
+
inspect_source(a,
|
68
|
+
['test = String.new()'])
|
69
|
+
expect(a.offences.size).to eq(1)
|
70
|
+
expect(a.offences.map(&:message))
|
71
|
+
.to eq([EmptyLiteral::STR_MSG])
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'registers an offence for String.new' do
|
75
|
+
inspect_source(a,
|
76
|
+
['test = String.new'])
|
77
|
+
expect(a.offences.size).to eq(1)
|
78
|
+
expect(a.offences.map(&:message))
|
79
|
+
.to eq([EmptyLiteral::STR_MSG])
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'does not register an offence for String.new("top")' do
|
83
|
+
inspect_source(a,
|
84
|
+
['test = String.new("top")'])
|
85
|
+
expect(a.offences).to be_empty
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe Encoding do
|
9
|
+
let(:encoding) { Encoding.new }
|
10
|
+
|
11
|
+
it 'registers an offence when no encoding present', ruby: 1.9 do
|
12
|
+
inspect_source(encoding, ['def foo() end'])
|
13
|
+
|
14
|
+
expect(encoding.offences.map(&:message)).to eq(
|
15
|
+
['Missing utf-8 encoding comment.'])
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'accepts encoding on first line', ruby: 1.9 do
|
19
|
+
inspect_source(encoding, ['# encoding: utf-8',
|
20
|
+
'def foo() end'])
|
21
|
+
|
22
|
+
expect(encoding.offences).to be_empty
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'accepts encoding on second line when shebang present', ruby: 1.9 do
|
26
|
+
inspect_source(encoding, ['#!/usr/bin/env ruby',
|
27
|
+
'# encoding: utf-8',
|
28
|
+
'def foo() end'])
|
29
|
+
|
30
|
+
expect(encoding.offences.map(&:message)).to be_empty
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'books an offence when encoding is in the wrong place', ruby: 1.9 do
|
34
|
+
inspect_source(encoding, ['def foo() end',
|
35
|
+
'# encoding: utf-8'])
|
36
|
+
|
37
|
+
expect(encoding.offences.map(&:message)).to eq(
|
38
|
+
['Missing utf-8 encoding comment.'])
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'does not register an offence on Ruby 2.0', ruby: 2.0 do
|
42
|
+
inspect_source(encoding, ['def foo() end'])
|
43
|
+
|
44
|
+
expect(encoding.offences).to be_empty
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe EndBlock do
|
9
|
+
let(:cop) { EndBlock.new }
|
10
|
+
|
11
|
+
it 'reports an offence for an END block' do
|
12
|
+
src = ['END { test }']
|
13
|
+
inspect_source(cop, src)
|
14
|
+
expect(cop.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
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 EndOfLine do
|
9
|
+
let(:eol) { EndOfLine.new }
|
10
|
+
|
11
|
+
it 'registers an offence for CR+LF' do
|
12
|
+
inspect_source(eol, ["x=0\r", ''])
|
13
|
+
expect(eol.offences.map(&:message)).to eq(
|
14
|
+
['Carriage return character detected.'])
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'registers an offence for CR at end of file' do
|
18
|
+
inspect_source(eol, ["x=0\r"])
|
19
|
+
expect(eol.offences.map(&:message)).to eq(
|
20
|
+
['Carriage return character detected.'])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|