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.

Files changed (184) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +7 -1
  3. data/CHANGELOG.md +19 -0
  4. data/README.md +4 -8
  5. data/bin/rubocop +2 -2
  6. data/config/default.yml +8 -0
  7. data/config/enabled.yml +21 -24
  8. data/lib/rubocop.rb +9 -7
  9. data/lib/rubocop/cli.rb +73 -52
  10. data/lib/rubocop/config.rb +8 -5
  11. data/lib/rubocop/cop/access_control.rb +41 -0
  12. data/lib/rubocop/cop/alias.rb +7 -5
  13. data/lib/rubocop/cop/align_parameters.rb +20 -96
  14. data/lib/rubocop/cop/and_or.rb +26 -0
  15. data/lib/rubocop/cop/ascii_comments.rb +3 -8
  16. data/lib/rubocop/cop/ascii_identifiers.rb +6 -5
  17. data/lib/rubocop/cop/avoid_class_vars.rb +5 -10
  18. data/lib/rubocop/cop/avoid_for.rb +7 -5
  19. data/lib/rubocop/cop/avoid_global_vars.rb +19 -7
  20. data/lib/rubocop/cop/avoid_perl_backrefs.rb +7 -10
  21. data/lib/rubocop/cop/avoid_perlisms.rb +11 -10
  22. data/lib/rubocop/cop/block_comments.rb +4 -6
  23. data/lib/rubocop/cop/blocks.rb +11 -47
  24. data/lib/rubocop/cop/case_indentation.rb +9 -31
  25. data/lib/rubocop/cop/class_and_module_camel_case.rb +20 -11
  26. data/lib/rubocop/cop/class_methods.rb +5 -10
  27. data/lib/rubocop/cop/collection_methods.rb +16 -16
  28. data/lib/rubocop/cop/colon_method_call.rb +8 -32
  29. data/lib/rubocop/cop/constant_name.rb +24 -0
  30. data/lib/rubocop/cop/cop.rb +20 -78
  31. data/lib/rubocop/cop/def_parentheses.rb +43 -35
  32. data/lib/rubocop/cop/empty_line_between_defs.rb +11 -15
  33. data/lib/rubocop/cop/empty_lines.rb +20 -9
  34. data/lib/rubocop/cop/empty_literal.rb +47 -0
  35. data/lib/rubocop/cop/encoding.rb +3 -3
  36. data/lib/rubocop/cop/end_of_line.rb +3 -3
  37. data/lib/rubocop/cop/ensure_return.rb +6 -23
  38. data/lib/rubocop/cop/eval.rb +7 -10
  39. data/lib/rubocop/cop/favor_join.rb +9 -24
  40. data/lib/rubocop/cop/favor_modifier.rb +38 -48
  41. data/lib/rubocop/cop/favor_percent_r.rb +7 -7
  42. data/lib/rubocop/cop/favor_sprintf.rb +8 -24
  43. data/lib/rubocop/cop/favor_unless_over_negated_if.rb +19 -17
  44. data/lib/rubocop/cop/handle_exceptions.rb +7 -11
  45. data/lib/rubocop/cop/hash_syntax.rb +29 -14
  46. data/lib/rubocop/cop/if_then_else.rb +32 -29
  47. data/lib/rubocop/cop/leading_comment_space.rb +5 -8
  48. data/lib/rubocop/cop/line_continuation.rb +4 -7
  49. data/lib/rubocop/cop/line_length.rb +3 -3
  50. data/lib/rubocop/cop/loop.rb +33 -0
  51. data/lib/rubocop/cop/method_and_variable_snake_case.rb +42 -19
  52. data/lib/rubocop/cop/method_length.rb +34 -37
  53. data/lib/rubocop/cop/new_lambda_literal.rb +8 -6
  54. data/lib/rubocop/cop/not.rb +10 -4
  55. data/lib/rubocop/cop/numeric_literals.rb +9 -7
  56. data/lib/rubocop/cop/offence.rb +1 -1
  57. data/lib/rubocop/cop/op_method.rb +12 -22
  58. data/lib/rubocop/cop/parameter_lists.rb +12 -6
  59. data/lib/rubocop/cop/parentheses_around_condition.rb +11 -11
  60. data/lib/rubocop/cop/percent_r.rb +7 -7
  61. data/lib/rubocop/cop/reduce_arguments.rb +13 -51
  62. data/lib/rubocop/cop/rescue_exception.rb +13 -29
  63. data/lib/rubocop/cop/rescue_modifier.rb +5 -8
  64. data/lib/rubocop/cop/semicolon.rb +15 -74
  65. data/lib/rubocop/cop/single_line_methods.rb +28 -44
  66. data/lib/rubocop/cop/space_after_comma_etc.rb +29 -9
  67. data/lib/rubocop/cop/space_after_control_keyword.rb +16 -15
  68. data/lib/rubocop/cop/string_literals.rb +9 -35
  69. data/lib/rubocop/cop/surrounding_space.rb +213 -112
  70. data/lib/rubocop/cop/symbol_array.rb +9 -7
  71. data/lib/rubocop/cop/symbol_name.rb +23 -0
  72. data/lib/rubocop/cop/syntax.rb +14 -7
  73. data/lib/rubocop/cop/tab.rb +3 -3
  74. data/lib/rubocop/cop/ternary_operator.rb +26 -24
  75. data/lib/rubocop/cop/trailing_whitespace.rb +3 -5
  76. data/lib/rubocop/cop/trivial_accessors.rb +18 -95
  77. data/lib/rubocop/cop/unless_else.rb +11 -7
  78. data/lib/rubocop/cop/util.rb +26 -0
  79. data/lib/rubocop/cop/variable_interpolation.rb +18 -10
  80. data/lib/rubocop/cop/when_then.rb +6 -17
  81. data/lib/rubocop/cop/word_array.rb +18 -19
  82. data/lib/rubocop/version.rb +1 -1
  83. data/rubocop.gemspec +1 -0
  84. data/spec/project_spec.rb +1 -1
  85. data/spec/rubocop/cli_spec.rb +16 -9
  86. data/spec/rubocop/config_spec.rb +13 -3
  87. data/spec/rubocop/cops/access_control_spec.rb +129 -0
  88. data/spec/rubocop/cops/alias_spec.rb +2 -6
  89. data/spec/rubocop/cops/align_parameters_spec.rb +58 -71
  90. data/spec/rubocop/cops/and_or_spec.rb +37 -0
  91. data/spec/rubocop/cops/ascii_comments_spec.rb +3 -4
  92. data/spec/rubocop/cops/ascii_identifiers_spec.rb +3 -4
  93. data/spec/rubocop/cops/avoid_class_vars_spec.rb +7 -2
  94. data/spec/rubocop/cops/avoid_for_spec.rb +1 -4
  95. data/spec/rubocop/cops/{avoid_global_vars.rb → avoid_global_vars_spec.rb} +4 -4
  96. data/spec/rubocop/cops/avoid_perl_backrefs_spec.rb +1 -1
  97. data/spec/rubocop/cops/avoid_perlisms_spec.rb +5 -5
  98. data/spec/rubocop/cops/block_comments_spec.rb +0 -4
  99. data/spec/rubocop/cops/blocks_spec.rb +33 -0
  100. data/spec/rubocop/cops/case_indentation_spec.rb +5 -5
  101. data/spec/rubocop/cops/class_and_module_camel_case_spec.rb +15 -5
  102. data/spec/rubocop/cops/class_methods_spec.rb +4 -4
  103. data/spec/rubocop/cops/collection_methods_spec.rb +9 -4
  104. data/spec/rubocop/cops/colon_method_call_spec.rb +11 -5
  105. data/spec/rubocop/cops/constant_name_spec.rb +42 -0
  106. data/spec/rubocop/cops/def_with_parentheses_spec.rb +13 -8
  107. data/spec/rubocop/cops/def_without_parentheses_spec.rb +11 -5
  108. data/spec/rubocop/cops/empty_line_between_defs_spec.rb +38 -38
  109. data/spec/rubocop/cops/empty_lines_spec.rb +15 -3
  110. data/spec/rubocop/cops/empty_literal_spec.rb +90 -0
  111. data/spec/rubocop/cops/encoding_spec.rb +9 -9
  112. data/spec/rubocop/cops/end_of_line_spec.rb +2 -2
  113. data/spec/rubocop/cops/ensure_return_spec.rb +1 -3
  114. data/spec/rubocop/cops/eval_spec.rb +8 -5
  115. data/spec/rubocop/cops/favor_join_spec.rb +1 -5
  116. data/spec/rubocop/cops/favor_modifier_spec.rb +16 -14
  117. data/spec/rubocop/cops/{favor_percent_r.rb → favor_percent_r_spec.rb} +6 -6
  118. data/spec/rubocop/cops/favor_sprintf_spec.rb +3 -9
  119. data/spec/rubocop/cops/favor_unless_over_negated_if_spec.rb +4 -4
  120. data/spec/rubocop/cops/favor_until_over_negated_while_spec.rb +3 -3
  121. data/spec/rubocop/cops/handle_exceptions_spec.rb +1 -3
  122. data/spec/rubocop/cops/hash_syntax_spec.rb +11 -6
  123. data/spec/rubocop/cops/if_with_semicolon_spec.rb +7 -1
  124. data/spec/rubocop/cops/leading_comment_space_spec.rb +0 -7
  125. data/spec/rubocop/cops/line_continuation_spec.rb +2 -2
  126. data/spec/rubocop/cops/line_length_spec.rb +2 -2
  127. data/spec/rubocop/cops/loop_spec.rb +31 -0
  128. data/spec/rubocop/cops/method_and_variable_snake_case_spec.rb +38 -12
  129. data/spec/rubocop/cops/method_length_spec.rb +85 -85
  130. data/spec/rubocop/cops/multiline_if_then_spec.rb +15 -15
  131. data/spec/rubocop/cops/new_lambda_literal_spec.rb +3 -3
  132. data/spec/rubocop/cops/not_spec.rb +1 -4
  133. data/spec/rubocop/cops/numeric_literals_spec.rb +13 -13
  134. data/spec/rubocop/cops/one_line_conditional_spec.rb +1 -1
  135. data/spec/rubocop/cops/op_method_spec.rb +2 -9
  136. data/spec/rubocop/cops/parameter_lists_spec.rb +7 -7
  137. data/spec/rubocop/cops/parentheses_around_condition_spec.rb +41 -44
  138. data/spec/rubocop/cops/percent_r_spec.rb +6 -6
  139. data/spec/rubocop/cops/reduce_arguments_spec.rb +4 -4
  140. data/spec/rubocop/cops/rescue_exception_spec.rb +48 -8
  141. data/spec/rubocop/cops/rescue_modifier_spec.rb +2 -5
  142. data/spec/rubocop/cops/semicolon_spec.rb +2 -30
  143. data/spec/rubocop/cops/single_line_methods_spec.rb +13 -13
  144. data/spec/rubocop/cops/space_after_colon_spec.rb +3 -3
  145. data/spec/rubocop/cops/space_after_comma_spec.rb +14 -2
  146. data/spec/rubocop/cops/space_after_control_keyword_spec.rb +42 -3
  147. data/spec/rubocop/cops/space_after_semicolon_spec.rb +2 -2
  148. data/spec/rubocop/cops/space_around_braces_spec.rb +18 -3
  149. data/spec/rubocop/cops/space_around_equals_in_default_parameter_spec.rb +4 -4
  150. data/spec/rubocop/cops/space_around_operators_spec.rb +82 -27
  151. data/spec/rubocop/cops/space_inside_brackets_spec.rb +13 -7
  152. data/spec/rubocop/cops/space_inside_hash_literal_braces_spec.rb +14 -9
  153. data/spec/rubocop/cops/space_inside_parens_spec.rb +7 -3
  154. data/spec/rubocop/cops/string_literals_spec.rb +17 -5
  155. data/spec/rubocop/cops/symbol_array_spec.rb +18 -2
  156. data/spec/rubocop/cops/symbol_name_spec.rb +119 -0
  157. data/spec/rubocop/cops/syntax_spec.rb +25 -18
  158. data/spec/rubocop/cops/tab_spec.rb +2 -2
  159. data/spec/rubocop/cops/ternary_operator_spec.rb +13 -17
  160. data/spec/rubocop/cops/trailing_whitespace_spec.rb +3 -3
  161. data/spec/rubocop/cops/trivial_accessors_spec.rb +17 -20
  162. data/spec/rubocop/cops/unless_else_spec.rb +8 -8
  163. data/spec/rubocop/cops/variable_interpolation_spec.rb +0 -5
  164. data/spec/rubocop/cops/when_then_spec.rb +14 -21
  165. data/spec/rubocop/cops/word_array_spec.rb +12 -4
  166. data/spec/spec_helper.rb +12 -4
  167. metadata +40 -31
  168. data/.document +0 -5
  169. data/lib/rubocop/cop/ampersands_pipes_vs_and_or.rb +0 -25
  170. data/lib/rubocop/cop/array_literal.rb +0 -61
  171. data/lib/rubocop/cop/brace_after_percent.rb +0 -32
  172. data/lib/rubocop/cop/grammar.rb +0 -138
  173. data/lib/rubocop/cop/hash_literal.rb +0 -61
  174. data/lib/rubocop/cop/percent_literals.rb +0 -25
  175. data/lib/rubocop/cop/symbol_snake_case.rb +0 -47
  176. data/spec/rubocop/cops/ampersands_pipes_vs_and_or_spec.rb +0 -57
  177. data/spec/rubocop/cops/array_literal_spec.rb +0 -46
  178. data/spec/rubocop/cops/brace_after_percent_spec.rb +0 -33
  179. data/spec/rubocop/cops/grammar_spec.rb +0 -81
  180. data/spec/rubocop/cops/hash_literal_spec.rb +0 -46
  181. data/spec/rubocop/cops/multiline_blocks_spec.rb +0 -24
  182. data/spec/rubocop/cops/percent_literals_spec.rb +0 -47
  183. data/spec/rubocop/cops/single_line_blocks_spec.rb +0 -22
  184. 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, '', src)
