rubocop 0.7.2 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +7 -1
- data/CHANGELOG.md +19 -0
- data/README.md +4 -8
- data/bin/rubocop +2 -2
- data/config/default.yml +8 -0
- data/config/enabled.yml +21 -24
- data/lib/rubocop.rb +9 -7
- data/lib/rubocop/cli.rb +73 -52
- data/lib/rubocop/config.rb +8 -5
- data/lib/rubocop/cop/access_control.rb +41 -0
- data/lib/rubocop/cop/alias.rb +7 -5
- data/lib/rubocop/cop/align_parameters.rb +20 -96
- data/lib/rubocop/cop/and_or.rb +26 -0
- data/lib/rubocop/cop/ascii_comments.rb +3 -8
- data/lib/rubocop/cop/ascii_identifiers.rb +6 -5
- data/lib/rubocop/cop/avoid_class_vars.rb +5 -10
- data/lib/rubocop/cop/avoid_for.rb +7 -5
- data/lib/rubocop/cop/avoid_global_vars.rb +19 -7
- data/lib/rubocop/cop/avoid_perl_backrefs.rb +7 -10
- data/lib/rubocop/cop/avoid_perlisms.rb +11 -10
- data/lib/rubocop/cop/block_comments.rb +4 -6
- data/lib/rubocop/cop/blocks.rb +11 -47
- data/lib/rubocop/cop/case_indentation.rb +9 -31
- data/lib/rubocop/cop/class_and_module_camel_case.rb +20 -11
- data/lib/rubocop/cop/class_methods.rb +5 -10
- data/lib/rubocop/cop/collection_methods.rb +16 -16
- data/lib/rubocop/cop/colon_method_call.rb +8 -32
- data/lib/rubocop/cop/constant_name.rb +24 -0
- data/lib/rubocop/cop/cop.rb +20 -78
- data/lib/rubocop/cop/def_parentheses.rb +43 -35
- data/lib/rubocop/cop/empty_line_between_defs.rb +11 -15
- data/lib/rubocop/cop/empty_lines.rb +20 -9
- data/lib/rubocop/cop/empty_literal.rb +47 -0
- data/lib/rubocop/cop/encoding.rb +3 -3
- data/lib/rubocop/cop/end_of_line.rb +3 -3
- data/lib/rubocop/cop/ensure_return.rb +6 -23
- data/lib/rubocop/cop/eval.rb +7 -10
- data/lib/rubocop/cop/favor_join.rb +9 -24
- data/lib/rubocop/cop/favor_modifier.rb +38 -48
- data/lib/rubocop/cop/favor_percent_r.rb +7 -7
- data/lib/rubocop/cop/favor_sprintf.rb +8 -24
- data/lib/rubocop/cop/favor_unless_over_negated_if.rb +19 -17
- data/lib/rubocop/cop/handle_exceptions.rb +7 -11
- data/lib/rubocop/cop/hash_syntax.rb +29 -14
- data/lib/rubocop/cop/if_then_else.rb +32 -29
- data/lib/rubocop/cop/leading_comment_space.rb +5 -8
- data/lib/rubocop/cop/line_continuation.rb +4 -7
- data/lib/rubocop/cop/line_length.rb +3 -3
- data/lib/rubocop/cop/loop.rb +33 -0
- data/lib/rubocop/cop/method_and_variable_snake_case.rb +42 -19
- data/lib/rubocop/cop/method_length.rb +34 -37
- data/lib/rubocop/cop/new_lambda_literal.rb +8 -6
- data/lib/rubocop/cop/not.rb +10 -4
- data/lib/rubocop/cop/numeric_literals.rb +9 -7
- data/lib/rubocop/cop/offence.rb +1 -1
- data/lib/rubocop/cop/op_method.rb +12 -22
- data/lib/rubocop/cop/parameter_lists.rb +12 -6
- data/lib/rubocop/cop/parentheses_around_condition.rb +11 -11
- data/lib/rubocop/cop/percent_r.rb +7 -7
- data/lib/rubocop/cop/reduce_arguments.rb +13 -51
- data/lib/rubocop/cop/rescue_exception.rb +13 -29
- data/lib/rubocop/cop/rescue_modifier.rb +5 -8
- data/lib/rubocop/cop/semicolon.rb +15 -74
- data/lib/rubocop/cop/single_line_methods.rb +28 -44
- data/lib/rubocop/cop/space_after_comma_etc.rb +29 -9
- data/lib/rubocop/cop/space_after_control_keyword.rb +16 -15
- data/lib/rubocop/cop/string_literals.rb +9 -35
- data/lib/rubocop/cop/surrounding_space.rb +213 -112
- data/lib/rubocop/cop/symbol_array.rb +9 -7
- data/lib/rubocop/cop/symbol_name.rb +23 -0
- data/lib/rubocop/cop/syntax.rb +14 -7
- data/lib/rubocop/cop/tab.rb +3 -3
- data/lib/rubocop/cop/ternary_operator.rb +26 -24
- data/lib/rubocop/cop/trailing_whitespace.rb +3 -5
- data/lib/rubocop/cop/trivial_accessors.rb +18 -95
- data/lib/rubocop/cop/unless_else.rb +11 -7
- data/lib/rubocop/cop/util.rb +26 -0
- data/lib/rubocop/cop/variable_interpolation.rb +18 -10
- data/lib/rubocop/cop/when_then.rb +6 -17
- data/lib/rubocop/cop/word_array.rb +18 -19
- data/lib/rubocop/version.rb +1 -1
- data/rubocop.gemspec +1 -0
- data/spec/project_spec.rb +1 -1
- data/spec/rubocop/cli_spec.rb +16 -9
- data/spec/rubocop/config_spec.rb +13 -3
- data/spec/rubocop/cops/access_control_spec.rb +129 -0
- data/spec/rubocop/cops/alias_spec.rb +2 -6
- data/spec/rubocop/cops/align_parameters_spec.rb +58 -71
- data/spec/rubocop/cops/and_or_spec.rb +37 -0
- data/spec/rubocop/cops/ascii_comments_spec.rb +3 -4
- data/spec/rubocop/cops/ascii_identifiers_spec.rb +3 -4
- data/spec/rubocop/cops/avoid_class_vars_spec.rb +7 -2
- data/spec/rubocop/cops/avoid_for_spec.rb +1 -4
- data/spec/rubocop/cops/{avoid_global_vars.rb → avoid_global_vars_spec.rb} +4 -4
- data/spec/rubocop/cops/avoid_perl_backrefs_spec.rb +1 -1
- data/spec/rubocop/cops/avoid_perlisms_spec.rb +5 -5
- data/spec/rubocop/cops/block_comments_spec.rb +0 -4
- data/spec/rubocop/cops/blocks_spec.rb +33 -0
- data/spec/rubocop/cops/case_indentation_spec.rb +5 -5
- data/spec/rubocop/cops/class_and_module_camel_case_spec.rb +15 -5
- data/spec/rubocop/cops/class_methods_spec.rb +4 -4
- data/spec/rubocop/cops/collection_methods_spec.rb +9 -4
- data/spec/rubocop/cops/colon_method_call_spec.rb +11 -5
- data/spec/rubocop/cops/constant_name_spec.rb +42 -0
- data/spec/rubocop/cops/def_with_parentheses_spec.rb +13 -8
- data/spec/rubocop/cops/def_without_parentheses_spec.rb +11 -5
- data/spec/rubocop/cops/empty_line_between_defs_spec.rb +38 -38
- data/spec/rubocop/cops/empty_lines_spec.rb +15 -3
- data/spec/rubocop/cops/empty_literal_spec.rb +90 -0
- data/spec/rubocop/cops/encoding_spec.rb +9 -9
- data/spec/rubocop/cops/end_of_line_spec.rb +2 -2
- data/spec/rubocop/cops/ensure_return_spec.rb +1 -3
- data/spec/rubocop/cops/eval_spec.rb +8 -5
- data/spec/rubocop/cops/favor_join_spec.rb +1 -5
- data/spec/rubocop/cops/favor_modifier_spec.rb +16 -14
- data/spec/rubocop/cops/{favor_percent_r.rb → favor_percent_r_spec.rb} +6 -6
- data/spec/rubocop/cops/favor_sprintf_spec.rb +3 -9
- data/spec/rubocop/cops/favor_unless_over_negated_if_spec.rb +4 -4
- data/spec/rubocop/cops/favor_until_over_negated_while_spec.rb +3 -3
- data/spec/rubocop/cops/handle_exceptions_spec.rb +1 -3
- data/spec/rubocop/cops/hash_syntax_spec.rb +11 -6
- data/spec/rubocop/cops/if_with_semicolon_spec.rb +7 -1
- data/spec/rubocop/cops/leading_comment_space_spec.rb +0 -7
- data/spec/rubocop/cops/line_continuation_spec.rb +2 -2
- data/spec/rubocop/cops/line_length_spec.rb +2 -2
- data/spec/rubocop/cops/loop_spec.rb +31 -0
- data/spec/rubocop/cops/method_and_variable_snake_case_spec.rb +38 -12
- data/spec/rubocop/cops/method_length_spec.rb +85 -85
- data/spec/rubocop/cops/multiline_if_then_spec.rb +15 -15
- data/spec/rubocop/cops/new_lambda_literal_spec.rb +3 -3
- data/spec/rubocop/cops/not_spec.rb +1 -4
- data/spec/rubocop/cops/numeric_literals_spec.rb +13 -13
- data/spec/rubocop/cops/one_line_conditional_spec.rb +1 -1
- data/spec/rubocop/cops/op_method_spec.rb +2 -9
- data/spec/rubocop/cops/parameter_lists_spec.rb +7 -7
- data/spec/rubocop/cops/parentheses_around_condition_spec.rb +41 -44
- data/spec/rubocop/cops/percent_r_spec.rb +6 -6
- data/spec/rubocop/cops/reduce_arguments_spec.rb +4 -4
- data/spec/rubocop/cops/rescue_exception_spec.rb +48 -8
- data/spec/rubocop/cops/rescue_modifier_spec.rb +2 -5
- data/spec/rubocop/cops/semicolon_spec.rb +2 -30
- data/spec/rubocop/cops/single_line_methods_spec.rb +13 -13
- data/spec/rubocop/cops/space_after_colon_spec.rb +3 -3
- data/spec/rubocop/cops/space_after_comma_spec.rb +14 -2
- data/spec/rubocop/cops/space_after_control_keyword_spec.rb +42 -3
- data/spec/rubocop/cops/space_after_semicolon_spec.rb +2 -2
- data/spec/rubocop/cops/space_around_braces_spec.rb +18 -3
- data/spec/rubocop/cops/space_around_equals_in_default_parameter_spec.rb +4 -4
- data/spec/rubocop/cops/space_around_operators_spec.rb +82 -27
- data/spec/rubocop/cops/space_inside_brackets_spec.rb +13 -7
- data/spec/rubocop/cops/space_inside_hash_literal_braces_spec.rb +14 -9
- data/spec/rubocop/cops/space_inside_parens_spec.rb +7 -3
- data/spec/rubocop/cops/string_literals_spec.rb +17 -5
- data/spec/rubocop/cops/symbol_array_spec.rb +18 -2
- data/spec/rubocop/cops/symbol_name_spec.rb +119 -0
- data/spec/rubocop/cops/syntax_spec.rb +25 -18
- data/spec/rubocop/cops/tab_spec.rb +2 -2
- data/spec/rubocop/cops/ternary_operator_spec.rb +13 -17
- data/spec/rubocop/cops/trailing_whitespace_spec.rb +3 -3
- data/spec/rubocop/cops/trivial_accessors_spec.rb +17 -20
- data/spec/rubocop/cops/unless_else_spec.rb +8 -8
- data/spec/rubocop/cops/variable_interpolation_spec.rb +0 -5
- data/spec/rubocop/cops/when_then_spec.rb +14 -21
- data/spec/rubocop/cops/word_array_spec.rb +12 -4
- data/spec/spec_helper.rb +12 -4
- metadata +40 -31
- data/.document +0 -5
- data/lib/rubocop/cop/ampersands_pipes_vs_and_or.rb +0 -25
- data/lib/rubocop/cop/array_literal.rb +0 -61
- data/lib/rubocop/cop/brace_after_percent.rb +0 -32
- data/lib/rubocop/cop/grammar.rb +0 -138
- data/lib/rubocop/cop/hash_literal.rb +0 -61
- data/lib/rubocop/cop/percent_literals.rb +0 -25
- data/lib/rubocop/cop/symbol_snake_case.rb +0 -47
- data/spec/rubocop/cops/ampersands_pipes_vs_and_or_spec.rb +0 -57
- data/spec/rubocop/cops/array_literal_spec.rb +0 -46
- data/spec/rubocop/cops/brace_after_percent_spec.rb +0 -33
- data/spec/rubocop/cops/grammar_spec.rb +0 -81
- data/spec/rubocop/cops/hash_literal_spec.rb +0 -46
- data/spec/rubocop/cops/multiline_blocks_spec.rb +0 -24
- data/spec/rubocop/cops/percent_literals_spec.rb +0 -47
- data/spec/rubocop/cops/single_line_blocks_spec.rb +0 -22
- data/spec/rubocop/cops/symbol_snake_case_spec.rb +0 -93
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
describe ConstantName do
|
8
|
+
let(:const) { ConstantName.new }
|
9
|
+
|
10
|
+
it 'registers an offence for camel case in const name' do
|
11
|
+
inspect_source(const,
|
12
|
+
['TopCase = 5'])
|
13
|
+
expect(const.offences.size).to eq(1)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'registers an offence for snake case in const name' do
|
17
|
+
inspect_source(const,
|
18
|
+
['TOP_test = 5'])
|
19
|
+
expect(const.offences.size).to eq(1)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'allows screaming snake case in const name' do
|
23
|
+
inspect_source(const,
|
24
|
+
['TOP_TEST = 5'])
|
25
|
+
expect(const.offences).to be_empty
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'does not check names if rhs is a method call' do
|
29
|
+
inspect_source(const,
|
30
|
+
['AnythingGoes = test'])
|
31
|
+
expect(const.offences).to be_empty
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'checks qualified const names' do
|
35
|
+
inspect_source(const,
|
36
|
+
['::AnythingGoes = 30',
|
37
|
+
'a::Bar_foo = 10'])
|
38
|
+
expect(const.offences.size).to eq(2)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -10,23 +10,28 @@ module Rubocop
|
|
10
10
|
it 'reports an offence for def with empty parens' do
|
11
11
|
src = ['def func()',
|
12
12
|
'end']
|
13
|
-
inspect_source(def_par,
|
14
|
-
expect(def_par.offences.
|
15
|
-
|
16
|
-
|
13
|
+
inspect_source(def_par, src)
|
14
|
+
expect(def_par.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'reports an offence for class def with empty parens' do
|
18
|
+
src = ['def Test.func()',
|
19
|
+
'end']
|
20
|
+
inspect_source(def_par, src)
|
21
|
+
expect(def_par.offences.size).to eq(1)
|
17
22
|
end
|
18
23
|
|
19
24
|
it 'accepts def with arg and parens' do
|
20
25
|
src = ['def func(a)',
|
21
26
|
'end']
|
22
|
-
inspect_source(def_par,
|
23
|
-
expect(def_par.offences
|
27
|
+
inspect_source(def_par, src)
|
28
|
+
expect(def_par.offences).to be_empty
|
24
29
|
end
|
25
30
|
|
26
31
|
it 'accepts empty parentheses in one liners' do
|
27
32
|
src = ["def to_s() join '/' end"]
|
28
|
-
inspect_source(def_par,
|
29
|
-
expect(def_par.offences
|
33
|
+
inspect_source(def_par, src)
|
34
|
+
expect(def_par.offences).to be_empty
|
30
35
|
end
|
31
36
|
end
|
32
37
|
end
|
@@ -10,16 +10,22 @@ module Rubocop
|
|
10
10
|
it 'reports an offence for def with parameters but no parens' do
|
11
11
|
src = ['def func a, b',
|
12
12
|
'end']
|
13
|
-
inspect_source(def_par,
|
14
|
-
expect(def_par.offences.
|
15
|
-
|
13
|
+
inspect_source(def_par, src)
|
14
|
+
expect(def_par.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'reports an offence for class def with parameters but no parens' do
|
18
|
+
src = ['def Test.func a, b',
|
19
|
+
'end']
|
20
|
+
inspect_source(def_par, src)
|
21
|
+
expect(def_par.offences.size).to eq(1)
|
16
22
|
end
|
17
23
|
|
18
24
|
it 'accepts def with no args and no parens' do
|
19
25
|
src = ['def func',
|
20
26
|
'end']
|
21
|
-
inspect_source(def_par,
|
22
|
-
expect(def_par.offences
|
27
|
+
inspect_source(def_par, src)
|
28
|
+
expect(def_par.offences).to be_empty
|
23
29
|
end
|
24
30
|
end
|
25
31
|
end
|
@@ -8,62 +8,62 @@ module Rubocop
|
|
8
8
|
let(:empty_lines) { EmptyLineBetweenDefs.new }
|
9
9
|
|
10
10
|
it 'finds offences in inner classes' do
|
11
|
-
inspect_source(empty_lines,
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
expect(empty_lines.offences.size).to eq(
|
25
|
-
expect(empty_lines.offences.map(&:line_number).sort).to eq([7
|
11
|
+
inspect_source(empty_lines, ['class K',
|
12
|
+
' def m',
|
13
|
+
' end',
|
14
|
+
' class J',
|
15
|
+
' def n',
|
16
|
+
' end',
|
17
|
+
' def o',
|
18
|
+
' end',
|
19
|
+
' end',
|
20
|
+
' # checks something',
|
21
|
+
' def p',
|
22
|
+
' end',
|
23
|
+
'end'])
|
24
|
+
expect(empty_lines.offences.size).to eq(1)
|
25
|
+
expect(empty_lines.offences.map(&:line_number).sort).to eq([7])
|
26
26
|
end
|
27
27
|
|
28
28
|
# Only one def, so rule about empty line *between* defs does not
|
29
29
|
# apply.
|
30
30
|
it 'accepts a def that follows a line with code' do
|
31
|
-
inspect_source(empty_lines,
|
32
|
-
|
33
|
-
|
31
|
+
inspect_source(empty_lines, ['x = 0',
|
32
|
+
'def m',
|
33
|
+
'end'])
|
34
34
|
expect(empty_lines.offences).to be_empty
|
35
35
|
end
|
36
36
|
|
37
37
|
# Only one def, so rule about empty line *between* defs does not
|
38
38
|
# apply.
|
39
39
|
it 'accepts a def that follows code and a comment' do
|
40
|
-
inspect_source(empty_lines,
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
inspect_source(empty_lines, [' x = 0',
|
41
|
+
' # 123',
|
42
|
+
' def m',
|
43
|
+
' end'])
|
44
44
|
expect(empty_lines.offences).to be_empty
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'accepts the first def without leading empty line in a class' do
|
48
|
-
inspect_source(empty_lines,
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
inspect_source(empty_lines, ['class K',
|
49
|
+
' def m',
|
50
|
+
' end',
|
51
|
+
'end'])
|
52
52
|
expect(empty_lines.offences).to be_empty
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'accepts a def that follows an empty line and then a comment' do
|
56
|
-
inspect_source(empty_lines,
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
56
|
+
inspect_source(empty_lines, ['class A',
|
57
|
+
' # calculates value',
|
58
|
+
' def m',
|
59
|
+
' end',
|
60
|
+
'',
|
61
|
+
' private',
|
62
|
+
' # calculates size',
|
63
|
+
' def n',
|
64
|
+
' end',
|
65
|
+
'end',
|
66
|
+
])
|
67
67
|
expect(empty_lines.offences).to be_empty
|
68
68
|
end
|
69
69
|
|
@@ -75,7 +75,7 @@ module Rubocop
|
|
75
75
|
' end',
|
76
76
|
'end',
|
77
77
|
]
|
78
|
-
inspect_source(empty_lines,
|
78
|
+
inspect_source(empty_lines, source)
|
79
79
|
expect(empty_lines.offences.map(&:message)).to be_empty
|
80
80
|
end
|
81
81
|
end
|
@@ -8,17 +8,29 @@ module Rubocop
|
|
8
8
|
let(:empty_lines) { EmptyLines.new }
|
9
9
|
|
10
10
|
it 'registers an offence for consecutive empty lines' do
|
11
|
-
inspect_source(empty_lines,
|
11
|
+
inspect_source(empty_lines,
|
12
12
|
['test = 5', '', '', '', 'top'])
|
13
13
|
expect(empty_lines.offences.size).to eq(2)
|
14
14
|
end
|
15
15
|
|
16
|
+
it 'works when there are no tokens' do
|
17
|
+
inspect_source(empty_lines,
|
18
|
+
['#comment'])
|
19
|
+
expect(empty_lines.offences).to be_empty
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'handles comments' do
|
23
|
+
inspect_source(empty_lines,
|
24
|
+
['test', '', '#comment', 'top'])
|
25
|
+
expect(empty_lines.offences).to be_empty
|
26
|
+
end
|
27
|
+
|
16
28
|
it 'does not register an offence for empty lines in a string' do
|
17
|
-
inspect_source(empty_lines,
|
29
|
+
inspect_source(empty_lines, ['result = "test
|
18
30
|
|
19
31
|
|
20
32
|
|
21
|
-
|
33
|
+
string"'])
|
22
34
|
expect(empty_lines.offences).to be_empty
|
23
35
|
end
|
24
36
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
describe EmptyLiteral do
|
8
|
+
let(:a) { EmptyLiteral.new }
|
9
|
+
|
10
|
+
describe 'Empty Array' do
|
11
|
+
it 'registers an offence for Array.new()' do
|
12
|
+
inspect_source(a,
|
13
|
+
['test = Array.new()'])
|
14
|
+
expect(a.offences.size).to eq(1)
|
15
|
+
expect(a.offences.map(&:message))
|
16
|
+
.to eq([EmptyLiteral::ARR_MSG])
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'registers an offence for Array.new' do
|
20
|
+
inspect_source(a,
|
21
|
+
['test = Array.new'])
|
22
|
+
expect(a.offences.size).to eq(1)
|
23
|
+
expect(a.offences.map(&:message))
|
24
|
+
.to eq([EmptyLiteral::ARR_MSG])
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'does not register an offence for Array.new(3)' do
|
28
|
+
inspect_source(a,
|
29
|
+
['test = Array.new(3)'])
|
30
|
+
expect(a.offences).to be_empty
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'Empty Hash' do
|
35
|
+
it 'registers an offence for Hash.new()' do
|
36
|
+
inspect_source(a,
|
37
|
+
['test = Hash.new()'])
|
38
|
+
expect(a.offences.size).to eq(1)
|
39
|
+
expect(a.offences.map(&:message))
|
40
|
+
.to eq([EmptyLiteral::HASH_MSG])
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'registers an offence for Hash.new' do
|
44
|
+
inspect_source(a,
|
45
|
+
['test = Hash.new'])
|
46
|
+
expect(a.offences.size).to eq(1)
|
47
|
+
expect(a.offences.map(&:message))
|
48
|
+
.to eq([EmptyLiteral::HASH_MSG])
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'does not register an offence for Hash.new(3)' do
|
52
|
+
inspect_source(a,
|
53
|
+
['test = Hash.new(3)'])
|
54
|
+
expect(a.offences).to be_empty
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'does not register an offence for Hash.new { block }' do
|
58
|
+
inspect_source(a,
|
59
|
+
['test = Hash.new { block }'])
|
60
|
+
expect(a.offences).to be_empty
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe 'Empty String' do
|
65
|
+
it 'registers an offence for String.new()' do
|
66
|
+
inspect_source(a,
|
67
|
+
['test = String.new()'])
|
68
|
+
expect(a.offences.size).to eq(1)
|
69
|
+
expect(a.offences.map(&:message))
|
70
|
+
.to eq([EmptyLiteral::STR_MSG])
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'registers an offence for String.new' do
|
74
|
+
inspect_source(a,
|
75
|
+
['test = String.new'])
|
76
|
+
expect(a.offences.size).to eq(1)
|
77
|
+
expect(a.offences.map(&:message))
|
78
|
+
.to eq([EmptyLiteral::STR_MSG])
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'does not register an offence for String.new("top")' do
|
82
|
+
inspect_source(a,
|
83
|
+
['test = String.new("top")'])
|
84
|
+
expect(a.offences).to be_empty
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -8,37 +8,37 @@ module Rubocop
|
|
8
8
|
let(:encoding) { Encoding.new }
|
9
9
|
|
10
10
|
it 'registers an offence when no encoding present', ruby: 1.9 do
|
11
|
-
inspect_source(encoding,
|
11
|
+
inspect_source(encoding, ['def foo() end'])
|
12
12
|
|
13
13
|
expect(encoding.offences.map(&:message)).to eq(
|
14
14
|
['Missing utf-8 encoding comment.'])
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'accepts encoding on first line', ruby: 1.9 do
|
18
|
-
inspect_source(encoding,
|
19
|
-
|
18
|
+
inspect_source(encoding, ['# encoding: utf-8',
|
19
|
+
'def foo() end'])
|
20
20
|
|
21
21
|
expect(encoding.offences).to be_empty
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'accepts encoding on second line when shebang present', ruby: 1.9 do
|
25
|
-
inspect_source(encoding,
|
26
|
-
|
27
|
-
|
25
|
+
inspect_source(encoding, ['#!/usr/bin/env ruby',
|
26
|
+
'# encoding: utf-8',
|
27
|
+
'def foo() end'])
|
28
28
|
|
29
29
|
expect(encoding.offences.map(&:message)).to be_empty
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'books an offence when encoding is in the wrong place', ruby: 1.9 do
|
33
|
-
inspect_source(encoding,
|
34
|
-
|
33
|
+
inspect_source(encoding, ['def foo() end',
|
34
|
+
'# encoding: utf-8'])
|
35
35
|
|
36
36
|
expect(encoding.offences.map(&:message)).to eq(
|
37
37
|
['Missing utf-8 encoding comment.'])
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'does not register an offence on Ruby 2.0', ruby: 2.0 do
|
41
|
-
inspect_source(encoding,
|
41
|
+
inspect_source(encoding, ['def foo() end'])
|
42
42
|
|
43
43
|
expect(encoding.offences).to be_empty
|
44
44
|
end
|
@@ -8,13 +8,13 @@ module Rubocop
|
|
8
8
|
let(:eol) { EndOfLine.new }
|
9
9
|
|
10
10
|
it 'registers an offence for CR+LF' do
|
11
|
-
inspect_source(eol,
|
11
|
+
inspect_source(eol, ["x=0\r", ''])
|
12
12
|
expect(eol.offences.map(&:message)).to eq(
|
13
13
|
['Carriage return character detected.'])
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'registers an offence for CR at end of file' do
|
17
|
-
inspect_source(eol,
|
17
|
+
inspect_source(eol, ["x=0\r"])
|
18
18
|
expect(eol.offences.map(&:message)).to eq(
|
19
19
|
['Carriage return character detected.'])
|
20
20
|
end
|
@@ -9,7 +9,6 @@ module Rubocop
|
|
9
9
|
|
10
10
|
it 'registers an offence for return in ensure' do
|
11
11
|
inspect_source(er,
|
12
|
-
'file.rb',
|
13
12
|
['begin',
|
14
13
|
' something',
|
15
14
|
'ensure',
|
@@ -18,12 +17,11 @@ module Rubocop
|
|
18
17
|
'end'])
|
19
18
|
expect(er.offences.size).to eq(1)
|
20
19
|
expect(er.offences.map(&:message))
|
21
|
-
.to eq([EnsureReturn::
|
20
|
+
.to eq([EnsureReturn::MSG])
|
22
21
|
end
|
23
22
|
|
24
23
|
it 'does not register an offence for return outside ensure' do
|
25
24
|
inspect_source(er,
|
26
|
-
'file.rb',
|
27
25
|
['begin',
|
28
26
|
' something',
|
29
27
|
' return',
|
@@ -9,28 +9,31 @@ module Rubocop
|
|
9
9
|
|
10
10
|
it 'registers an offence for eval as function' do
|
11
11
|
inspect_source(a,
|
12
|
-
'file.rb',
|
13
12
|
['eval(something)'])
|
14
13
|
expect(a.offences.size).to eq(1)
|
15
14
|
expect(a.offences.map(&:message))
|
16
|
-
.to eq([Eval::
|
15
|
+
.to eq([Eval::MSG])
|
17
16
|
end
|
18
17
|
|
19
18
|
it 'registers an offence for eval as command' do
|
20
19
|
inspect_source(a,
|
21
|
-
'file.rb',
|
22
20
|
['eval something'])
|
23
21
|
expect(a.offences.size).to eq(1)
|
24
22
|
expect(a.offences.map(&:message))
|
25
|
-
.to eq([Eval::
|
23
|
+
.to eq([Eval::MSG])
|
26
24
|
end
|
27
25
|
|
28
26
|
it 'does not register an offence for eval as variable' do
|
29
27
|
inspect_source(a,
|
30
|
-
'file.rb',
|
31
28
|
['eval = something'])
|
32
29
|
expect(a.offences).to be_empty
|
33
30
|
end
|
31
|
+
|
32
|
+
it 'does not register an offence for eval as method' do
|
33
|
+
inspect_source(a,
|
34
|
+
['something.eval'])
|
35
|
+
expect(a.offences).to be_empty
|
36
|
+
end
|
34
37
|
end
|
35
38
|
end
|
36
39
|
end
|