rbs 3.7.0.dev.1 → 3.7.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -1
  3. data/.github/workflows/windows.yml +5 -3
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +6 -0
  6. data/CHANGELOG.md +47 -0
  7. data/Rakefile +23 -0
  8. data/config.yml +311 -0
  9. data/core/dir.rbs +1 -1
  10. data/core/kernel.rbs +2 -2
  11. data/core/process.rbs +1 -1
  12. data/core/set.rbs +1 -1
  13. data/docs/syntax.md +6 -4
  14. data/ext/rbs_extension/extconf.rb +10 -0
  15. data/ext/rbs_extension/parser.c +103 -110
  16. data/ext/rbs_extension/rbs_extension.h +1 -2
  17. data/{ext/rbs_extension → include/rbs}/constants.h +21 -19
  18. data/include/rbs/ruby_objs.h +72 -0
  19. data/include/rbs.h +7 -0
  20. data/lib/rbs/collection/config/lockfile_generator.rb +34 -5
  21. data/lib/rbs/collection/config.rb +2 -2
  22. data/lib/rbs/environment_loader.rb +5 -0
  23. data/lib/rbs/prototype/rb.rb +7 -3
  24. data/lib/rbs/types.rb +10 -3
  25. data/lib/rbs/version.rb +1 -1
  26. data/sig/ancestor_graph.rbs +1 -1
  27. data/sig/collection/config/lockfile_generator.rbs +9 -1
  28. data/sig/definition.rbs +1 -1
  29. data/sig/definition_builder.rbs +1 -1
  30. data/sig/environment.rbs +1 -1
  31. data/sig/prototype/rb.rbs +1 -1
  32. data/sig/type_alias_dependency.rbs +2 -2
  33. data/sig/type_alias_regularity.rbs +1 -1
  34. data/sig/type_param.rbs +3 -3
  35. data/sig/vendorer.rbs +1 -1
  36. data/{ext/rbs_extension → src}/constants.c +35 -36
  37. data/src/ruby_objs.c +793 -0
  38. data/stdlib/cgi/0/manifest.yaml +1 -0
  39. data/stdlib/csv/0/manifest.yaml +1 -0
  40. data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -1
  41. data/stdlib/json/0/json.rbs +1 -1
  42. data/stdlib/minitest/0/kernel.rbs +2 -2
  43. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
  44. data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
  45. data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
  46. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
  47. data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
  48. data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
  49. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  50. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  51. data/stdlib/minitest/0/minitest/mock.rbs +9 -5
  52. data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
  53. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
  54. data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
  55. data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
  56. data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
  57. data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
  58. data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
  59. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
  60. data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
  61. data/stdlib/minitest/0/minitest/spec.rbs +1 -1
  62. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
  63. data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
  64. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +1 -1
  65. data/stdlib/minitest/0/minitest/test.rbs +7 -14
  66. data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
  67. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  68. data/stdlib/minitest/0/minitest/unit.rbs +1 -2
  69. data/stdlib/minitest/0/minitest.rbs +41 -892
  70. data/stdlib/open-uri/0/manifest.yaml +1 -0
  71. data/stdlib/openssl/0/manifest.yaml +1 -0
  72. data/stdlib/openssl/0/openssl.rbs +26 -1
  73. data/stdlib/psych/0/core_ext.rbs +12 -0
  74. data/templates/include/rbs/constants.h.erb +20 -0
  75. data/templates/include/rbs/ruby_objs.h.erb +10 -0
  76. data/templates/src/constants.c.erb +36 -0
  77. data/templates/src/ruby_objs.c.erb +27 -0
  78. data/templates/template.rb +122 -0
  79. metadata +19 -9
  80. data/ext/rbs_extension/ruby_objs.c +0 -602
  81. data/ext/rbs_extension/ruby_objs.h +0 -51
  82. data/stdlib/minitest/0/manifest.yaml +0 -2
  83. /data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +0 -0
@@ -1,889 +1,16 @@
1
1
  # <!-- rdoc-file=lib/minitest.rb -->
