rubocop 0.13.1 → 0.14.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 (222) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/CHANGELOG.md +42 -0
  4. data/README.md +59 -54
  5. data/config/default.yml +124 -95
  6. data/config/disabled.yml +4 -0
  7. data/config/enabled.yml +286 -264
  8. data/lib/rubocop.rb +10 -3
  9. data/lib/rubocop/cli.rb +10 -171
  10. data/lib/rubocop/cop/cop.rb +14 -11
  11. data/lib/rubocop/cop/lint/debugger.rb +35 -0
  12. data/lib/rubocop/cop/lint/syntax.rb +34 -0
  13. data/lib/rubocop/cop/offence.rb +15 -23
  14. data/lib/rubocop/cop/style/align_array.rb +1 -10
  15. data/lib/rubocop/cop/style/align_hash.rb +14 -2
  16. data/lib/rubocop/cop/style/align_parameters.rb +1 -11
  17. data/lib/rubocop/cop/style/and_or.rb +13 -11
  18. data/lib/rubocop/cop/style/attr.rb +1 -1
  19. data/lib/rubocop/cop/style/autocorrect_alignment.rb +31 -6
  20. data/lib/rubocop/cop/style/blocks.rb +14 -6
  21. data/lib/rubocop/cop/style/character_literal.rb +1 -1
  22. data/lib/rubocop/cop/style/class_length.rb +38 -0
  23. data/lib/rubocop/cop/style/collection_methods.rb +1 -1
  24. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  25. data/lib/rubocop/cop/style/configurable_naming.rb +47 -0
  26. data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
  27. data/lib/rubocop/cop/style/empty_literal.rb +1 -1
  28. data/lib/rubocop/cop/style/even_odd.rb +7 -3
  29. data/lib/rubocop/cop/style/hash_methods.rb +1 -1
  30. data/lib/rubocop/cop/style/hash_syntax.rb +36 -7
  31. data/lib/rubocop/cop/style/lambda_call.rb +36 -11
  32. data/lib/rubocop/cop/style/method_call_parentheses.rb +1 -1
  33. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +41 -0
  34. data/lib/rubocop/cop/style/method_length.rb +2 -13
  35. data/lib/rubocop/cop/style/method_name.rb +42 -0
  36. data/lib/rubocop/cop/style/numeric_literals.rb +4 -0
  37. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  38. data/lib/rubocop/cop/style/raise_args.rb +60 -0
  39. data/lib/rubocop/cop/style/redundant_exception.rb +32 -0
  40. data/lib/rubocop/cop/style/redundant_return.rb +14 -5
  41. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  42. data/lib/rubocop/cop/style/semicolon.rb +13 -4
  43. data/lib/rubocop/cop/style/signal_exception.rb +63 -14
  44. data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
  45. data/lib/rubocop/cop/style/string_help.rb +4 -1
  46. data/lib/rubocop/cop/style/string_literals.rb +34 -11
  47. data/lib/rubocop/cop/style/surrounding_space.rb +64 -17
  48. data/lib/rubocop/cop/style/tab.rb +1 -1
  49. data/lib/rubocop/cop/style/variable_name.rb +44 -0
  50. data/lib/rubocop/cop/style/when_then.rb +1 -1
  51. data/lib/rubocop/cop/style/while_until_do.rb +1 -1
  52. data/lib/rubocop/cop/team.rb +4 -7
  53. data/lib/rubocop/cop/util.rb +12 -0
  54. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
  55. data/lib/rubocop/formatter/emacs_style_formatter.rb +5 -2
  56. data/lib/rubocop/formatter/json_formatter.rb +1 -0
  57. data/lib/rubocop/formatter/progress_formatter.rb +9 -13
  58. data/lib/rubocop/formatter/simple_text_formatter.rb +63 -15
  59. data/lib/rubocop/options.rb +184 -0
  60. data/lib/rubocop/processed_source.rb +4 -0
  61. data/lib/rubocop/version.rb +1 -1
  62. data/rubocop.gemspec +1 -1
  63. data/spec/rubocop/cli_spec.rb +870 -1001
  64. data/spec/rubocop/config_spec.rb +13 -13
  65. data/spec/rubocop/config_store_spec.rb +38 -37
  66. data/spec/rubocop/cop/commissioner_spec.rb +42 -46
  67. data/spec/rubocop/cop/cop_spec.rb +72 -77
  68. data/spec/rubocop/cop/corrector_spec.rb +51 -55
  69. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +100 -106
  70. data/spec/rubocop/cop/lint/block_alignment_spec.rb +403 -409
  71. data/spec/rubocop/cop/lint/debugger_spec.rb +39 -0
  72. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +19 -25
  73. data/spec/rubocop/cop/lint/end_alignment_spec.rb +50 -56
  74. data/spec/rubocop/cop/lint/end_in_method_spec.rb +20 -26
  75. data/spec/rubocop/cop/lint/ensure_return_spec.rb +30 -36
  76. data/spec/rubocop/cop/lint/eval_spec.rb +25 -31
  77. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +22 -28
  78. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +51 -57
  79. data/spec/rubocop/cop/lint/loop_spec.rb +17 -23
  80. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +51 -57
  81. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +105 -111
  82. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +230 -236
  83. data/spec/rubocop/cop/lint/syntax_spec.rb +33 -0
  84. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +51 -57
  85. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1544 -1550
  86. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +21 -27
  87. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +119 -125
  88. data/spec/rubocop/cop/lint/void_spec.rb +50 -56
  89. data/spec/rubocop/cop/offence_spec.rb +101 -131
  90. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +6 -12
  91. data/spec/rubocop/cop/rails/read_attribute_spec.rb +6 -12
  92. data/spec/rubocop/cop/rails/validation_spec.rb +13 -19
  93. data/spec/rubocop/cop/style/access_control_spec.rb +146 -152
  94. data/spec/rubocop/cop/style/alias_spec.rb +30 -36
  95. data/spec/rubocop/cop/style/align_array_spec.rb +57 -56
  96. data/spec/rubocop/cop/style/align_hash_spec.rb +256 -237
  97. data/spec/rubocop/cop/style/align_parameters_spec.rb +216 -202
  98. data/spec/rubocop/cop/style/and_or_spec.rb +51 -55
  99. data/spec/rubocop/cop/style/ascii_comments_spec.rb +14 -20
  100. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +26 -32
  101. data/spec/rubocop/cop/style/attr_spec.rb +11 -17
  102. data/spec/rubocop/cop/style/begin_block_spec.rb +6 -12
  103. data/spec/rubocop/cop/style/block_comments_spec.rb +13 -19
  104. data/spec/rubocop/cop/style/block_nesting_spec.rb +134 -140
  105. data/spec/rubocop/cop/style/blocks_spec.rb +81 -84
  106. data/spec/rubocop/cop/style/case_equality_spec.rb +5 -11
  107. data/spec/rubocop/cop/style/case_indentation_spec.rb +71 -77
  108. data/spec/rubocop/cop/style/character_literal_spec.rb +31 -37
  109. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +31 -37
  110. data/spec/rubocop/cop/style/class_length_spec.rb +65 -0
  111. data/spec/rubocop/cop/style/class_methods_spec.rb +35 -41
  112. data/spec/rubocop/cop/style/class_vars_spec.rb +11 -17
  113. data/spec/rubocop/cop/style/collection_methods_spec.rb +41 -47
  114. data/spec/rubocop/cop/style/colon_method_call_spec.rb +45 -51
  115. data/spec/rubocop/cop/style/comment_annotation_spec.rb +79 -85
  116. data/spec/rubocop/cop/style/constant_name_spec.rb +45 -51
  117. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +28 -34
  118. data/spec/rubocop/cop/style/def_without_parentheses_spec.rb +23 -29
  119. data/spec/rubocop/cop/style/documentation_spec.rb +60 -66
  120. data/spec/rubocop/cop/style/dot_position_spec.rb +50 -56
  121. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +109 -110
  122. data/spec/rubocop/cop/style/empty_lines_spec.rb +28 -34
  123. data/spec/rubocop/cop/style/empty_literal_spec.rb +80 -86
  124. data/spec/rubocop/cop/style/encoding_spec.rb +50 -56
  125. data/spec/rubocop/cop/style/end_block_spec.rb +6 -12
  126. data/spec/rubocop/cop/style/end_of_line_spec.rb +13 -19
  127. data/spec/rubocop/cop/style/even_odd_spec.rb +69 -41
  128. data/spec/rubocop/cop/style/favor_join_spec.rb +21 -27
  129. data/spec/rubocop/cop/style/favor_modifier_spec.rb +180 -176
  130. data/spec/rubocop/cop/style/favor_sprintf_spec.rb +41 -47
  131. data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +63 -69
  132. data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +32 -38
  133. data/spec/rubocop/cop/style/final_newline_spec.rb +16 -22
  134. data/spec/rubocop/cop/style/for_spec.rb +18 -24
  135. data/spec/rubocop/cop/style/global_vars_spec.rb +23 -29
  136. data/spec/rubocop/cop/style/hash_methods_spec.rb +39 -45
  137. data/spec/rubocop/cop/style/hash_syntax_spec.rb +93 -65
  138. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +11 -17
  139. data/spec/rubocop/cop/style/indentation_width_spec.rb +377 -383
  140. data/spec/rubocop/cop/style/lambda_call_spec.rb +40 -22
  141. data/spec/rubocop/cop/style/lambda_spec.rb +30 -34
  142. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +44 -50
  143. data/spec/rubocop/cop/style/line_length_spec.rb +11 -17
  144. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +14 -20
  145. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +60 -0
  146. data/spec/rubocop/cop/style/method_length_spec.rb +127 -133
  147. data/spec/rubocop/cop/style/method_name_spec.rb +103 -0
  148. data/spec/rubocop/cop/style/module_function_spec.rb +16 -22
  149. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +64 -70
  150. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +74 -80
  151. data/spec/rubocop/cop/style/nil_comparison_spec.rb +20 -26
  152. data/spec/rubocop/cop/style/not_spec.rb +13 -19
  153. data/spec/rubocop/cop/style/numeric_literals_spec.rb +36 -35
  154. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +5 -11
  155. data/spec/rubocop/cop/style/op_method_spec.rb +61 -67
  156. data/spec/rubocop/cop/style/parameter_lists_spec.rb +31 -37
  157. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +62 -68
  158. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +9 -15
  159. data/spec/rubocop/cop/style/proc_spec.rb +13 -19
  160. data/spec/rubocop/cop/style/raise_args_spec.rb +55 -0
  161. data/spec/rubocop/cop/style/reduce_arguments_spec.rb +49 -55
  162. data/spec/rubocop/cop/style/redundant_begin_spec.rb +47 -53
  163. data/spec/rubocop/cop/style/redundant_exception_spec.rb +27 -0
  164. data/spec/rubocop/cop/style/redundant_return_spec.rb +164 -72
  165. data/spec/rubocop/cop/style/redundant_self_spec.rb +109 -115
  166. data/spec/rubocop/cop/style/regexp_literal_spec.rb +57 -63
  167. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +99 -105
  168. data/spec/rubocop/cop/style/semicolon_spec.rb +95 -90
  169. data/spec/rubocop/cop/style/signal_exception_spec.rb +248 -95
  170. data/spec/rubocop/cop/style/single_line_methods_spec.rb +45 -51
  171. data/spec/rubocop/cop/style/space_after_colon_spec.rb +14 -20
  172. data/spec/rubocop/cop/style/space_after_comma_spec.rb +16 -22
  173. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +48 -54
  174. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +49 -55
  175. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +10 -16
  176. data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +118 -50
  177. data/spec/rubocop/cop/style/space_around_equals_in_default_parameter_spec.rb +18 -24
  178. data/spec/rubocop/cop/style/space_around_operators_spec.rb +204 -210
  179. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +36 -42
  180. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +39 -45
  181. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +62 -68
  182. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +18 -24
  183. data/spec/rubocop/cop/style/special_global_vars_spec.rb +40 -46
  184. data/spec/rubocop/cop/style/string_literals_spec.rb +148 -70
  185. data/spec/rubocop/cop/style/symbol_array_spec.rb +28 -34
  186. data/spec/rubocop/cop/style/symbol_name_spec.rb +132 -138
  187. data/spec/rubocop/cop/style/tab_spec.rb +9 -15
  188. data/spec/rubocop/cop/style/ternary_operator_spec.rb +25 -31
  189. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +10 -16
  190. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +14 -20
  191. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +374 -380
  192. data/spec/rubocop/cop/style/unless_else_spec.rb +17 -23
  193. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +36 -42
  194. data/spec/rubocop/cop/style/variable_name_spec.rb +83 -0
  195. data/spec/rubocop/cop/style/when_then_spec.rb +31 -37
  196. data/spec/rubocop/cop/style/while_until_do_spec.rb +47 -53
  197. data/spec/rubocop/cop/style/word_array_spec.rb +49 -55
  198. data/spec/rubocop/cop/team_spec.rb +125 -127
  199. data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +176 -180
  200. data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +580 -586
  201. data/spec/rubocop/cop/variable_inspector/scope_spec.rb +140 -146
  202. data/spec/rubocop/cop/variable_inspector/variable_spec.rb +52 -58
  203. data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +217 -223
  204. data/spec/rubocop/cop/variable_inspector_spec.rb +15 -19
  205. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +35 -36
  206. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +2 -2
  207. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +24 -1
  208. data/spec/rubocop/formatter/file_list_formatter_spec.rb +1 -1
  209. data/spec/rubocop/formatter/formatter_set_spec.rb +3 -3
  210. data/spec/rubocop/formatter/json_formatter_spec.rb +7 -2
  211. data/spec/rubocop/formatter/offence_count_formatter_spec.rb +1 -1
  212. data/spec/rubocop/formatter/progress_formatter_spec.rb +1 -1
  213. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +55 -6
  214. data/spec/rubocop/options_spec.rb +233 -0
  215. data/spec/rubocop/processed_source_spec.rb +85 -42
  216. data/spec/rubocop/source_parser_spec.rb +108 -110
  217. data/spec/rubocop/target_finder_spec.rb +125 -127
  218. data/spec/rubocop/token_spec.rb +15 -17
  219. metadata +32 -8
  220. data/lib/rubocop/backports/bsearch.rb +0 -39
  221. data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +0 -77
  222. data/spec/rubocop/cop/style/method_and_variable_snake_case_spec.rb +0 -102
