ruby-lint 1.1.0 → 2.0.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.
Files changed (205) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +43 -29
  3. data/LICENSE +1 -1
  4. data/README.md +0 -1
  5. data/bin/ruby-lint +91 -3
  6. data/checksum/ruby-lint-1.1.0.gem.sha512 +1 -0
  7. data/doc/changelog.md +30 -0
  8. data/doc/code_analysis.md +13 -0
  9. data/doc/configuration.md +5 -24
  10. data/lib/ruby-lint.rb +7 -10
  11. data/lib/ruby-lint/analysis/argument_amount.rb +2 -0
  12. data/lib/ruby-lint/analysis/base.rb +12 -0
  13. data/lib/ruby-lint/analysis/pedantics.rb +2 -0
  14. data/lib/ruby-lint/analysis/shadowing_variables.rb +2 -0
  15. data/lib/ruby-lint/analysis/undefined_methods.rb +5 -2
  16. data/lib/ruby-lint/analysis/undefined_variables.rb +2 -0
  17. data/lib/ruby-lint/analysis/unused_variables.rb +2 -0
  18. data/lib/ruby-lint/analysis/useless_equality_checks.rb +2 -0
  19. data/lib/ruby-lint/ast/node.rb +0 -15
  20. data/lib/ruby-lint/command.rb +100 -0
  21. data/lib/ruby-lint/configuration.rb +35 -66
  22. data/lib/ruby-lint/constant_path.rb +7 -2
  23. data/lib/ruby-lint/definition/ruby_object.rb +20 -6
  24. data/lib/ruby-lint/definitions/core/argf.rb +3 -3
  25. data/lib/ruby-lint/definitions/gems/minitest.rb +792 -0
  26. data/lib/ruby-lint/file_list.rb +1 -1
  27. data/lib/ruby-lint/file_loader.rb +2 -20
  28. data/lib/ruby-lint/file_scanner.rb +11 -2
  29. data/lib/ruby-lint/method_evaluation.rb +21 -0
  30. data/lib/ruby-lint/presenter/base.rb +18 -0
  31. data/lib/ruby-lint/presenter/json.rb +3 -1
  32. data/lib/ruby-lint/presenter/syntastic.rb +3 -1
  33. data/lib/ruby-lint/presenter/text.rb +3 -1
  34. data/lib/ruby-lint/runner.rb +6 -63
  35. data/lib/ruby-lint/variable_predicates.rb +3 -3
  36. data/lib/ruby-lint/version.rb +1 -1
  37. data/lib/ruby-lint/virtual_machine.rb +4 -1
  38. data/ruby-lint.gemspec +13 -4
  39. metadata +12 -187
  40. data/.editorconfig +0 -15
  41. data/.gitignore +0 -6
  42. data/.ruby-version +0 -1
  43. data/.travis.yml +0 -19
  44. data/Gemfile +0 -15
  45. data/MANIFEST +0 -469
  46. data/Rakefile +0 -25
  47. data/benchmark/bootup.rb +0 -13
  48. data/benchmark/virtual_machine.rb +0 -17
  49. data/checksum/.gitkeep +0 -0
  50. data/doc/.gitkeep +0 -0
  51. data/doc/css/.gitkeep +0 -0
  52. data/doc/images/.gitkeep +0 -0
  53. data/gen/rails/constants.txt +0 -12
  54. data/gen/rails/requires.rb +0 -2
  55. data/gen/stdlib/constants.rb +0 -30
  56. data/gen/stdlib/constants.txt +0 -214
  57. data/gen/stdlib/requires.rb +0 -64
  58. data/lib/ruby-lint/benchmark/average.rb +0 -115
  59. data/lib/ruby-lint/cache.rb +0 -121
  60. data/lib/ruby-lint/cache_entry.rb +0 -44
  61. data/lib/ruby-lint/cli.rb +0 -4
  62. data/lib/ruby-lint/cli/analyze.rb +0 -209
  63. data/lib/ruby-lint/cli/base.rb +0 -103
  64. data/lib/ruby-lint/cli/cache.rb +0 -60
  65. data/lib/ruby-lint/default_names.rb +0 -19
  66. data/lib/ruby-lint/definitions/gems/.gitkeep +0 -0
  67. data/lib/ruby-lint/node_hash.rb +0 -105
  68. data/misc/stdlib.rb +0 -66
  69. data/profiling/virtual_machine.rb +0 -20
  70. data/ruby-lint.yml +0 -7
  71. data/spec/fixtures/associating.rb +0 -7
  72. data/spec/fixtures/complex/rails/basic_controller.rb +0 -9
  73. data/spec/fixtures/complex/rcap.rb +0 -67
  74. data/spec/fixtures/complex/slop.rb +0 -701
  75. data/spec/fixtures/config.yml +0 -8
  76. data/spec/fixtures/deeply/nested/file.rb +0 -1
  77. data/spec/fixtures/file_scanner/lib/example/recursive/source.rb +0 -6
  78. data/spec/fixtures/file_scanner/lib/example/recursive/target.rb +0 -8
  79. data/spec/fixtures/file_scanner/lib/example/user.rb +0 -6
  80. data/spec/fixtures/file_scanner/lib/ruby-lint/definition/constant_proxy.rb +0 -6
  81. data/spec/fixtures/file_scanner/lib/ruby-lint/global_scope.rb +0 -6
  82. data/spec/fixtures/file_scanner/lib/test-dashes/foo.rb +0 -4
  83. data/spec/fixtures/file_scanner/rails/app/models/example/user.rb +0 -6
  84. data/spec/fixtures/file_scanner/rails/app/models/user.rb +0 -4
  85. data/spec/fixtures/invalid.rb +0 -3
  86. data/spec/fixtures/invalid_2.rb +0 -3
  87. data/spec/fixtures/syntax_error.rb +0 -1
  88. data/spec/fixtures/uses_external.rb +0 -1
  89. data/spec/fixtures/uses_external_invalid.rb +0 -3
  90. data/spec/fixtures/uses_external_namespace.rb +0 -1
  91. data/spec/fixtures/valid.rb +0 -3
  92. data/spec/ruby-lint/analysis/argument_amount_spec.rb +0 -131
  93. data/spec/ruby-lint/analysis/base_spec.rb +0 -24
  94. data/spec/ruby-lint/analysis/pedantics_spec.rb +0 -63
  95. data/spec/ruby-lint/analysis/shadowing_variables_spec.rb +0 -85
  96. data/spec/ruby-lint/analysis/undefined_methods_spec.rb +0 -337
  97. data/spec/ruby-lint/analysis/undefined_variables_spec.rb +0 -138
  98. data/spec/ruby-lint/analysis/unused_variables_spec.rb +0 -270
  99. data/spec/ruby-lint/analysis/useless_equality_checks_spec.rb +0 -107
  100. data/spec/ruby-lint/ast/node_spec.rb +0 -39
  101. data/spec/ruby-lint/cache_entry_spec.rb +0 -25
  102. data/spec/ruby-lint/cache_spec.rb +0 -53
  103. data/spec/ruby-lint/cli/analyze_spec.rb +0 -52
  104. data/spec/ruby-lint/configuration_spec.rb +0 -126
  105. data/spec/ruby-lint/constant_loader_spec.rb +0 -79
  106. data/spec/ruby-lint/constant_path.rb +0 -63
  107. data/spec/ruby-lint/definition/constant_proxy_spec.rb +0 -85
  108. data/spec/ruby-lint/definition/dsl_spec.rb +0 -135
  109. data/spec/ruby-lint/definition/registry_spec.rb +0 -106
  110. data/spec/ruby-lint/definition/ruby_method_spec.rb +0 -106
  111. data/spec/ruby-lint/definition/ruby_object_spec.rb +0 -264
  112. data/spec/ruby-lint/definition_builder/primitive_spec.rb +0 -62
  113. data/spec/ruby-lint/definition_builder/ruby_class_spec.rb +0 -107
  114. data/spec/ruby-lint/definition_builder/ruby_method_spec.rb +0 -53
  115. data/spec/ruby-lint/definition_builder/ruby_module_spec.rb +0 -52
  116. data/spec/ruby-lint/definitions/argv_spec.rb +0 -18
  117. data/spec/ruby-lint/definitions/env_spec.rb +0 -13
  118. data/spec/ruby-lint/definitions/file_spec.rb +0 -17
  119. data/spec/ruby-lint/definitions/fixnum_spec.rb +0 -18
  120. data/spec/ruby-lint/definitions/io_spec.rb +0 -15
  121. data/spec/ruby-lint/definitions/kernel_spec.rb +0 -18
  122. data/spec/ruby-lint/definitions/range_spec.rb +0 -21
  123. data/spec/ruby-lint/definitions/string_spec.rb +0 -20
  124. data/spec/ruby-lint/docstring/mapping.rb +0 -27
  125. data/spec/ruby-lint/docstring/parser_spec.rb +0 -88
  126. data/spec/ruby-lint/extensions/string_spec.rb +0 -7
  127. data/spec/ruby-lint/file_list_spec.rb +0 -25
  128. data/spec/ruby-lint/file_loader_spec.rb +0 -69
  129. data/spec/ruby-lint/file_scanner_spec.rb +0 -84
  130. data/spec/ruby-lint/inspector_spec.rb +0 -224
  131. data/spec/ruby-lint/iterator_spec.rb +0 -151
  132. data/spec/ruby-lint/method_call/.gitkeep +0 -0
  133. data/spec/ruby-lint/nested_stack_spec.rb +0 -23
  134. data/spec/ruby-lint/node_hash_spec.rb +0 -56
  135. data/spec/ruby-lint/parser_spec.rb +0 -38
  136. data/spec/ruby-lint/presenter/json_spec.rb +0 -58
  137. data/spec/ruby-lint/presenter/syntastic_spec.rb +0 -49
  138. data/spec/ruby-lint/presenter/text_spec.rb +0 -49
  139. data/spec/ruby-lint/report/entry_spec.rb +0 -58
  140. data/spec/ruby-lint/report_spec.rb +0 -39
  141. data/spec/ruby-lint/runner_spec.rb +0 -74
  142. data/spec/ruby-lint/variable_predicates_spec.rb +0 -30
  143. data/spec/ruby-lint/virtual_machine/alias_spec.rb +0 -55
  144. data/spec/ruby-lint/virtual_machine/assignments/arrays_spec.rb +0 -87
  145. data/spec/ruby-lint/virtual_machine/assignments/assignment_arguments_spec.rb +0 -14
  146. data/spec/ruby-lint/virtual_machine/assignments/constants_spec.rb +0 -23
  147. data/spec/ruby-lint/virtual_machine/assignments/hashes_spec.rb +0 -52
  148. data/spec/ruby-lint/virtual_machine/assignments/optional_spec.rb +0 -41
  149. data/spec/ruby-lint/virtual_machine/assignments/range_spec.rb +0 -28
  150. data/spec/ruby-lint/virtual_machine/assignments/return_values_spec.rb +0 -78
  151. data/spec/ruby-lint/virtual_machine/assignments/variables_spec.rb +0 -130
  152. data/spec/ruby-lint/virtual_machine/associate_nodes_spec.rb +0 -61
  153. data/spec/ruby-lint/virtual_machine/autoloading_spec.rb +0 -18
  154. data/spec/ruby-lint/virtual_machine/blocks_spec.rb +0 -90
  155. data/spec/ruby-lint/virtual_machine/classes/class_methods_spec.rb +0 -21
  156. data/spec/ruby-lint/virtual_machine/classes/extending_spec.rb +0 -109
  157. data/spec/ruby-lint/virtual_machine/classes/redefining_spec.rb +0 -51
  158. data/spec/ruby-lint/virtual_machine/classes/sclass_spec.rb +0 -96
  159. data/spec/ruby-lint/virtual_machine/classes/scoping_spec.rb +0 -60
  160. data/spec/ruby-lint/virtual_machine/complex/rails_spec.rb +0 -21
  161. data/spec/ruby-lint/virtual_machine/complex/rcap_spec.rb +0 -15
  162. data/spec/ruby-lint/virtual_machine/complex/slop_spec.rb +0 -16
  163. data/spec/ruby-lint/virtual_machine/constants_spec.rb +0 -31
  164. data/spec/ruby-lint/virtual_machine/for_spec.rb +0 -16
  165. data/spec/ruby-lint/virtual_machine/freeze_spec.rb +0 -13
  166. data/spec/ruby-lint/virtual_machine/global_variables_spec.rb +0 -15
  167. data/spec/ruby-lint/virtual_machine/inherit_kernel_spec.rb +0 -15
  168. data/spec/ruby-lint/virtual_machine/interpolation_spec.rb +0 -12
  169. data/spec/ruby-lint/virtual_machine/location_spec.rb +0 -64
  170. data/spec/ruby-lint/virtual_machine/method_call_tracking_spec.rb +0 -57
  171. data/spec/ruby-lint/virtual_machine/methods/attr_spec.rb +0 -182
  172. data/spec/ruby-lint/virtual_machine/methods/calls_spec.rb +0 -25
  173. data/spec/ruby-lint/virtual_machine/methods/define_method_spec.rb +0 -41
  174. data/spec/ruby-lint/virtual_machine/methods/defining_spec.rb +0 -40
  175. data/spec/ruby-lint/virtual_machine/methods/docstrings_spec.rb +0 -80
  176. data/spec/ruby-lint/virtual_machine/methods/exporting_spec.rb +0 -19
  177. data/spec/ruby-lint/virtual_machine/methods/kernel_spec.rb +0 -25
  178. data/spec/ruby-lint/virtual_machine/methods/parameters_spec.rb +0 -89
  179. data/spec/ruby-lint/virtual_machine/methods/patching_spec.rb +0 -20
  180. data/spec/ruby-lint/virtual_machine/methods/scoping_spec.rb +0 -63
  181. data/spec/ruby-lint/virtual_machine/methods/square_bracket_spec.rb +0 -32
  182. data/spec/ruby-lint/virtual_machine/methods/visibility_spec.rb +0 -64
  183. data/spec/ruby-lint/virtual_machine/modules_spec.rb +0 -205
  184. data/spec/ruby-lint/virtual_machine/reference_amount_spec.rb +0 -81
  185. data/spec/ruby-lint/virtual_machine/self_spec.rb +0 -37
  186. data/spec/ruby-lint/virtual_machine/unused_spec.rb +0 -17
  187. data/spec/spec_helper.rb +0 -28
  188. data/spec/support/building.rb +0 -50
  189. data/spec/support/coveralls.rb +0 -5
  190. data/spec/support/definitions.rb +0 -39
  191. data/spec/support/fixtures.rb +0 -20
  192. data/spec/support/parsing.rb +0 -30
  193. data/spec/support/simplecov.rb +0 -18
  194. data/spec/support/versions.rb +0 -9
  195. data/task/build.rake +0 -4
  196. data/task/checksum.rake +0 -13
  197. data/task/coverage.rake +0 -6
  198. data/task/doc.rake +0 -16
  199. data/task/generate.rake +0 -77
  200. data/task/graphviz.rake +0 -12
  201. data/task/manifest.rake +0 -8
  202. data/task/tag.rake +0 -6
  203. data/task/test.rake +0 -4
  204. data/task/todo.rake +0 -6
  205. data/task/travis.rake +0 -8