2
- # # minitest/{test,spec,mock,benchmark}
3
- #
4
- # home
5
- # : https://github.com/seattlerb/minitest
6
- # bugs
7
- # : https://github.com/seattlerb/minitest/issues
8
- # rdoc
9
- # : http://docs.seattlerb.org/minitest
10
- # vim
11
- # : https://github.com/sunaku/vim-ruby-minitest
12
- # emacs
13
- # : https://github.com/arthurnn/minitest-emacs
14
- #
15
- #
16
- # ## DESCRIPTION:
17
- #
18
- # minitest provides a complete suite of testing facilities supporting TDD, BDD,
19
- # mocking, and benchmarking.
20
- #
21
- # "I had a class with Jim Weirich on testing last week and we were
22
- # allowed to choose our testing frameworks. Kirk Haines and I were
23
- # paired up and we cracked open the code for a few test
24
- # frameworks...
25
- #
26
- # I MUST say that minitest is *very* readable / understandable
27
- # compared to the 'other two' options we looked at. Nicely done and
28
- # thank you for helping us keep our mental sanity."
29
- #
30
- # -- Wayne E. Seguin
31
- #
32
- # minitest/test is a small and incredibly fast unit testing framework. It
33
- # provides a rich set of assertions to make your tests clean and readable.
34
- #
35
- # minitest/spec is a functionally complete spec engine. It hooks onto
36
- # minitest/test and seamlessly bridges test assertions over to spec
37
- # expectations.
38
- #
39
- # minitest/benchmark is an awesome way to assert the performance of your
40
- # algorithms in a repeatable manner. Now you can assert that your newb co-worker
41
- # doesn't replace your linear algorithm with an exponential one!
42
- #
43
- # minitest/mock by Steven Baker, is a beautifully tiny mock (and stub) object
44
- # framework.
45
- #
46
- # minitest/pride shows pride in testing and adds coloring to your test output. I
47
- # guess it is an example of how to write IO pipes too. :P
48
- #
49
- # minitest/test is meant to have a clean implementation for language
50
- # implementors that need a minimal set of methods to bootstrap a working test
51
- # suite. For example, there is no magic involved for test-case discovery.
52
- #
53
- # "Again, I can't praise enough the idea of a testing/specing
54
- # framework that I can actually read in full in one sitting!"
55
- #
56
- # -- Piotr Szotkowski
57
- #
58
- # Comparing to rspec:
59
- #
60
- # rspec is a testing DSL. minitest is ruby.
61
- #
62
- # -- Adam Hawkins, "Bow Before MiniTest"
63
- #
64
- # minitest doesn't reinvent anything that ruby already provides, like: classes,
65
- # modules, inheritance, methods. This means you only have to learn ruby to use
66
- # minitest and all of your regular OO practices like extract-method refactorings
67
- # still apply.
68
- #
69
- # ## FEATURES/PROBLEMS:
70
- #
71
- # * minitest/autorun - the easy and explicit way to run all your tests.
72
- # * minitest/test - a very fast, simple, and clean test system.
73
- # * minitest/spec - a very fast, simple, and clean spec system.
74
- # * minitest/mock - a simple and clean mock/stub system.
75
- # * minitest/benchmark - an awesome way to assert your algorithm's
76
- # performance.
77
- # * minitest/pride - show your pride in testing!
78
- # * Incredibly small and fast runner, but no bells and whistles.
79
- # * Written by squishy human beings. Software can never be perfect. We will
80
- # all eventually die.
81
- #
82
- #
83
- # ## RATIONALE:
84
- #
85
- # See design_rationale.rb to see how specs and tests work in minitest.
86
- #
87
- # ## SYNOPSIS:
88
- #
89
- # Given that you'd like to test the following class:
90
- #
91
- # class Meme
92
- # def i_can_has_cheezburger?
93
- # "OHAI!"
94
- # end
95
- #
96
- # def will_it_blend?
97
- # "YES!"
98
- # end
99
- # end
100
- #
101
- # ### Unit tests
102
- #
103
- # Define your tests as methods beginning with `test_`.
104
- #
105
- # require "minitest/autorun"
106
- #
107
- # class TestMeme < Minitest::Test
108
- # def setup
109
- # @meme = Meme.new
110
- # end
111
- #
112
- # def test_that_kitty_can_eat
113
- # assert_equal "OHAI!", @meme.i_can_has_cheezburger?
114
- # end
115
- #
116
- # def test_that_it_will_not_blend
117
- # refute_match /^no/i, @meme.will_it_blend?
118
- # end
119
- #
120
- # def test_that_will_be_skipped
121
- # skip "test this later"
122
- # end
123
- # end
124
- #
125
- # ### Specs
126
- #
127
- # require "minitest/autorun"
128
- #
129
- # describe Meme do
130
- # before do
131
- # @meme = Meme.new
132
- # end
133
- #
134
- # describe "when asked about cheeseburgers" do
135
- # it "must respond positively" do
136
- # _(@meme.i_can_has_cheezburger?).must_equal "OHAI!"
137
- # end
138
- # end
139
- #
140
- # describe "when asked about blending possibilities" do
141
- # it "won't say no" do
142
- # _(@meme.will_it_blend?).wont_match /^no/i
143
- # end
144
- # end
145
- # end
146
- #
147
- # For matchers support check out:
148
- #
149
- # * https://github.com/wojtekmach/minitest-matchers
150
- # * https://github.com/rmm5t/minitest-matchers_vaccine
151
- #
152
- #
153
- # ### Benchmarks
154
- #
155
- # Add benchmarks to your tests.
156
- #
157
- # # optionally run benchmarks, good for CI-only work!
158
- # require "minitest/benchmark" if ENV["BENCH"]
159
- #
160
- # class TestMeme < Minitest::Benchmark
161
- # # Override self.bench_range or default range is [1, 10, 100, 1_000, 10_000]
162
- # def bench_my_algorithm
163
- # assert_performance_linear 0.9999 do |n| # n is a range value
164
- # @obj.my_algorithm(n)
165
- # end
166
- # end
167
- # end
168
- #
169
- # Or add them to your specs. If you make benchmarks optional, you'll need to
170
- # wrap your benchmarks in a conditional since the methods won't be defined. In
171
- # minitest 5, the describe name needs to match `/Bench(mark)?$/`.
172
- #
173
- # describe "Meme Benchmark" do
174
- # if ENV["BENCH"] then
175
- # bench_performance_linear "my_algorithm", 0.9999 do |n|
176
- # 100.times do
177
- # @obj.my_algorithm(n)
178
- # end
179
- # end
180
- # end
181
- # end
182
- #
183
- # outputs something like:
184
- #
185
- # # Running benchmarks:
186
- #
187
- # TestBlah 100 1000 10000
188
- # bench_my_algorithm 0.006167 0.079279 0.786993
189
- # bench_other_algorithm 0.061679 0.792797 7.869932
190
- #
191
- # Output is tab-delimited to make it easy to paste into a spreadsheet.
192
- #
193
- # ### Mocks
194
- #
195
- # Mocks and stubs defined using terminology by Fowler & Meszaros at
196
- # http://www.martinfowler.com/bliki/TestDouble.html:
197
- #
198
- # "Mocks are pre-programmed with expectations which form a specification of the
199
- # calls they are expected to receive. They can throw an exception if they
200
- # receive a call they don't expect and are checked during verification to ensure
201
- # they got all the calls they were expecting."
202
- #
203
- # class MemeAsker
204
- # def initialize(meme)
205
- # @meme = meme
206
- # end
207
- #
208
- # def ask(question)
209
- # method = question.tr(" ", "_") + "?"
210
- # @meme.__send__(method)
211
- # end
212
- # end
213
- #
214
- # require "minitest/autorun"
215
- #
216
- # describe MemeAsker, :ask do
217
- # describe "when passed an unpunctuated question" do
218
- # it "should invoke the appropriate predicate method on the meme" do
219
- # @meme = Minitest::Mock.new
220
- # @meme_asker = MemeAsker.new @meme
221
- # @meme.expect :will_it_blend?, :return_value
222
- #
223
- # @meme_asker.ask "will it blend"
224
- #
225
- # @meme.verify
226
- # end
227
- # end
228
- # end
229
- #
230
- # #### Multi-threading and Mocks
231
- #
232
- # Minitest mocks do not support multi-threading. If it works, fine, if it
233
- # doesn't you can use regular ruby patterns and facilities like local variables.
234
- # Here's an example of asserting that code inside a thread is run:
235
- #
236
- # def test_called_inside_thread
237
- # called = false
238
- # pr = Proc.new { called = true }
239
- # thread = Thread.new(&pr)
240
- # thread.join
241
- # assert called, "proc not called"
242
- # end
243
- #
244
- # ### Stubs
245
- #
246
- # Mocks and stubs are defined using terminology by Fowler & Meszaros at
247
- # http://www.martinfowler.com/bliki/TestDouble.html:
248
- #
249
- # "Stubs provide canned answers to calls made during the test".
250
- #
251
- # Minitest's stub method overrides a single method for the duration of the
252
- # block.
253
- #
254
- # def test_stale_eh
255
- # obj_under_test = Something.new
256
- #
257
- # refute obj_under_test.stale?
258
- #
259
- # Time.stub :now, Time.at(0) do # stub goes away once the block is done
260
- # assert obj_under_test.stale?
261
- # end
262
- # end
263
- #
264
- # A note on stubbing: In order to stub a method, the method must actually exist
265
- # prior to stubbing. Use a singleton method to create a new non-existing method:
266
- #
267
- # def obj_under_test.fake_method
268
- # ...
269
- # end
270
- #
271
- # ### Running Your Tests
272
- #
273
- # Ideally, you'll use a rake task to run your tests, either piecemeal or all at
274
- # once. Both rake and rails ship with rake tasks for running your tests. BUT!
275
- # You don't have to:
276
- #
277
- # % ruby -Ilib:test test/minitest/test_minitest_test.rb
278
- # Run options: --seed 37685
279
- #
280
- # # Running:
281
- #
282
- # ...................................................................... (etc)
283
- #
284
- # Finished in 0.107130s, 1446.8403 runs/s, 2959.0217 assertions/s.
285
- #
286
- # 155 runs, 317 assertions, 0 failures, 0 errors, 0 skips
287
- #
288
- # There are runtime options available, both from minitest itself, and also
289
- # provided via plugins. To see them, simply run with `--help`:
290
- #
291
- # % ruby -Ilib:test test/minitest/test_minitest_test.rb --help
292
- # minitest options:
293
- # -h, --help Display this help.
294
- # -s, --seed SEED Sets random seed. Also via env. Eg: SEED=n rake
295
- # -v, --verbose Verbose. Show progress processing files.
296
- # -n, --name PATTERN Filter run on /regexp/ or string.
297
- # -e, --exclude PATTERN Exclude /regexp/ or string from run.
298
- #
299
- # Known extensions: pride, autotest
300
- # -p, --pride Pride. Show your testing pride!
301
- # -a, --autotest Connect to autotest server.
302
- #
303
- # You can set up a rake task to run all your tests by adding this to your
304
- # Rakefile:
305
- #
306
- # require "rake/testtask"
307
- #
308
- # Rake::TestTask.new(:test) do |t|
309
- # t.libs << "test"
310
- # t.libs << "lib"
311
- # t.test_files = FileList["test/**/test_*.rb"]
312
- # end
313
- #
314
- # task :default => :test
315
- #
316
- # ## Writing Extensions
317
- #
318
- # To define a plugin, add a file named minitest/XXX_plugin.rb to your
319
- # project/gem. That file must be discoverable via ruby's LOAD_PATH (via rubygems
320
- # or otherwise). Minitest will find and require that file using Gem.find_files.
321
- # It will then try to call `plugin_XXX_init` during startup. The option
322
- # processor will also try to call `plugin_XXX_options` passing the OptionParser
323
- # instance and the current options hash. This lets you register your own
324
- # command-line options. Here's a totally bogus example:
325
- #
326
- # # minitest/bogus_plugin.rb:
327
- #
328
- # module Minitest
329
- # def self.plugin_bogus_options(opts, options)
330
- # opts.on "--myci", "Report results to my CI" do
331
- # options[:myci] = true
332
- # options[:myci_addr] = get_myci_addr
333
- # options[:myci_port] = get_myci_port
334
- # end
335
- # end
336
- #
337
- # def self.plugin_bogus_init(options)
338
- # self.reporter << MyCI.new(options) if options[:myci]
339
- # end
340
- # end
341
- #
342
- # ### Adding custom reporters
343
- #
344
- # Minitest uses composite reporter to output test results using multiple
345
- # reporter instances. You can add new reporters to the composite during the
346
- # init_plugins phase. As we saw in `plugin_bogus_init` above, you simply add
347
- # your reporter instance to the composite via `<<`.
348
- #
349
- # `AbstractReporter` defines the API for reporters. You may subclass it and
350
- # override any method you want to achieve your desired behavior.
351
- #
352
- # start
353
- # : Called when the run has started.
354
- # record
355
- # : Called for each result, passed or otherwise.
356
- # report
357
- # : Called at the end of the run.
358
- # passed?
359
- # : Called to see if you detected any problems.
360
- #
361
- #
362
- # Using our example above, here is how we might implement MyCI:
363
- #
364
- # # minitest/bogus_plugin.rb
365
- #
366
- # module Minitest
367
- # class MyCI < AbstractReporter
368
- # attr_accessor :results, :addr, :port
369
- #
370
- # def initialize options
371
- # self.results = []
372
- # self.addr = options[:myci_addr]
373
- # self.port = options[:myci_port]
374
- # end
375
- #
376
- # def record result
377
- # self.results << result
378
- # end
379
- #
380
- # def report
381
- # CI.connect(addr, port).send_results self.results
382
- # end
383
- # end
384
- #
385
- # # code from above...
386
- # end
387
- #
388
- # ## FAQ
389
- #
390
- # ### What versions are compatible with what? Or what versions are supported?
391
- #
392
- # Minitest is a dependency of rails, which until fairly recently had an
393
- # overzealous backwards compatibility policy. As such, I'm stuck supporting
394
- # versions of ruby that are long past EOL. Once rails 5.2 is dropped (hopefully
395
- # April 2021), I get to drop a bunch of versions of ruby that I have to
396
- # currently test against.
397
- #
398
- # (As of 2021-01-31)
399
- #
400
- # Current versions of rails: (https://endoflife.date/rails)
401
- #
402
- # | rails | min ruby | rec ruby | minitest | status |
403
- # |-------+----------+----------+----------+----------|
404
- # | 7.0 | >= 2.7 | 3.0 | >= 5.1 | Future |
405
- # | 6.1 | >= 2.5 | 3.0 | >= 5.1 | Current |
406
- # | 6.0 | >= 2.5 | 2.6 | >= 5.1 | Security |
407
- # | 5.2 | >= 2.2.2 | 2.5 | ~> 5.1 | Security | EOL @railsconf 2021?
408
- #
409
- # Current versions of ruby: (https://endoflife.date/ruby)
410
- #
411
- # | ruby | Status | EOL Date |
412
- # |------+---------+------------|
413
- # | 3.0 | Current | 2024-03-31 |
414
- # | 2.7 | Maint | 2023-03-31 |
415
- # | 2.6 | Maint* | 2022-03-31 |
416
- # | 2.5 | EOL | 2021-03-31 |
417
- # | 2.4 | EOL | 2020-03-31 |
418
- # | 2.3 | EOL | 2019-03-31 |
419
- # | 2.2 | EOL | 2018-03-31 |
420
- #
421
- # See also:
422
- #
423
- # * https://www.fastruby.io/blog/ruby/rails/versions/compatibility-table.html
424
- # * https://jamesjeffersconsulting.com/ruby-rails-version-matrix/
425
- #
426
- #
427
- # ### How to test SimpleDelegates?
428
- #
429
- # The following implementation and test:
430
- #
431
- # class Worker < SimpleDelegator
432
- # def work
433
- # end
434
- # end
435
- #
436
- # describe Worker do
437
- # before do
438
- # @worker = Worker.new(Object.new)
439
- # end
440
- #
441
- # it "must respond to work" do
442
- # _(@worker).must_respond_to :work
443
- # end
444
- # end
445
- #
446
- # outputs a failure:
447
- #
448
- # 1) Failure:
449
- # Worker#test_0001_must respond to work [bug11.rb:16]:
450
- # Expected #<Object:0x007f9e7184f0a0> (Object) to respond to #work.
451
- #
452
- # Worker is a SimpleDelegate which in 1.9+ is a subclass of BasicObject.
453
- # Expectations are put on Object (one level down) so the Worker (SimpleDelegate)
454
- # hits `method_missing` and delegates down to the `Object.new` instance. That
455
- # object doesn't respond to work so the test fails.
456
- #
457
- # You can bypass `SimpleDelegate#method_missing` by extending the worker with
458
- # `Minitest::Expectations`. You can either do that in your setup at the instance
459
- # level, like:
460
- #
461
- # before do
462
- # @worker = Worker.new(Object.new)
463
- # @worker.extend Minitest::Expectations
464
- # end
465
- #
466
- # or you can extend the Worker class (within the test file!), like:
467
- #
468
- # class Worker
469
- # include ::Minitest::Expectations
470
- # end
471
- #
472
- # ### How to share code across test classes?
473
- #
474
- # Use a module. That's exactly what they're for:
475
- #
476
- # module UsefulStuff
477
- # def useful_method
478
- # # ...
479
- # end
480
- # end
481
- #
482
- # describe Blah do
483
- # include UsefulStuff
484
- #
485
- # def test_whatever
486
- # # useful_method available here
487
- # end
488
- # end
489
- #
490
- # Remember, `describe` simply creates test classes. It's just ruby at the end of
491
- # the day and all your normal Good Ruby Rules (tm) apply. If you want to extend
492
- # your test using setup/teardown via a module, just make sure you ALWAYS call
493
- # super. before/after automatically call super for you, so make sure you don't
494
- # do it twice.
495
- #
496
- # ### How to run code before a group of tests?
497
- #
498
- # Use a constant with begin...end like this:
499
- #
500
- # describe Blah do
501
- # SETUP = begin
502
- # # ... this runs once when describe Blah starts
503
- # end
504
- # # ...
505
- # end
506
- #
507
- # This can be useful for expensive initializations or sharing state. Remember,
508
- # this is just ruby code, so you need to make sure this technique and sharing
509
- # state doesn't interfere with your tests.
510
- #
511
- # ### Why am I seeing `uninitialized constant MiniTest::Test (NameError)`?
512
- #
513
- # Are you running the test with Bundler (e.g. via `bundle exec` )? If so, in
514
- # order to require minitest, you must first add the `gem 'minitest'` to your
515
- # Gemfile and run `bundle`. Once it's installed, you should be able to require
516
- # minitest and run your tests.
517
- #
518
- # ## Prominent Projects using Minitest:
519
- #
520
- # * arel
521
- # * journey
522
- # * mime-types
523
- # * nokogiri
524
- # * rails (active_support et al)
525
- # * rake
526
- # * rdoc
527
- # * ...and of course, everything from seattle.rb...
528
- #
529
- #
530
- # ## Developing Minitest:
531
- #
532
- # Minitest requires [Hoe](https://rubygems.org/gems/hoe).
533
- #
534
- # ### Minitest's own tests require UTF-8 external encoding.
535
- #
536
- # This is a common problem in Windows, where the default external Encoding is
537
- # often CP850, but can affect any platform. Minitest can run test suites using
538
- # any Encoding, but to run Minitest's own tests you must have a default external
539
- # Encoding of UTF-8.
540
- #
541
- # If your encoding is wrong, you'll see errors like:
542
- #
543
- # --- expected
544
- # +++ actual
545
- # @@ -1,2 +1,3 @@
546
- # # encoding: UTF-8
547
- # -"Expected /\\w+/ to not match \"blah blah blah\"."
548
- # +"Expected /\\w+/ to not match # encoding: UTF-8
549
- # +\"blah blah blah\"."
550
- #
551
- # To check your current encoding, run:
552
- #
553
- # ruby -e 'puts Encoding.default_external'
554
- #
555
- # If your output is something other than UTF-8, you can set the RUBYOPTS env
556
- # variable to a value of '-Eutf-8'. Something like:
557
- #
558
- # RUBYOPT='-Eutf-8' ruby -e 'puts Encoding.default_external'
559
- #
560
- # Check your OS/shell documentation for the precise syntax (the above will not
561
- # work on a basic Windows CMD prompt, look for the SET command). Once you've got
562
- # it successfully outputing UTF-8, use the same setting when running rake in
563
- # Minitest.
564
- #
565
- # ### Minitest's own tests require GNU (or similar) diff.
566
- #
567
- # This is also a problem primarily affecting Windows developers. PowerShell has
568
- # a command called diff, but it is not suitable for use with Minitest.
569
- #
570
- # If you see failures like either of these, you are probably missing diff tool:
571
- #
572
- # 4) Failure:
573
- # TestMinitestUnitTestCase#test_assert_equal_different_long [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:936]:
574
- # Expected: "--- expected\n+++ actual\n@@ -1 +1 @@\n-\"hahahahahahahahahahahahahahahahahahahaha\"\n+\"blahblahblahblahblahblahblahblahblahblah\"\n"
575
- # Actual: "Expected: \"hahahahahahahahahahahahahahahahahahahaha\"\n Actual: \"blahblahblahblahblahblahblahblahblahblah\""
576
- #
577
- # 5) Failure:
578
- # TestMinitestUnitTestCase#test_assert_equal_different_collection_hash_hex_invisible [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:845]:
579
- # Expected: "No visible difference in the Hash#inspect output.\nYou should look at the implementation of #== on Hash or its members.\n
580
- # {1=>#<Object:0xXXXXXX>}"
581
- # Actual: "Expected: {1=>#<Object:0x00000003ba0470>}\n Actual: {1=>#<Object:0x00000003ba0448>}"
582
- #
583
- # If you use Cygwin or MSYS2 or similar there are packages that include a GNU
584
- # diff for Windows. If you don't, you can download GNU diffutils from
585
- # http://gnuwin32.sourceforge.net/packages/diffutils.htm (make sure to add it to
586
- # your PATH).
587
- #
588
- # You can make sure it's installed and path is configured properly with:
589
- #
590
- # diff.exe -v
591
- #
592
- # There are multiple lines of output, the first should be something like:
593
- #
594
- # diff (GNU diffutils) 2.8.1
595
- #
596
- # If you are using PowerShell make sure you run diff.exe, not just diff, which
597
- # will invoke the PowerShell built in function.
598
- #
599
- # ## Known Extensions:
600
- #
601
- # capybara_minitest_spec
602
- # : Bridge between Capybara RSpec matchers and Minitest::Spec expectations
603
- # (e.g. `page.must_have_content("Title")`).
604
- # color_pound_spec_reporter
605
- # : Test names print Ruby Object types in color with your Minitest Spec style
606
- # tests.
607
- # minispec-metadata
608
- # : Metadata for describe/it blocks & CLI tag filter. E.g. `it "requires JS
609
- # driver", js: true do` & `ruby test.rb --tag js` runs tests tagged :js.
610
- # minispec-rails
611
- # : Minimal support to use Spec style in Rails 5+.
612
- # mini-apivore
613
- # : for swagger based automated API testing.
614
- # minitest-around
615
- # : Around block for minitest. An alternative to setup/teardown dance.
616
- # minitest-assert_errors
617
- # : Adds Minitest assertions to test for errors raised or not raised by
618
- # Minitest itself.
619
- # minitest-autotest
620
- # : autotest is a continuous testing facility meant to be used during
621
- # development.
622
- # minitest-bacon
623
- # : minitest-bacon extends minitest with bacon-like functionality.
624
- # minitest-bang
625
- # : Adds support for RSpec-style let! to immediately invoke let statements
626
- # before each test.
627
- # minitest-bisect
628
- # : Helps you isolate and debug random test failures.
629
- # minitest-blink1_reporter
630
- # : Display test results with a Blink1.
631
- # minitest-capistrano
632
- # : Assertions and expectations for testing Capistrano recipes.
633
- # minitest-capybara
634
- # : Capybara matchers support for minitest unit and spec.
635
- # minitest-chef-handler
636
- # : Run Minitest suites as Chef report handlers
637
- # minitest-ci
638
- # : CI reporter plugin for Minitest.
639
- # minitest-context
640
- # : Defines contexts for code reuse in Minitest specs that share common
641
- # expectations.
642
- # minitest-debugger
643
- # : Wraps assert so failed assertions drop into the ruby debugger.
644
- # minitest-display
645
- # : Patches Minitest to allow for an easily configurable output.
646
- # minitest-documentation
647
- # : Minimal documentation format inspired by rspec's.
648
- # minitest-doc_reporter
649
- # : Detailed output inspired by rspec's documentation format.
650
- # minitest-emoji
651
- # : Print out emoji for your test passes, fails, and skips.
652
- # minitest-english
653
- # : Semantically symmetric aliases for assertions and expectations.
654
- # minitest-excludes
655
- # : Clean API for excluding certain tests you don't want to run under certain
656
- # conditions.
657
- # minitest-fail-fast
658
- # : Reimplements RSpec's "fail fast" feature
659
- # minitest-filecontent
660
- # : Support unit tests with expectation results in files. Differing results
661
- # will be stored again in files.
662
- # minitest-filesystem
663
- # : Adds assertion and expectation to help testing filesystem contents.
664
- # minitest-firemock
665
- # : Makes your Minitest mocks more resilient.
666
- # minitest-focus
667
- # : Focus on one test at a time.
668
- # minitest-gcstats
669
- # : A minitest plugin that adds a report of the top tests by number of objects
670
- # allocated.
671
- # minitest-global_expectations
672
- # : Support minitest expectation methods for all objects
673
- # minitest-great_expectations
674
- # : Generally useful additions to minitest's assertions and expectations.
675
- # minitest-growl
676
- # : Test notifier for minitest via growl.
677
- # minitest-happy
678
- # : GLOBALLY ACTIVATE MINITEST PRIDE! RAWR!
679
- # minitest-have_tag
680
- # : Adds Minitest assertions to test for the existence of HTML tags, including
681
- # contents, within a provided string.
682
- # minitest-heat
683
- # : Reporting that builds a heat map of failure locations
684
- # minitest-hooks
685
- # : Around and before_all/after_all/around_all hooks
686
- # minitest-hyper
687
- # : Pretty, single-page HTML reports for your Minitest runs
688
- # minitest-implicit-subject
689
- # : Implicit declaration of the test subject.
690
- # minitest-instrument
691
- # : Instrument ActiveSupport::Notifications when test method is executed.
692
- # minitest-instrument-db
693
- # : Store information about speed of test execution provided by
694
- # minitest-instrument in database.
695
- # minitest-junit
696
- # : JUnit-style XML reporter for minitest.
697
- # minitest-keyword
698
- # : Use Minitest assertions with keyword arguments.
699
- # minitest-libnotify
700
- # : Test notifier for minitest via libnotify.
701
- # minitest-line
702
- # : Run test at line number.
703
- # minitest-logger
704
- # : Define assert_log and enable minitest to test log messages. Supports
705
- # Logger and Log4r::Logger.
706
- # minitest-macruby
707
- # : Provides extensions to minitest for macruby UI testing.
708
- # minitest-matchers
709
- # : Adds support for RSpec-style matchers to minitest.
710
- # minitest-matchers_vaccine
711
- # : Adds assertions that adhere to the matcher spec, but without any
712
- # expectation infections.
713
- # minitest-metadata
714
- # : Annotate tests with metadata (key-value).
715
- # minitest-mock_expectations
716
- # : Provides method call assertions for minitest.
717
- # minitest-mongoid
718
- # : Mongoid assertion matchers for Minitest.
719
- # minitest-must_not
720
- # : Provides must_not as an alias for wont in Minitest.
721
- # minitest-optional_retry
722
- # : Automatically retry failed test to help with flakiness.
723
- # minitest-osx
724
- # : Reporter for the Mac OS X notification center.
725
- # minitest-parallel_fork
726
- # : Fork-based parallelization
727
- # minitest-parallel-db
728
- # : Run tests in parallel with a single database.
729
- # minitest-power_assert
730
- # : PowerAssert for Minitest.
731
- # minitest-predicates
732
- # : Adds support for .predicate? methods.
733
- # minitest-profile
734
- # : List the 10 slowest tests in your suite.
735
- # minitest-rails
736
- # : Minitest integration for Rails 3.x.
737
- # minitest-rails-capybara
738
- # : Capybara integration for Minitest::Rails.
739
- # minitest-reporters
740
- # : Create customizable Minitest output formats.
741
- # minitest-rg
742
- # : Colored red/green output for Minitest.
743
- # minitest-rspec_mocks
744
- # : Use RSpec Mocks with Minitest.
745
- # minitest-server
746
- # : minitest-server provides a client/server setup with your minitest process,
747
- # allowing your test run to send its results directly to a handler.
748
- # minitest-sequel
749
- # : Minitest assertions to speed-up development and testing of Ruby Sequel
750
- # database setups.
751
- # minitest-shared_description
752
- # : Support for shared specs and shared spec subclasses
753
- # minitest-should_syntax
754
- # : RSpec-style `x.should == y` assertions for Minitest.
755
- # minitest-shouldify
756
- # : Adding all manner of shoulds to Minitest (bad idea)
757
- # minitest-snail
758
- # : Print a list of tests that take too long
759
- # minitest-spec-context
760
- # : Provides rspec-ish context method to Minitest::Spec.
761
- # minitest-spec-expect
762
- # : Expect syntax for Minitest::Spec (e.g. expect(sequences).to_include
763
- # :celery_man).
764
- # minitest-spec-magic
765
- # : Minitest::Spec extensions for Rails and beyond.
766
- # minitest-spec-rails
767
- # : Drop in Minitest::Spec superclass for ActiveSupport::TestCase.
768
- # minitest-sprint
769
- # : Runs (Get it? It's fast!) your tests and makes it easier to rerun
770
- # individual failures.
771
- # minitest-stately
772
- # : Find leaking state between tests
773
- # minitest-stub_any_instance
774
- # : Stub any instance of a method on the given class for the duration of a
775
- # block.
776
- # minitest-stub-const
777
- # : Stub constants for the duration of a block.
778
- # minitest-tags
779
- # : Add tags for minitest.
780
- # minitest-unordered
781
- # : Adds a new assertion to minitest for checking the contents of a
782
- # collection, ignoring element order.
783
- # minitest-vcr
784
- # : Automatic cassette managment with Minitest::Spec and VCR.
785
- # minitest_log
786
- # : Adds structured logging, data explication, and verdicts.
787
- # minitest_owrapper
788
- # : Get tests results as a TestResult object.
789
- # minitest_should
790
- # : Shoulda style syntax for minitest test::unit.
791
- # minitest_tu_shim
792
- # : Bridges between test/unit and minitest.
793
- # mongoid-minitest
794
- # : Minitest matchers for Mongoid.
795
- # mutant-minitest
796
- # : Minitest integration for mutant.
797
- # pry-rescue
798
- # : A pry plugin w/ minitest support. See pry-rescue/minitest.rb.
799
- # rematch
800
- # : Declutter your test files from large hardcoded data and update them
801
- # automatically when your code changes.
802
- # rspec2minitest
803
- # : Easily translate any RSpec matchers to Minitest assertions and
804
- # expectations.
805
- #
806
- #
807
- # ## Unknown Extensions:
808
- #
809
- # Authors... Please send me a pull request with a description of your minitest
810
- # extension.
811
- #
812
- # * assay-minitest
813
- # * detroit-minitest
814
- # * em-minitest-spec
815
- # * flexmock-minitest
816
- # * guard-minitest
817
- # * guard-minitest-decisiv
818
- # * minitest-activemodel
819
- # * minitest-ar-assertions
820
- # * minitest-capybara-unit
821
- # * minitest-colorer
822
- # * minitest-deluxe
823
- # * minitest-extra-assertions
824
- # * minitest-rails-shoulda
825
- # * minitest-spec
826
- # * minitest-spec-should
827
- # * minitest-sugar
828
- # * spork-minitest
829
- #
830
- #
831
- # ## Minitest related goods
832
- #
833
- # * minitest/pride fabric:
834
- # http://www.spoonflower.com/fabric/3928730-again-by-katie_allen
835
- #
836
- #
837
- # ## REQUIREMENTS:
838
- #
839
- # * Ruby 2.3+. No magic is involved. I hope.
840
- #
841
- #
842
- # ## INSTALL:
843
- #
844
- # sudo gem install minitest
845
- #
846
- # On 1.9, you already have it. To get newer candy you can still install the gem,
847
- # and then requiring "minitest/autorun" should automatically pull it in. If not,
848
- # you'll need to do it yourself:
849
- #
850
- # gem "minitest" # ensures you"re using the gem, and not the built-in MT
851
- # require "minitest/autorun"
852
- #
853
- # # ... usual testing stuffs ...
854
- #
855
- # DO NOTE: There is a serious problem with the way that ruby 1.9/2.0 packages
856
- # their own gems. They install a gem specification file, but don't install the
857
- # gem contents in the gem path. This messes up Gem.find_files and many other
858
- # things (gem which, gem contents, etc).
859
- #
860
- # Just install minitest as a gem for real and you'll be happier.
861
- #
862
- # ## LICENSE:
863
- #
864
- # (The MIT License)
865
- #
866
- # Copyright (c) Ryan Davis, seattle.rb
867
- #
868
- # Permission is hereby granted, free of charge, to any person obtaining a copy
869
- # of this software and associated documentation files (the 'Software'), to deal
870
- # in the Software without restriction, including without limitation the rights
871
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
872
- # copies of the Software, and to permit persons to whom the Software is
873
- # furnished to do so, subject to the following conditions:
874
- #
875
- # The above copyright notice and this permission notice shall be included in all
876
- # copies or substantial portions of the Software.
877
- #
878
- # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
879
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
880
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
881
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
882
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
883
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
884
- # SOFTWARE.
2
+ # The top-level namespace for Minitest. Also the location of the main runtime.
3
+ # See `Minitest.run` for more information.
885
4
  #