@@ -2,190 +2,184 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module VariableInspector
8
- describe Scope do
9
- include ASTHelper
10
- include AST::Sexp
11
-
12
- describe '.new' do
13
- context 'when non scope node is passed' do
14
- it 'raises error' do
15
- node = s(:lvasgn)
16
- expect { Scope.new(node) }.to raise_error(ArgumentError)
17
- end
18
- end
5
+ describe Rubocop::Cop::VariableInspector::Scope do
6
+ include ASTHelper
7
+ include AST::Sexp
8
+
9
+ describe '.new' do
10
+ context 'when non scope node is passed' do
11
+ it 'raises error' do
12
+ node = s(:lvasgn)
13
+ expect { described_class.new(node) }.to raise_error(ArgumentError)
14
+ end
15
+ end
19
16
 
20
- context 'when begin node is passed' do
21
- it 'accepts that as pseudo scope for top level scope' do
22
- node = s(:begin)
23
- expect { Scope.new(node) }.not_to raise_error
24
- end
25
- end
26
- end
17
+ context 'when begin node is passed' do
18
+ it 'accepts that as pseudo scope for top level scope' do
19
+ node = s(:begin)
20
+ expect { described_class.new(node) }.not_to raise_error
21
+ end
22
+ end
23
+ end
27
24
 
