ruby-lint 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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