@@ -6,6 +6,8 @@ module RubyLint
6
6
  # corresponding warning message.
7
7
  #
8
8
  class UnusedVariables < Base
9
+ register 'unused_variables'
10
+
9
11
  ##
10
12
  # Hash containing the various variable types for which to add warnings
11
13
  # and human readable names for these types.
@@ -16,6 +16,8 @@ module RubyLint
16
16
  # result in it never caching certain data.
17
17
  #
18
18
  class UselessEqualityChecks < Base
19
+ register 'useless_equality_checks'
20
+
19
21
  ##
20
22
  # @param [RubyLint::AST::Node] node
21
23
  #
@@ -44,21 +44,6 @@ module RubyLint
44
44
  def inspect_oneline
45
45
  return inspect.gsub(/\s*\n\s*/, ' ')
46
46
  end
47
-
48
- ##
49
- # Generates a unique SHA1 digest hash based on the current node.
50
- #
51
- # @return [String]
52
- #
53
- def sha1
54
- input = inspect
55
-
56
- if location and location.expression
57
- input << "#{file}#{line}#{column}"
58
- end
59
-
60
- return Digest::SHA1.hexdigest(input)
61
- end
62
47
  end # Node
63
48
  end # AST
64
49
  end # RubyLint
@@ -0,0 +1,100 @@
1
+ module RubyLint
2
+ ##
3
+ # Class used for running the CLI.
4
+ #
5
+ # @!attribute [r] options
6
+ # @return [Hash|Slop]
7
+ #
8
+ class Command
9
+ attr_reader :options
10
+
11
+ ##
12
+ # @return [Hash]
13
+ #
14
+ OPTION_MAPPING = {
15
+ :levels => :report_levels=,
16
+ :presenter => :presenter=,
17
+ :analysis => :analysis_classes=,
18
+ :debug => :debug=
19
+ }
20
+
21
+ ##
22
+ # Formats the keys of a particular Hash stored on class level in
23
+ # {RubyLint::Configuration}.
24
+ #
25
+ # @param [Symbol] name
26
+ # @return [String]
27
+ #
28
+ def self.format_names(name)
29
+ return "* #{Configuration.send(name).keys.sort.join("\n * ")}"
30
+ end
31
+
32
+ ##
33
+ # @param [Hash|Slop] options
34
+ #
35
+ def initialize(options)
36
+ @options = options
37
+ end
38
+
39
+ ##
40
+ # Runs the command with the supplied arguments.
41
+ #
42
+ # @param [Array] args
43
+ #
44
+ def run(args)
45
+ start_time = Time.now.to_f
46
+ files = extract_files(args)
47
+ configuration = Configuration.load_from_file
48
+
49
+ configure(configuration, options)
50
+
51
+ runner = Runner.new(configuration)
52
+ output = runner.analyze(files)
53
+ exec_time = Time.now.to_f - start_time
54
+
55
+ puts output unless output.empty?
56
+
57
+ show_benchmark_info(exec_time) if options[:benchmark]
58
+ end
59
+
60
+ ##
61
+ # Returns an Array containing the file paths that exist.
62
+ #
63
+ # @param [Array] files
64
+ # @return [Array]
65
+ #
66
+ def extract_files(files)
67
+ return RubyLint::FileList.new.process(files)
68
+ end
69
+
70
+ ##
71
+ # @param [RubyLint::Configuration] configuration
72
+ # @param [Hash] opts
73
+ #
74
+ def configure(configuration, options)
75
+ OPTION_MAPPING.each do |key, setter|
76
+ configuration.send(setter, options[key]) if options[key]
77
+ end
78
+ end
79
+
80
+ ##
81
+ # @param [Float] exec_time
82
+ #
83
+ def show_benchmark_info(exec_time)
84
+ mem_kb = `ps -o rss= #{Process.pid}`.strip.to_f
85
+ mem_mb = mem_kb / 1024
86
+
87
+ stderr "Execution time: #{exec_time.round(4)} seconds"
88
+ stderr "Memory usage: #{mem_mb.round(2)} MB (#{mem_kb.round(2)} KB)"
89
+ end
90
+
91
+ private
92
+
93
+ ##
94
+ # @param [String] text
95
+ #
96
+ def stderr(text)
97
+ STDERR.puts(text)
98
+ end
99
+ end # Command
100
+ end # RubyLint
@@ -22,20 +22,10 @@ module RubyLint
22
22
  # @!attribute [rw] ignore_paths