886
5
  module Minitest
6
+ @@installed_at_exit: untyped
7
+
8
+ @@after_run: untyped
9
+
10
+ self.@extensions: untyped
11
+
12
+ def self.cattr_accessor: (untyped name) -> untyped
13
+
887
14
  # <!--
888
15
  # rdoc-file=lib/minitest.rb
889
16
  # - autorun()
@@ -901,12 +28,22 @@ module Minitest
901
28
  #
902
29
  # Minitest.after_run { p $debugging_info }
903
30
  #
904
- def self.after_run: () ?{ () -> untyped } -> untyped
31
+ def self.after_run: () { (?) -> untyped } -> untyped
905
32
 
906
- def self.init_plugins: (untyped options) -> untyped
33
+ # <!--
34
+ # rdoc-file=lib/minitest.rb
35
+ # - register_plugin(name_or_mod)
36
+ # -->
37
+ # Register a plugin to be used. Does NOT require / load it.
38
+ #
39
+ def self.register_plugin: (untyped name_or_mod) -> nil
907
40
 
908
41
  def self.load_plugins: () -> (nil | untyped)
909
42
 
43
+ def self.init_plugins: (untyped options) -> untyped
44
+
45
+ def self.process_args: (?untyped args) -> untyped
46
+
910
47
  # <!--