28
- let(:ast) do
29
- processed_source = Rubocop::SourceParser.parse(source)
30
- processed_source.ast
31
- end
25
+ let(:ast) do
26
+ processed_source = Rubocop::SourceParser.parse(source)
27
+ processed_source.ast
28
+ end
32
29
 
33
- let(:scope_node_type) { :def }
30
+ let(:scope_node_type) { :def }
34
31
 
35
- let(:scope_node) do
36
- found_node = scan_node(ast, include_origin_node: true) do |node|
37
- break node if node.type == scope_node_type
38
- end
39
- fail 'No scope node found!' unless found_node
40
- found_node
41
- end
32
+ let(:scope_node) do
33
+ found_node = scan_node(ast, include_origin_node: true) do |node|
34
+ break node if node.type == scope_node_type
35
+ end
36
+ fail 'No scope node found!' unless found_node
37
+ found_node
38
+ end
42
39
 
43
- subject(:scope) { Scope.new(scope_node) }
44
-
45
- describe '#ancestors_of_node' do
46
- let(:source) do
47
- <<-END
48
- puts 1
49
-
50
- class SomeClass
51
- def some_method
52
- foo = 1
53
-
54
- if foo > 0
55
- while foo < 10
56
- this_is_target
57
- foo += 1
58
- end
59
- else
60
- do_something
61
- end
62
- end
63
- end
64
- END
65
- end
40
+ subject(:scope) { described_class.new(scope_node) }
66
41
 