23
23
  # @return [Array]
24
24
  #
25
- # @!attribute [rw] enable_cache
26
- # When set to `true` external files and their associated data will be
27
- # cached.
28
- # @return [TrueClass|FalseClass]
29
- #
30
- # @!attribute [r] cache_directory
31
- # The path to the directory to use for storing cache files.
32
- # @return [String]
33
- #
34
25
  class Configuration
35
- attr_reader :analysis_classes, :report_levels, :presenter, :directories,
36
- :cache_directory
26
+ attr_reader :analysis_classes, :report_levels, :presenter, :directories
37
27
 
38
- attr_accessor :debug, :ignore_paths, :enable_cache
28
+ attr_accessor :debug, :ignore_paths
39
29
 
40
30
  ##
41
31
  # Returns an Array of locations from which to load configuration files.
@@ -70,42 +60,54 @@ module RubyLint
70
60
  end
71
61
 
72
62
  ##
73
- # Provides a small block based DSL for registering multiple names.
63
+ # Returns the available analysis classes. See
64
+ # {RubyLint::Analysis::Base.register} for more information on registering
65
+ # analysis classes.
74
66
  #
75
- # @param [String] scope The scope to store the names under.
76
- # @see RubyLint::Configuration.names
67
+ # @return [Hash]
77
68
  #