14
- expect(def_par.offences.map(&:message)).to eq(
15
- ["Omit the parentheses in defs when the method doesn't accept any " +
16
- 'arguments.'])
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, '', src)
23
- expect(def_par.offences.map(&:message)).to be_empty
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, '', src)
29
- expect(def_par.offences.map(&:message)).to be_empty
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, '', src)
14
- expect(def_par.offences.map(&:message)).to eq(
15
- ['Use def with parentheses when there are arguments.'])
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, '', src)
22
- expect(def_par.offences.map(&:message)).to be_empty
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, '', ['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(2)
25
- expect(empty_lines.offences.map(&:line_number).sort).to eq([7, 11])
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, '', ['x = 0',
32
- 'def m',
33
- 'end'])
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, '', [' x = 0',
41
- ' # 123',
42
- ' def m',
43
- ' end'])
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, '', ['class K',
49
- ' def m',
50
- ' end',
51
- 'end'])
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, '', ['class A',
57
- ' # calculates value',
58
- ' def m',
59
- ' end',
60
- '',
61
- ' private',
62
- ' # calculates size',
63
- ' def n',
64
- ' end',
65
- 'end',
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, '', source)
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, 'file.rb',
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, 'file.rb', ['result = "test
29
+ inspect_source(empty_lines, ['result = "test
18
30
 
19
31
 
20
32
 
21
- string"'])
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, 'file.rb', ['def foo() end'])
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, 'file.rb', ['# encoding: utf-8',
19
- 'def foo() end'])
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, 'file.rb', ['#!/usr/bin/env ruby',
26
- '# encoding: utf-8',
27
- 'def foo() end'])
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, 'file.rb', ['def foo() end',
34
- '# encoding: utf-8'])
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, 'file.rb', ['def foo() end'])
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, 'file.rb', ["x=0\r", ''])
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, 'file.rb', ["x=0\r"])
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::ERROR_MESSAGE])
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::ERROR_MESSAGE])
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::ERROR_MESSAGE])
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