67
- let(:target_node) do
68
- found_node = scan_node(ast) do |node|
69
- next unless node.type == :send
70
- _receiver_node, method_name = *node
71
- break node if method_name == :this_is_target
72
- end
73
- fail 'No target node found!' unless found_node
74
- found_node
75
- end
42
+ describe '#ancestors_of_node' do
43
+ let(:source) do
44
+ <<-END
45
+ puts 1
76
46
 
77
- it 'returns nodes in between the scope node and the passed node' do
78
- ancestor_nodes = scope.ancestors_of_node(target_node)
79
- ancestor_types = ancestor_nodes.map(&:type)
80
- expect(ancestor_types).to eq([:begin, :if, :while, :begin])
81
- end
82
- end
47
+ class SomeClass
48
+ def some_method
49
+ foo = 1
83
50
 
84
- describe '#body_node' do
85
- shared_examples 'returns the body node' do
86
- it 'returns the body node' do
87
- expect(scope.body_node.children[1]).to eq(:this_is_target)
51
+ if foo > 0
52
+ while foo < 10
53
+ this_is_target
54
+ foo += 1
55
+ end
56
+ else
57
+ do_something
88
58
  end
89
59
  end
60
+ end
61
+ END
62
+ end
90
63
 
91
- context 'when the scope is instance method' do
92
- let(:source) do
93
- <<-END
94
- def some_method
95
- this_is_target
96
- end
97
- END
98
- end
64
+ let(:target_node) do
65
+ found_node = scan_node(ast) do |node|
66
+ next unless node.type == :send
67
+ _receiver_node, method_name = *node
68
+ break node if method_name == :this_is_target
69
+ end
70
+ fail 'No target node found!' unless found_node
71
+ found_node
72
+ end
99
73
 