78
- def self.register_names(scope)
79
- hash = {}
69
+ def self.available_analysis_classes
70
+ return @available_analysis_classes ||= {}
71
+ end
80
72
 
81
- yield hash
73
+ ##
74
+ # Returns the available report levels.
75
+ #
76
+ # @return [Hash]
77
+ #
78
+ def self.available_report_levels
79
+ unless @available_report_levels
80
+ @available_report_levels = {}
81
+
82
+ RubyLint::Report::DEFAULT_LEVELS.each do |level|
83
+ @available_report_levels[level.to_s] = level
84
+ end
85
+ end
82
86
 
83
- names[scope] = hash
87
+ return @available_report_levels
84
88
  end
85
89
 
86
90
  ##
87
- # Returns a Hash used for storing values and their human readable names.
88
- # This Hash is primarily used for the CLI.
91
+ # Returns the available presenter classes. See
92
+ # {RubyLint::Presenter::Base.register} for more information on registering
93
+ # presenters.
89
94
  #
90
95
  # @return [Hash]
91
96
  #
92
- def self.names
93
- return @names ||= {}
97
+ def self.available_presenters
98
+ return @available_presenters ||= {}
94
99
  end
95
100
 
96
101
  ##
97
102
  # @param [Hash] options
98
103
  #
99
104
  def initialize(options = {})
100
- @debug = false
101
- @enable_cache = default_cache_value
105
+ @debug = false
102
106
 
103
107
  options.each do |key, value|
104
108
  setter = "#{key}="
105
109
 
106
- if respond_to?(setter)
107
- send(setter, value)
108
- end
110
+ send(setter, value) if respond_to?(setter)
109
111
  end
110
112
 
111
113
  @analysis_classes ||= default_analysis_classes
@@ -113,16 +115,6 @@ module RubyLint
113
115
  @presenter ||= default_presenter
114
116
  @directories ||= default_directories
115
117
  @ignore_paths ||= []
116
- @cache_directory ||= default_cache_directory
117
- end
118
-
119
- ##
120
- # Expands and sets the path as the cache directory.
121
- #
122
- # @param [String] path
123
- #
124
- def cache_directory=(path)
125
- @cache_directory = File.expand_path(path)
126
118
  end
127
119
 
128
120
  ##
@@ -141,7 +133,7 @@ module RubyLint
141
133
  # @return [Array]
142
134
  #
143
135
  def report_levels=(given)
144
- available = self.class.names['levels']
136
+ available = self.class.available_report_levels
145
137
  levels = []
146
138
 
147
139
  given.each do |level|
@@ -164,7 +156,7 @@ module RubyLint
164
156
  # @raise ArgumentError Raised when an invalid presenter is specified.
165
157
  #
166
158
  def presenter=(name)
167
- found = self.class.names['presenters'][name]
159
+ found = self.class.available_presenters[name]
168
160
 
169
161
  if found
170
162
  @presenter = found
@@ -181,7 +173,7 @@ module RubyLint
181
173
  #
182
174
  def analysis_classes=(names)
183
175
  classes = []
184
- available = self.class.names['analysis']
176
+ available = self.class.available_analysis_classes
185
177
 
186
178
  names.each do |name|
187
179
  classes << available[name] if available[name]
@@ -222,14 +214,14 @@ module RubyLint
222
214
  # @return [Array]
223
215
  #
224
216
  def default_analysis_classes
225
- return self.class.names['analysis'].values
217
+ return self.class.available_analysis_classes.values
226
218
  end
227
219
 
228
220
  ##
229
221
  # @return [Array]
230
222
  #
231
223
  def default_report_levels
232
- return RubyLint::Report::DEFAULT_LEVELS
224
+ return self.class.available_report_levels.values
233
225
  end
234
226
 
235
227
  ##
@@ -245,28 +237,5 @@ module RubyLint
245
237
  def default_directories
246
238
  return FileScanner.default_directories
247
239
  end
248
-
249
- ##
250
- # @return [TrueClass|FalseClass]
251
- #
252
- def default_cache_value
253
- return ENV['RUBY_LINT_DISABLE_CACHE'] ? false : true
254
- end
255
-
256
- ##
257
- # The default cache directory to use. Per the XDG specification
258
- # (http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html)
259
- # this is set to `$XDG_CACHE_HOME`/`$HOME/.cache` by default.
260
- #
261
- # @return [String]
262
- #
263
- def default_cache_directory
264
- root = ENV['XDG_CACHE_HOME'] || File.join(ENV['HOME'], '.cache')
265
-
266
- # ~/.cache might not exist on non Linux systems.
267
- Dir.mkdir(root) unless File.directory?(root)
268
-
269
- return File.join(root, 'ruby-lint')
270
- end
271
240
  end # Configuration
272
241
  end # RubyLint
@@ -40,8 +40,13 @@ module RubyLint
40
40
  type = REMAP_TYPES.fetch(type, type)
41
41
  found = current.lookup(type, name, index == 0)
42
42
 
43
- if found
44
- current = found.const? ? found : found.value
43
+ if found and found.const?
44
+ current = found
45
+
46
+ # Local variables and the likes.
47
+ elsif found and found.value
48
+ current = found.value
49
+
45
50
  else
46
51
  return
47
52
  end
@@ -260,11 +260,18 @@ module RubyLint
260
260
  #
261
261
  # @param [#to_sym] type
262
262
  # @param [String] name
263
+ #
263
264
  # @param [TrueClass|FalseClass] lookup_parent Whether definitions should
264
265
  # be looked up from parent definitions.
266
+ #
267
+ # @param [Array] exclude A list of definitions to skip when looking up
268
+ # parents. This list is used to prevent stack errors when dealing with
269
+ # recursive definitions. A good example of this is `Logger` and
270
+ # `Logger::Severity` which both inherit from each other.
271
+ #
265
272
  # @return [RubyLint::Definition::RubyObject|NilClass]
266
273
  #
267
- def lookup(type, name, lookup_parent = true)
274
+ def lookup(type, name, lookup_parent = true, exclude = [])
268
275
  type, name = prepare_lookup(type, name)
269
276
  found = nil
270
277
 
@@ -275,7 +282,10 @@ module RubyLint
275
282
  # takes the parents themselves also into account.
276
283
  elsif lookup_parent?(type) and lookup_parent
277
284
  parents.each do |parent|
278
- parent_definition = determine_parent(parent, type, name)
285
+ # If we've already processed the parent we'll skip it.
286
+ next if exclude.include?(parent)
287
+
288
+ parent_definition = determine_parent(parent, type, name, exclude)
279
289
 