911
48
  # rdoc-file=lib/minitest.rb
912
49
  # - run(args = [])
@@ -919,9 +56,12 @@ module Minitest
919
56
  #
920
57
  # Minitest.autorun
921
58
  # Minitest.run(args)
59
+ # Minitest.load_plugins
60
+ # Minitest.process_args
61
+ # Minitest.init_plugins
922
62
  # Minitest.__run(reporter, options)
923
63
  # Runnable.runnables.each
924
- # runnable.run(reporter, options)
64
+ # runnable_klass.run(reporter, options)
925
65
  # self.runnable_methods.each
926
66
  # self.run_one_method(self, runnable_method, reporter)
927
67
  # Minitest.run_one_method(klass, runnable_method)
@@ -929,6 +69,8 @@ module Minitest
929
69
  #
930
70
  def self.run: (?untyped args) -> untyped
931
71
 
72
+ def self.empty_run!: (untyped options) -> untyped
73
+
932
74
  # <!--
933
75
  # rdoc-file=lib/minitest.rb
934
76
  # - __run(reporter, options)
@@ -937,18 +79,25 @@ module Minitest
937
79
  #
938
80
  def self.__run: (untyped reporter, untyped options) -> untyped
939
81
 
940
- def self.process_args: (?untyped args) -> untyped
941
-
942
82
  def self.filter_backtrace: (untyped bt) -> untyped
943
83
 
944
84
  def self.run_one_method: (untyped klass, untyped method_name) -> untyped
945
85
 
946
- # :nodoc:
947
86
  def self.clock_time: () -> untyped
948
87
 
88
+ # <!--
89
+ # rdoc-file=lib/minitest/manual_plugins.rb
90
+ # - load(*names)
91
+ # -->
92
+ # Manually load plugins by name.
93
+ #
94
+ def self.load: (*untyped names) -> untyped
95
+
949
96
  def self.plugin_pride_options: (untyped opts, untyped _options) -> untyped
950
97
 
951
- def self.plugin_pride_init: (untyped options) -> (untyped | nil)
98
+ def self.plugin_pride_init: (untyped options) -> (nil | untyped)
99
+
100
+ attr_accessor self.seed: untyped
952
101
 
953
102
  attr_accessor self.parallel_executor: untyped
954
103
 
@@ -960,7 +109,7 @@ module Minitest
960
109
 
961
110
  attr_accessor self.info_signal: untyped
962
111
 
963
- VERSION: String
112
+ attr_accessor self.allow_fork: untyped
964
113
 
965
- ENCS: true
114
+ VERSION: String
966
115
  end