100
- let(:scope_node_type) { :def }
74
+ it 'returns nodes in between the scope node and the passed node' do
75
+ ancestor_nodes = scope.ancestors_of_node(target_node)
76
+ ancestor_types = ancestor_nodes.map(&:type)
77
+ expect(ancestor_types).to eq([:begin, :if, :while, :begin])
78
+ end
79
+ end
101
80
 
102
- include_examples 'returns the body node'
81
+ describe '#body_node' do
82
+ shared_examples 'returns the body node' do
83
+ it 'returns the body node' do
84
+ expect(scope.body_node.children[1]).to eq(:this_is_target)
85
+ end
86
+ end
87
+
88
+ context 'when the scope is instance method' do
89
+ let(:source) do
90
+ <<-END
91
+ def some_method
92
+ this_is_target
103
93
  end
94
+ END
95
+ end
104
96
 
105
- context 'when the scope is singleton method' do
106
- let(:source) do
107
- <<-END
108
- def self.some_method
109
- this_is_target
110
- end
111
- END
112
- end
97
+ let(:scope_node_type) { :def }
113
98
 
114
- let(:scope_node_type) { :defs }
99
+ include_examples 'returns the body node'
100
+ end
115
101
 
116
- include_examples 'returns the body node'
102
+ context 'when the scope is singleton method' do
103
+ let(:source) do
104
+ <<-END
105
+ def self.some_method
106
+ this_is_target
117
107
  end