280
290
  if parent_definition
281
291
  found = parent_definition
@@ -364,9 +374,10 @@ module RubyLint
364
374
  #
365
375
  # @param [#to_sym] type
366
376
  # @param [String] name
377
+ # @param [Array] exclude Parent definitions to exclude.
367
378
  # @return [TrueClass|FalseClass]
368
379
  #
369
- def has_definition?(type, name)
380
+ def has_definition?(type, name, exclude = [])
370
381
  type, name = prepare_lookup(type, name)
371
382
 
372
383
  if definitions.key?(type) and definitions[type].key?(name)
@@ -374,7 +385,9 @@ module RubyLint
374
385
 
375
386
  elsif lookup_parent?(type)
376
387
  parents.each do |parent|
377
- return true if parent.has_definition?(type, name)
388
+ next if exclude.include?(parent)
389
+
390
+ return true if parent.has_definition?(type, name, exclude | [self])
378
391
  end
379
392
  end
380
393
 
@@ -677,13 +690,14 @@ module RubyLint
677
690
  # @param [RubyLint::Definition::RubyObject] parent
678
691
  # @param [Symbol] type
679
692
  # @param [String] name
693
+ # @param [Array] exclude
680
694
  # @return [RubyLint::Definition::RubyObject]
681
695
  #
682
- def determine_parent(parent, type, name)
696
+ def determine_parent(parent, type, name, exclude = [])
683
697
  if parent.type == type and parent.name == name
684
698
  parent_definition = parent
685
699
  else
686
- parent_definition = parent.lookup(type, name)
700
+ parent_definition = parent.lookup(type, name, true, exclude | [self])
687
701
  end
688
702
 
689
703
  return parent_definition
@@ -1,11 +1,11 @@
1
1
  # This file was automatically generated, any manual changes will be lost the
2
2
  # next time this file is generated.
3
3
  #
4
- # Platform: rbx 2.2.3.n364
4
+ # Platform: rbx 2.2.5.n63
5
5
 
6
6
  RubyLint.registry.register('ARGF') do |defs|
7
7
  defs.define_constant('ARGF') do |klass|
8
- klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
9
-
8
+ klass.inherits(defs.constant_proxy('IO', RubyLint.registry))
9
+ klass.instance!
10
10
  end
11
11
  end
@@ -0,0 +1,792 @@
1
+ # This file was automatically generated, any manual changes will be lost the
2
+ # next time this file is generated.
3
+ #
4
+ # Platform: rbx 2.2.5.n63
5
+
6
+ RubyLint.registry.register('Minitest') do |defs|
7
+ defs.define_constant('Minitest') do |klass|
8
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
9
+
10
+ klass.define_method('__run') do |method|
11
+ method.define_argument('reporter')
12
+ method.define_argument('options')
13
+ end
14
+
15
+ klass.define_method('after_run') do |method|
16
+ method.define_block_argument('block')
17
+ end
18
+
19
+ klass.define_method('autorun')
20
+
21
+ klass.define_method('backtrace_filter')
22
+
23
+ klass.define_method('backtrace_filter=')
24
+
25
+ klass.define_method('extensions')
26
+
27
+ klass.define_method('extensions=')
28
+
29
+ klass.define_method('filter_backtrace') do |method|
30
+ method.define_argument('bt')
31
+ end
32
+
33
+ klass.define_method('init_plugins') do |method|
34
+ method.define_argument('options')
35
+ end
36
+
37
+ klass.define_method('load_plugins')
38
+
39
+ klass.define_method('parallel_executor')
40
+
41
+ klass.define_method('parallel_executor=')
42
+
43
+ klass.define_method('process_args') do |method|
44
+ method.define_optional_argument('args')
45
+ end
46
+
47
+ klass.define_method('reporter')
48
+
49
+ klass.define_method('reporter=')
50
+
51
+ klass.define_method('run') do |method|
52
+ method.define_optional_argument('args')
53
+ end
54
+
55
+ klass.define_method('run_one_method') do |method|
56
+ method.define_argument('klass')
57
+ method.define_argument('method_name')
58
+ end
59
+ end
60
+
61
+ defs.define_constant('Minitest::AbstractReporter') do |klass|
62
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
63
+ klass.inherits(defs.constant_proxy('Mutex_m', RubyLint.registry))
64
+
65
+ klass.define_instance_method('lock')
66
+
67
+ klass.define_instance_method('locked?')
68
+
69
+ klass.define_instance_method('passed?')
70
+
71
+ klass.define_instance_method('record') do |method|
72
+ method.define_argument('result')
73
+ end
74
+
75
+ klass.define_instance_method('report')
76
+
77
+ klass.define_instance_method('start')
78
+
79
+ klass.define_instance_method('synchronize') do |method|
80
+ method.define_block_argument('block')
81
+ end
82
+
83
+ klass.define_instance_method('try_lock')
84
+
85
+ klass.define_instance_method('unlock')
86
+ end
87
+
88
+ defs.define_constant('Minitest::Assertion') do |klass|
89
+ klass.inherits(defs.constant_proxy('Exception', RubyLint.registry))
90
+
91
+ klass.define_instance_method('error')
92
+
93
+ klass.define_instance_method('location')
94
+
95
+ klass.define_instance_method('result_code')
96
+
97
+ klass.define_instance_method('result_label')
98
+ end
99
+
100
+ defs.define_constant('Minitest::Assertions') do |klass|
101
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
102
+
103
+ klass.define_method('diff')
104
+
105
+ klass.define_method('diff=') do |method|
106
+ method.define_argument('o')
107
+ end
108
+
109
+ klass.define_instance_method('_synchronize')
110
+
111
+ klass.define_instance_method('assert') do |method|
112
+ method.define_argument('test')
113
+ method.define_optional_argument('msg')
114
+ end
115
+
116
+ klass.define_instance_method('assert_empty') do |method|
117
+ method.define_argument('obj')
118
+ method.define_optional_argument('msg')
119
+ end
120
+
121
+ klass.define_instance_method('assert_equal') do |method|
122
+ method.define_argument('exp')
123
+ method.define_argument('act')
124
+ method.define_optional_argument('msg')
125
+ end
126
+
127
+ klass.define_instance_method('assert_in_delta') do |method|
128
+ method.define_argument('exp')
129
+ method.define_argument('act')
130
+ method.define_optional_argument('delta')
131
+ method.define_optional_argument('msg')
132
+ end
133
+
134
+ klass.define_instance_method('assert_in_epsilon') do |method|
135
+ method.define_argument('a')
136
+ method.define_argument('b')
137
+ method.define_optional_argument('epsilon')
138
+ method.define_optional_argument('msg')
139
+ end
140
+
141
+ klass.define_instance_method('assert_includes') do |method|
142
+ method.define_argument('collection')
143
+ method.define_argument('obj')
144
+ method.define_optional_argument('msg')
145
+ end
146
+
147
+ klass.define_instance_method('assert_instance_of') do |method|
148
+ method.define_argument('cls')
149
+ method.define_argument('obj')
150
+ method.define_optional_argument('msg')
151
+ end
152
+
153
+ klass.define_instance_method('assert_kind_of') do |method|
154
+ method.define_argument('cls')
155
+ method.define_argument('obj')
156
+ method.define_optional_argument('msg')
157
+ end
158
+
159
+ klass.define_instance_method('assert_match') do |method|
160
+ method.define_argument('matcher')
161
+ method.define_argument('obj')
162
+ method.define_optional_argument('msg')
163
+ end
164
+
165
+ klass.define_instance_method('assert_nil') do |method|
166
+ method.define_argument('obj')
167
+ method.define_optional_argument('msg')
168
+ end
169
+
170
+ klass.define_instance_method('assert_operator') do |method|
171
+ method.define_argument('o1')
172
+ method.define_argument('op')
173
+ method.define_optional_argument('o2')
174
+ method.define_optional_argument('msg')
175
+ end
176
+
177
+ klass.define_instance_method('assert_output') do |method|
178
+ method.define_optional_argument('stdout')
179
+ method.define_optional_argument('stderr')
180
+ end
181
+
182
+ klass.define_instance_method('assert_predicate') do |method|
183
+ method.define_argument('o1')
184
+ method.define_argument('op')
185
+ method.define_optional_argument('msg')
186
+ end
187
+
188
+ klass.define_instance_method('assert_raises') do |method|
189
+ method.define_rest_argument('exp')
190
+ end
191
+
192
+ klass.define_instance_method('assert_respond_to') do |method|
193
+ method.define_argument('obj')
194
+ method.define_argument('meth')
195
+ method.define_optional_argument('msg')
196
+ end
197
+
198
+ klass.define_instance_method('assert_same') do |method|
199
+ method.define_argument('exp')
200
+ method.define_argument('act')
201
+ method.define_optional_argument('msg')
202
+ end
203
+
204
+ klass.define_instance_method('assert_send') do |method|
205
+ method.define_argument('send_ary')
206
+ method.define_optional_argument('m')
207
+ end
208
+
209
+ klass.define_instance_method('assert_silent')
210
+
211
+ klass.define_instance_method('assert_throws') do |method|
212
+ method.define_argument('sym')
213
+ method.define_optional_argument('msg')
214
+ end
215
+
216
+ klass.define_instance_method('capture_io')
217
+
218
+ klass.define_instance_method('capture_subprocess_io')
219
+
220
+ klass.define_instance_method('diff') do |method|
221
+ method.define_argument('exp')
222
+ method.define_argument('act')
223
+ end
224
+
225
+ klass.define_instance_method('exception_details') do |method|
226
+ method.define_argument('e')
227
+ method.define_argument('msg')
228
+ end
229
+
230
+ klass.define_instance_method('flunk') do |method|
231
+ method.define_optional_argument('msg')
232
+ end
233
+
234
+ klass.define_instance_method('message') do |method|
235
+ method.define_optional_argument('msg')
236
+ method.define_optional_argument('ending')
237
+ method.define_block_argument('default')
238
+ end
239
+
240
+ klass.define_instance_method('mu_pp') do |method|
241
+ method.define_argument('obj')
242
+ end
243
+
244
+ klass.define_instance_method('mu_pp_for_diff') do |method|
245
+ method.define_argument('obj')
246
+ end
247
+
248
+ klass.define_instance_method('pass') do |method|
249
+ method.define_optional_argument('msg')
250
+ end
251
+
252
+ klass.define_instance_method('refute') do |method|
253
+ method.define_argument('test')
254
+ method.define_optional_argument('msg')
255
+ end
256
+
257
+ klass.define_instance_method('refute_empty') do |method|
258
+ method.define_argument('obj')
259
+ method.define_optional_argument('msg')
260
+ end
261
+
262
+ klass.define_instance_method('refute_equal') do |method|
263
+ method.define_argument('exp')
264
+ method.define_argument('act')
265
+ method.define_optional_argument('msg')
266
+ end
267
+
268
+ klass.define_instance_method('refute_in_delta') do |method|
269
+ method.define_argument('exp')
270
+ method.define_argument('act')
271
+ method.define_optional_argument('delta')
272
+ method.define_optional_argument('msg')
273
+ end
274
+
275
+ klass.define_instance_method('refute_in_epsilon') do |method|
276
+ method.define_argument('a')
277
+ method.define_argument('b')
278
+ method.define_optional_argument('epsilon')
279
+ method.define_optional_argument('msg')
280
+ end
281
+
282
+ klass.define_instance_method('refute_includes') do |method|
283
+ method.define_argument('collection')
284
+ method.define_argument('obj')
285
+ method.define_optional_argument('msg')
286
+ end
287
+
288
+ klass.define_instance_method('refute_instance_of') do |method|
289
+ method.define_argument('cls')
290
+ method.define_argument('obj')
291
+ method.define_optional_argument('msg')
292
+ end
293
+
294
+ klass.define_instance_method('refute_kind_of') do |method|
295
+ method.define_argument('cls')
296
+ method.define_argument('obj')
297
+ method.define_optional_argument('msg')
298
+ end
299
+
300
+ klass.define_instance_method('refute_match') do |method|
301
+ method.define_argument('matcher')
302
+ method.define_argument('obj')
303
+ method.define_optional_argument('msg')
304
+ end
305
+
306
+ klass.define_instance_method('refute_nil') do |method|
307
+ method.define_argument('obj')
308
+ method.define_optional_argument('msg')
309
+ end
310
+
311
+ klass.define_instance_method('refute_operator') do |method|
312
+ method.define_argument('o1')
313
+ method.define_argument('op')
314
+ method.define_optional_argument('o2')
315
+ method.define_optional_argument('msg')
316
+ end
317
+
318
+ klass.define_instance_method('refute_predicate') do |method|
319
+ method.define_argument('o1')
320
+ method.define_argument('op')
321
+ method.define_optional_argument('msg')
322
+ end
323
+
324
+ klass.define_instance_method('refute_respond_to') do |method|
325
+ method.define_argument('obj')
326
+ method.define_argument('meth')
327
+ method.define_optional_argument('msg')
328
+ end
329
+
330
+ klass.define_instance_method('refute_same') do |method|
331
+ method.define_argument('exp')
332
+ method.define_argument('act')
333
+ method.define_optional_argument('msg')
334
+ end
335
+
336
+ klass.define_instance_method('skip') do |method|
337
+ method.define_optional_argument('msg')
338
+ method.define_optional_argument('bt')
339
+ end
340
+
341
+ klass.define_instance_method('skipped?')
342
+ end
343
+
344
+ defs.define_constant('Minitest::Assertions::UNDEFINED') do |klass|
345
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
346
+
347
+ klass.define_method('inspect')
348
+ end
349
+
350
+ defs.define_constant('Minitest::BacktraceFilter') do |klass|
351
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
352
+
353
+ klass.define_instance_method('filter') do |method|
354
+ method.define_argument('bt')
355
+ end
356
+ end
357
+
358
+ defs.define_constant('Minitest::CompositeReporter') do |klass|
359
+ klass.inherits(defs.constant_proxy('Minitest::AbstractReporter', RubyLint.registry))
360
+
361
+ klass.define_instance_method('<<') do |method|
362
+ method.define_argument('reporter')
363
+ end
364
+
365
+ klass.define_instance_method('initialize') do |method|
366
+ method.define_rest_argument('reporters')
367
+
368
+ method.returns { |object| object.instance }
369
+ end
370
+
371
+ klass.define_instance_method('passed?')
372
+
373
+ klass.define_instance_method('record') do |method|
374
+ method.define_argument('result')
375
+ end
376
+
377
+ klass.define_instance_method('report')
378
+
379
+ klass.define_instance_method('reporters')
380
+
381
+ klass.define_instance_method('reporters=')
382
+
383
+ klass.define_instance_method('start')
384
+ end
385
+
386
+ defs.define_constant('Minitest::Guard') do |klass|
387
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
388
+
389
+ klass.define_instance_method('jruby?') do |method|
390
+ method.define_optional_argument('platform')
391
+ end
392
+
393
+ klass.define_instance_method('maglev?') do |method|
394
+ method.define_optional_argument('platform')
395
+ end
396
+
397
+ klass.define_instance_method('mri?') do |method|
398
+ method.define_optional_argument('platform')
399
+ end
400
+
401
+ klass.define_instance_method('rubinius?') do |method|
402
+ method.define_optional_argument('platform')
403
+ end
404
+
405
+ klass.define_instance_method('windows?') do |method|
406
+ method.define_optional_argument('platform')
407
+ end
408
+ end
409
+
410
+ defs.define_constant('Minitest::Parallel') do |klass|
411
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
412
+
413
+ end
414
+
415
+ defs.define_constant('Minitest::Parallel::Executor') do |klass|
416
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
417
+
418
+ klass.define_instance_method('<<') do |method|
419
+ method.define_argument('work')
420
+ end
421
+
422
+ klass.define_instance_method('initialize') do |method|
423
+ method.define_argument('size')
424
+
425
+ method.returns { |object| object.instance }
426
+ end
427
+
428
+ klass.define_instance_method('shutdown')
429
+
430
+ klass.define_instance_method('size')
431
+ end
432
+
433
+ defs.define_constant('Minitest::Parallel::Test') do |klass|
434
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
435
+
436
+ klass.define_instance_method('_synchronize')
437
+ end
438
+
439
+ defs.define_constant('Minitest::Parallel::Test::ClassMethods') do |klass|
440
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
441
+
442
+ klass.define_instance_method('run_one_method') do |method|
443
+ method.define_argument('klass')
444
+ method.define_argument('method_name')
445
+ method.define_argument('reporter')
446
+ end
447
+
448
+ klass.define_instance_method('test_order')
449
+ end
450
+
451
+ defs.define_constant('Minitest::ProgressReporter') do |klass|
452
+ klass.inherits(defs.constant_proxy('Minitest::Reporter', RubyLint.registry))
453
+
454
+ klass.define_instance_method('record') do |method|
455
+ method.define_argument('result')
456
+ end
457
+ end
458
+
459
+ defs.define_constant('Minitest::Reporter') do |klass|
460
+ klass.inherits(defs.constant_proxy('Minitest::AbstractReporter', RubyLint.registry))
461
+
462
+ klass.define_instance_method('initialize') do |method|
463
+ method.define_optional_argument('io')
464
+ method.define_optional_argument('options')
465
+
466
+ method.returns { |object| object.instance }
467
+ end
468
+
469
+ klass.define_instance_method('io')
470
+
471
+ klass.define_instance_method('io=')
472
+
473
+ klass.define_instance_method('options')
474
+
475
+ klass.define_instance_method('options=')
476
+ end
477
+
478
+ defs.define_constant('Minitest::Runnable') do |klass|
479
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
480
+
481
+ klass.define_method('inherited') do |method|
482
+ method.define_argument('klass')
483
+ end
484
+
485
+ klass.define_method('methods_matching') do |method|
486
+ method.define_argument('re')
487
+ end
488
+
489
+ klass.define_method('on_signal') do |method|
490
+ method.define_argument('name')
491
+ method.define_argument('action')
492
+ end
493
+
494
+ klass.define_method('reset')
495
+
496
+ klass.define_method('run') do |method|
497
+ method.define_argument('reporter')
498
+ method.define_optional_argument('options')
499
+ end
500
+
501
+ klass.define_method('run_one_method') do |method|
502
+ method.define_argument('klass')
503
+ method.define_argument('method_name')
504
+ method.define_argument('reporter')
505
+ end
506
+
507
+ klass.define_method('runnable_methods')
508
+
509
+ klass.define_method('runnables')
510
+
511
+ klass.define_method('with_info_handler') do |method|
512
+ method.define_argument('reporter')
513
+ method.define_block_argument('block')
514
+ end
515
+
516
+ klass.define_instance_method('assertions')
517
+
518
+ klass.define_instance_method('assertions=')
519
+
520
+ klass.define_instance_method('failure')
521
+
522
+ klass.define_instance_method('failures')
523
+
524
+ klass.define_instance_method('failures=')
525
+
526
+ klass.define_instance_method('initialize') do |method|
527
+ method.define_argument('name')
528
+
529
+ method.returns { |object| object.instance }
530
+ end
531
+
532
+ klass.define_instance_method('marshal_dump')
533
+
534
+ klass.define_instance_method('marshal_load') do |method|
535
+ method.define_argument('ary')
536
+ end
537
+
538
+ klass.define_instance_method('name')
539
+
540
+ klass.define_instance_method('name=') do |method|
541
+ method.define_argument('o')
542
+ end
543
+
544
+ klass.define_instance_method('passed?')
545
+
546
+ klass.define_instance_method('result_code')
547
+
548
+ klass.define_instance_method('run')
549
+
550
+ klass.define_instance_method('skipped?')
551
+ end
552
+
553
+ defs.define_constant('Minitest::Skip') do |klass|
554
+ klass.inherits(defs.constant_proxy('Minitest::Assertion', RubyLint.registry))
555
+
556
+ klass.define_instance_method('result_label')
557
+ end
558
+
559
+ defs.define_constant('Minitest::StatisticsReporter') do |klass|
560
+ klass.inherits(defs.constant_proxy('Minitest::Reporter', RubyLint.registry))
561
+
562
+ klass.define_instance_method('assertions')
563
+
564
+ klass.define_instance_method('assertions=')
565
+
566
+ klass.define_instance_method('count')
567
+
568
+ klass.define_instance_method('count=')
569
+
570
+ klass.define_instance_method('errors')
571
+
572
+ klass.define_instance_method('errors=')
573
+
574
+ klass.define_instance_method('failures')
575
+
576
+ klass.define_instance_method('failures=')
577
+
578
+ klass.define_instance_method('initialize') do |method|
579
+ method.define_optional_argument('io')
580
+ method.define_optional_argument('options')
581
+
582
+ method.returns { |object| object.instance }
583
+ end
584
+
585
+ klass.define_instance_method('passed?')
586
+
587
+ klass.define_instance_method('record') do |method|
588
+ method.define_argument('result')
589
+ end
590
+
591
+ klass.define_instance_method('report')
592
+
593
+ klass.define_instance_method('results')
594
+
595
+ klass.define_instance_method('results=')
596
+
597
+ klass.define_instance_method('skips')
598
+
599
+ klass.define_instance_method('skips=')
600
+
601
+ klass.define_instance_method('start')
602
+
603
+ klass.define_instance_method('start_time')
604
+
605
+ klass.define_instance_method('start_time=')
606
+
607
+ klass.define_instance_method('total_time')
608
+
609
+ klass.define_instance_method('total_time=')
610
+ end
611
+
612
+ defs.define_constant('Minitest::SummaryReporter') do |klass|
613
+ klass.inherits(defs.constant_proxy('Minitest::StatisticsReporter', RubyLint.registry))
614
+
615
+ klass.define_instance_method('aggregated_results')
616
+
617
+ klass.define_instance_method('old_sync')
618
+
619
+ klass.define_instance_method('old_sync=')
620
+
621
+ klass.define_instance_method('report')
622
+
623
+ klass.define_instance_method('start')
624
+
625
+ klass.define_instance_method('statistics')
626
+
627
+ klass.define_instance_method('summary')
628
+
629
+ klass.define_instance_method('sync')
630
+
631
+ klass.define_instance_method('sync=')
632
+
633
+ klass.define_instance_method('to_s')
634
+ end
635
+
636
+ defs.define_constant('Minitest::Test') do |klass|
637
+ klass.inherits(defs.constant_proxy('Minitest::Runnable', RubyLint.registry))
638
+ klass.inherits(defs.constant_proxy('Minitest::Guard', RubyLint.registry))
639
+ klass.inherits(defs.constant_proxy('Minitest::Test::LifecycleHooks', RubyLint.registry))
640
+ klass.inherits(defs.constant_proxy('Minitest::Assertions', RubyLint.registry))
641
+
642
+ klass.define_method('i_suck_and_my_tests_are_order_dependent!')
643
+
644
+ klass.define_method('io_lock')
645
+
646
+ klass.define_method('io_lock=')
647
+
648
+ klass.define_method('make_my_diffs_pretty!')
649
+
650
+ klass.define_method('parallelize_me!')
651
+
652
+ klass.define_method('runnable_methods')
653
+
654
+ klass.define_method('test_order')
655
+
656
+ klass.define_instance_method('capture_exceptions')
657
+
658
+ klass.define_instance_method('error?')
659
+
660
+ klass.define_instance_method('location')
661
+
662
+ klass.define_instance_method('marshal_dump')
663
+
664
+ klass.define_instance_method('marshal_load') do |method|
665
+ method.define_argument('ary')
666
+ end
667
+
668
+ klass.define_instance_method('passed?')
669
+
670
+ klass.define_instance_method('result_code')
671
+
672
+ klass.define_instance_method('run')
673
+
674
+ klass.define_instance_method('skipped?')
675
+
676
+ klass.define_instance_method('time')
677
+
678
+ klass.define_instance_method('time=')
679
+
680
+ klass.define_instance_method('time_it')
681
+
682
+ klass.define_instance_method('to_s')
683
+
684
+ klass.define_instance_method('with_info_handler') do |method|
685
+ method.define_block_argument('block')
686
+ end
687
+ end
688
+
689
+ defs.define_constant('Minitest::Test::LifecycleHooks') do |klass|
690
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
691
+
692
+ klass.define_instance_method('after_setup')
693
+
694
+ klass.define_instance_method('after_teardown')
695
+
696
+ klass.define_instance_method('before_setup')
697
+
698
+ klass.define_instance_method('before_teardown')
699
+
700
+ klass.define_instance_method('setup')
701
+
702
+ klass.define_instance_method('teardown')
703
+ end
704
+
705
+ defs.define_constant('Minitest::Test::PASSTHROUGH_EXCEPTIONS') do |klass|
706
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
707
+
708
+ end
709
+
710
+ defs.define_constant('Minitest::Test::UNDEFINED') do |klass|
711
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
712
+
713
+ klass.define_method('inspect')
714
+ end
715
+
716
+ defs.define_constant('Minitest::UnexpectedError') do |klass|
717
+ klass.inherits(defs.constant_proxy('Minitest::Assertion', RubyLint.registry))
718
+
719
+ klass.define_instance_method('backtrace')
720
+
721
+ klass.define_instance_method('error')
722
+
723
+ klass.define_instance_method('exception')
724
+
725
+ klass.define_instance_method('exception=')
726
+
727
+ klass.define_instance_method('initialize') do |method|
728
+ method.define_argument('exception')
729
+
730
+ method.returns { |object| object.instance }
731
+ end
732
+
733
+ klass.define_instance_method('message')
734
+
735
+ klass.define_instance_method('result_label')
736
+ end
737
+
738
+ defs.define_constant('Minitest::Unit') do |klass|
739
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
740
+
741
+ klass.define_method('after_tests') do |method|
742
+ method.define_block_argument('b')
743
+ end
744
+
745
+ klass.define_method('autorun')
746
+ end
747
+
748
+ defs.define_constant('Minitest::Unit::TestCase') do |klass|
749
+ klass.inherits(defs.constant_proxy('Minitest::Test', RubyLint.registry))
750
+
751
+ klass.define_method('inherited') do |method|
752
+ method.define_argument('klass')
753
+ end
754
+ end
755
+
756
+ defs.define_constant('Minitest::Unit::TestCase::LifecycleHooks') do |klass|
757
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
758
+
759
+ klass.define_instance_method('after_setup')
760
+
761
+ klass.define_instance_method('after_teardown')
762
+
763
+ klass.define_instance_method('before_setup')
764
+
765
+ klass.define_instance_method('before_teardown')
766
+
767
+ klass.define_instance_method('setup')
768
+
769
+ klass.define_instance_method('teardown')
770
+ end
771
+
772
+ defs.define_constant('Minitest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS') do |klass|
773
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
774
+
775
+ end
776
+
777
+ defs.define_constant('Minitest::Unit::TestCase::UNDEFINED') do |klass|
778
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
779
+
780
+ klass.define_method('inspect')
781
+ end
782
+
783
+ defs.define_constant('Minitest::Unit::VERSION') do |klass|
784
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
785
+
786
+ end
787
+
788
+ defs.define_constant('Minitest::VERSION') do |klass|
789
+ klass.inherits(defs.constant_proxy('Object', RubyLint.registry))
790
+
791
+ end
792
+ end