108
+ END
109
+ end
118
110
 
119
- context 'when the scope is module' do
120
- let(:source) do
121
- <<-END
122
- module SomeModule
123
- this_is_target
124
- end
125
- END
126
- end
111
+ let(:scope_node_type) { :defs }
127
112
 
128
- let(:scope_node_type) { :module }
113
+ include_examples 'returns the body node'
114
+ end
129
115
 
130
- include_examples 'returns the body node'
116
+ context 'when the scope is module' do
117
+ let(:source) do
118
+ <<-END
119
+ module SomeModule
120
+ this_is_target
131
121
  end
122
+ END
123
+ end
132
124
 
133
- context 'when the scope is class' do
134
- let(:source) do
135
- <<-END
136
- class SomeClass
137
- this_is_target
138
- end
139
- END
140
- end
125
+ let(:scope_node_type) { :module }
141
126
 
142
- let(:scope_node_type) { :class }
127
+ include_examples 'returns the body node'
128
+ end
143
129
 
144
- include_examples 'returns the body node'
130
+ context 'when the scope is class' do
131
+ let(:source) do
132
+ <<-END
133
+ class SomeClass
134
+ this_is_target
145
135
  end
136
+ END
137
+ end
146
138
 
147
- context 'when the scope is singleton class' do
148
- let(:source) do
149
- <<-END
150
- class << self
151
- this_is_target
152
- end
153
- END
154
- end
139
+ let(:scope_node_type) { :class }
155
140
 
156
- let(:scope_node_type) { :sclass }
141
+ include_examples 'returns the body node'
142
+ end
157
143
 
158
- include_examples 'returns the body node'
144
+ context 'when the scope is singleton class' do
145
+ let(:source) do
146
+ <<-END
147
+ class << self
148
+ this_is_target
159
149
  end
150
+ END
151
+ end
160
152
 
161
- context 'when the scope is block' do
162
- let(:source) do
163
- <<-END
164
- 1.times do
165
- this_is_target
166
- end
167
- END
168
- end
153
+ let(:scope_node_type) { :sclass }
169
154
 
170
- let(:scope_node_type) { :block }
155
+ include_examples 'returns the body node'
156
+ end
171
157
 
172
- include_examples 'returns the body node'
158
+ context 'when the scope is block' do
159
+ let(:source) do
160
+ <<-END
161
+ 1.times do
162
+ this_is_target
173
163
  end
164
+ END
165
+ end
174
166
 
175
- context 'when the scope is top level' do
176
- let(:source) do
177
- <<-END
178
- foo = 1
179
- this_is_target
180
- END
181
- end
167
+ let(:scope_node_type) { :block }
182
168
 
183
- let(:scope_node_type) { :begin }
169
+ include_examples 'returns the body node'
170
+ end
184
171
 
185
- include_examples 'returns the body node'
186
- end
187
- end
172
+ context 'when the scope is top level' do
173
+ let(:source) do
174
+ <<-END
175
+ foo = 1
176
+ this_is_target
177
+ END
188
178
  end
179
+
180
+ let(:scope_node_type) { :begin }
181
+
182
+ include_examples 'returns the body node'
189
183
  end
190
184
  end
191
185
  end
@@ -2,77 +2,71 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- module Rubocop
6
- module Cop
7
- module VariableInspector
8
- describe Variable do
9
- include AST::Sexp
5
+ describe Rubocop::Cop::VariableInspector::Variable do
6
+ include AST::Sexp
10
7
 
11
- describe '.new' do
12
- context 'when non variable declaration node is passed' do
13
- it 'raises error' do
14
- name = :foo
15
- declaration_node = s(:def)
16
- scope = Scope.new(s(:class))
17
- expect { Variable.new(name, declaration_node, scope) }
18
- .to raise_error(ArgumentError)
19
- end
20
- end
21
- end
22
-
23
- describe '#referenced?' do
24
- let(:name) { :foo }
25
- let(:declaration_node) { s(:arg, name) }
26
- let(:scope) { double('scope') }
27
- let(:variable) { Variable.new(name, declaration_node, scope) }
8
+ describe '.new' do
9
+ context 'when non variable declaration node is passed' do
10
+ it 'raises error' do
11
+ name = :foo
12
+ declaration_node = s(:def)
13
+ scope = Rubocop::Cop::VariableInspector::Scope.new(s(:class))
14
+ expect { described_class.new(name, declaration_node, scope) }
15
+ .to raise_error(ArgumentError)
16
+ end
17
+ end
18
+ end
28
19
 
29
- subject { variable.referenced? }
20
+ describe '#referenced?' do
21
+ let(:name) { :foo }
22
+ let(:declaration_node) { s(:arg, name) }
23
+ let(:scope) { double('scope') }
24
+ let(:variable) { described_class.new(name, declaration_node, scope) }
30
25
 
31
- context 'when the variable is not yet assigned' do
32
- it { should be_false }
33
- end
26
+ subject { variable.referenced? }
34
27
 
35
- context 'when the variable has an assignment' do
36
- before do
37
- variable.assign(s(:lvasgn, :foo))
38
- end
28
+ context 'when the variable is not yet assigned' do
29
+ it { should be_false }
30
+ end
39
31
 
40
- context 'and the assignment is not yet referenced' do
41
- it { should be_false }
42
- end
32
+ context 'when the variable has an assignment' do
33
+ before do
34
+ variable.assign(s(:lvasgn, :foo))
35
+ end
43
36
 
44
- context 'and the assignment is referenced' do
45
- before do
46
- variable.assignments.first.reference!
47
- end
37
+ context 'and the assignment is not yet referenced' do
38
+ it { should be_false }
39
+ end
48
40
 
49
- it { should be_true }
50
- end
51
- end
41
+ context 'and the assignment is referenced' do
42
+ before do
43
+ variable.assignments.first.reference!
44
+ end
52
45
 
53
- context 'when the variable has multiple assignments' do
54
- before do
55
- variable.assign(s(:lvasgn, :foo))
56
- variable.assign(s(:lvasgn, :foo))
57
- end
46
+ it { should be_true }
47
+ end
48
+ end
58
49
 
59
- context 'and only once assignment is referenced' do
60
- before do
61
- variable.assignments[1].reference!
62
- end
50
+ context 'when the variable has multiple assignments' do
51
+ before do
52
+ variable.assign(s(:lvasgn, :foo))
53
+ variable.assign(s(:lvasgn, :foo))
54
+ end
63
55
 
64
- it { should be_true }
65
- end
56
+ context 'and only once assignment is referenced' do
57
+ before do
58
+ variable.assignments[1].reference!
59
+ end
66
60
 
67
- context 'and all assignments are referenced' do
68
- before do
69
- variable.assignments.each { |a| a.reference! }
70
- end
61
+ it { should be_true }
62
+ end
71
63
 
72
- it { should be_true }
73
- end
74
- end
64
+ context 'and all assignments are referenced' do
65
+ before do
66
+ variable.assignments.each { |a| a.reference! }
75
67
  end
68
+
69
+ it { should be_true }
76
70
  end
77
71
  end
78
72
  end