mega-sharp-tool 0.0.1

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 (44) hide show
  1. checksums.yaml +7 -0
  2. data/mega-sharp-tool.gemspec +12 -0
  3. data/minitest-6.0.6/History.rdoc +1860 -0
  4. data/minitest-6.0.6/Manifest.txt +41 -0
  5. data/minitest-6.0.6/README.rdoc +763 -0
  6. data/minitest-6.0.6/Rakefile +89 -0
  7. data/minitest-6.0.6/bin/minitest +5 -0
  8. data/minitest-6.0.6/design_rationale.rb +54 -0
  9. data/minitest-6.0.6/lib/hoe/minitest.rb +30 -0
  10. data/minitest-6.0.6/lib/minitest/assertions.rb +821 -0
  11. data/minitest-6.0.6/lib/minitest/autorun.rb +5 -0
  12. data/minitest-6.0.6/lib/minitest/benchmark.rb +452 -0
  13. data/minitest-6.0.6/lib/minitest/bisect.rb +304 -0
  14. data/minitest-6.0.6/lib/minitest/complete.rb +56 -0
  15. data/minitest-6.0.6/lib/minitest/compress.rb +94 -0
  16. data/minitest-6.0.6/lib/minitest/error_on_warning.rb +11 -0
  17. data/minitest-6.0.6/lib/minitest/expectations.rb +321 -0
  18. data/minitest-6.0.6/lib/minitest/find_minimal_combination.rb +127 -0
  19. data/minitest-6.0.6/lib/minitest/hell.rb +11 -0
  20. data/minitest-6.0.6/lib/minitest/manual_plugins.rb +4 -0
  21. data/minitest-6.0.6/lib/minitest/parallel.rb +72 -0
  22. data/minitest-6.0.6/lib/minitest/path_expander.rb +432 -0
  23. data/minitest-6.0.6/lib/minitest/pride.rb +4 -0
  24. data/minitest-6.0.6/lib/minitest/pride_plugin.rb +135 -0
  25. data/minitest-6.0.6/lib/minitest/server.rb +49 -0
  26. data/minitest-6.0.6/lib/minitest/server_plugin.rb +88 -0
  27. data/minitest-6.0.6/lib/minitest/spec.rb +324 -0
  28. data/minitest-6.0.6/lib/minitest/sprint.rb +105 -0
  29. data/minitest-6.0.6/lib/minitest/sprint_plugin.rb +39 -0
  30. data/minitest-6.0.6/lib/minitest/test.rb +232 -0
  31. data/minitest-6.0.6/lib/minitest/test_task.rb +331 -0
  32. data/minitest-6.0.6/lib/minitest.rb +1232 -0
  33. data/minitest-6.0.6/test/minitest/metametameta.rb +150 -0
  34. data/minitest-6.0.6/test/minitest/test_bisect.rb +249 -0
  35. data/minitest-6.0.6/test/minitest/test_find_minimal_combination.rb +138 -0
  36. data/minitest-6.0.6/test/minitest/test_minitest_assertions.rb +1729 -0
  37. data/minitest-6.0.6/test/minitest/test_minitest_benchmark.rb +151 -0
  38. data/minitest-6.0.6/test/minitest/test_minitest_reporter.rb +437 -0
  39. data/minitest-6.0.6/test/minitest/test_minitest_spec.rb +1095 -0
  40. data/minitest-6.0.6/test/minitest/test_minitest_test.rb +1295 -0
  41. data/minitest-6.0.6/test/minitest/test_minitest_test_task.rb +57 -0
  42. data/minitest-6.0.6/test/minitest/test_path_expander.rb +229 -0
  43. data/minitest-6.0.6/test/minitest/test_server.rb +146 -0
  44. metadata +83 -0
@@ -0,0 +1,151 @@
1
+ require "minitest/autorun"
2
+ require "minitest/benchmark"
3
+
4
+ ##
5
+ # Used to verify data:
6
+ # https://www.wolframalpha.com/examples/RegressionAnalysis.html
7
+
8
+ class TestMinitestBenchmark < Minitest::Test
9
+ def test_cls_bench_exp
10
+ assert_equal [2, 4, 8, 16, 32], Minitest::Benchmark.bench_exp(2, 32, 2)
11
+ end
12
+
13
+ def test_cls_bench_linear
14
+ assert_equal [2, 4, 6, 8, 10], Minitest::Benchmark.bench_linear(2, 10, 2)
15
+ end
16
+
17
+ def test_cls_runnable_methods
18
+ assert_equal [], Minitest::Benchmark.runnable_methods
19
+
20
+ c = Class.new Minitest::Benchmark do
21
+ def bench_blah
22
+ end
23
+ end
24
+
25
+ assert_equal ["bench_blah"], c.runnable_methods
26
+ end
27
+
28
+ def test_cls_run
29
+ c = Class.new Minitest::Benchmark do
30
+ def bench_dummy
31
+ assert true
32
+ end
33
+ end
34
+
35
+ reporter = Minitest::StatisticsReporter.new(StringIO.new(+""))
36
+
37
+ c.run c, "bench_dummy", reporter
38
+
39
+ assert_equal 1, reporter.count
40
+ end
41
+
42
+ def test_cls_bench_range
43
+ assert_equal [1, 10, 100, 1_000, 10_000], Minitest::Benchmark.bench_range
44
+ end
45
+
46
+ def test_fit_exponential_clean
47
+ x = [1.0, 2.0, 3.0, 4.0, 5.0]
48
+ y = x.map { |n| 1.1 * Math.exp(2.1 * n) }
49
+
50
+ assert_fit :exponential, x, y, 1.0, 1.1, 2.1
51
+ end
52
+
53
+ def test_fit_exponential_noisy
54
+ x = [1.0, 1.9, 2.6, 3.4, 5.0]
55
+ y = [12, 10, 8.2, 6.9, 5.9]
56
+
57
+ # verified with Numbers and R
58
+ assert_fit :exponential, x, y, 0.95, 13.81148, -0.1820
59
+ end
60
+
61
+ def test_fit_logarithmic_clean
62
+ x = [1.0, 2.0, 3.0, 4.0, 5.0]
63
+ y = x.map { |n| 1.1 + 2.1 * Math.log(n) }
64
+
65
+ assert_fit :logarithmic, x, y, 1.0, 1.1, 2.1
66
+ end
67
+
68
+ def test_fit_logarithmic_noisy
69
+ x = [1.0, 2.0, 3.0, 4.0, 5.0]
70
+ # Generated with
71
+ # y = x.map { |n| jitter = 0.999 + 0.002 * rand; (Math.log(n) ) * jitter }
72
+ y = [0.0, 0.6935, 1.0995, 1.3873, 1.6097]
73
+
74
+ assert_fit :logarithmic, x, y, 0.95, 0, 1
75
+ end
76
+
77
+ def test_fit_constant_clean
78
+ x = (1..5).to_a
79
+ y = [5.0, 5.0, 5.0, 5.0, 5.0]
80
+
81
+ assert_fit :linear, x, y, nil, 5.0, 0
82
+ end
83
+
84
+ def test_fit_constant_noisy
85
+ x = (1..5).to_a
86
+ y = [1.0, 1.2, 1.0, 0.8, 1.0]
87
+
88
+ # verified in numbers and R
89
+ assert_fit :linear, x, y, nil, 1.12, -0.04
90
+ end
91
+
92
+ def test_fit_linear_clean
93
+ # y = m * x + b where m = 2.2, b = 3.1
94
+ x = (1..5).to_a
95
+ y = x.map { |n| 2.2 * n + 3.1 }
96
+
97
+ assert_fit :linear, x, y, 1.0, 3.1, 2.2
98
+ end
99
+
100
+ def test_fit_linear_noisy
101
+ x = [ 60, 61, 62, 63, 65]
102
+ y = [3.1, 3.6, 3.8, 4.0, 4.1]
103
+
104
+ # verified in numbers and R
105
+ assert_fit :linear, x, y, 0.8315, -7.9635, 0.1878
106
+ end
107
+
108
+ def test_fit_power_clean
109
+ # y = A x ** B, where B = b and A = e ** a
110
+ # if, A = 1, B = 2, then
111
+
112
+ x = [1.0, 2.0, 3.0, 4.0, 5.0]
113
+ y = [1.0, 4.0, 9.0, 16.0, 25.0]
114
+
115
+ assert_fit :power, x, y, 1.0, 1.0, 2.0
116
+ end
117
+
118
+ def test_fit_power_noisy
119
+ # from www.engr.uidaho.edu/thompson/courses/ME330/lecture/least_squares.html
120
+ x = [10, 12, 15, 17, 20, 22, 25, 27, 30, 32, 35]
121
+ y = [95, 105, 125, 141, 173, 200, 253, 298, 385, 459, 602]
122
+
123
+ # verified in numbers
124
+ assert_fit :power, x, y, 0.90, 2.6217, 1.4556
125
+
126
+ # income to % of households below income amount
127
+ # https://library.wolfram.com/infocenter/Conferences/6461/PowerLaws.nb
128
+ x = [15_000, 25_000, 35_000, 50_000, 75_000, 100_000]
129
+ y = [0.154, 0.283, 0.402, 0.55, 0.733, 0.843]
130
+
131
+ # verified in numbers
132
+ assert_fit :power, x, y, 0.96, 3.119e-5, 0.8959
133
+ end
134
+
135
+ def assert_fit msg, x, y, fit, exp_a, exp_b
136
+ bench = Minitest::Benchmark.new :blah
137
+
138
+ a, b, rr = bench.send "fit_#{msg}", x, y
139
+
140
+ assert_operator rr, :>=, fit if fit
141
+ assert_in_delta exp_a, a
142
+ assert_in_delta exp_b, b
143
+ end
144
+ end
145
+
146
+ describe "my class Bench" do
147
+ klass = self
148
+ it "should provide bench methods" do
149
+ klass.must_respond_to :bench
150
+ end
151
+ end
@@ -0,0 +1,437 @@
1
+ require "minitest/autorun"
2
+ require_relative "metametameta"
3
+ require "forwardable"
4
+
5
+ class FakeTest < Minitest::Test
6
+ def woot
7
+ assert true
8
+ end
9
+ end
10
+
11
+ class TestMinitestReporter < MetaMetaMetaTestCase
12
+
13
+ attr_accessor :r, :io
14
+
15
+ def new_composite_reporter
16
+ reporter = Minitest::CompositeReporter.new
17
+ reporter << Minitest::SummaryReporter.new(self.io)
18
+ reporter << Minitest::ProgressReporter.new(self.io)
19
+
20
+ # eg reporter.results -> reporters.first.results
21
+ reporter.extend Forwardable
22
+ reporter.delegate :first => :reporters
23
+ reporter.delegate %i[results count assertions options to_s] => :first
24
+
25
+ reporter
26
+ end
27
+
28
+ def setup
29
+ super
30
+ self.io = StringIO.new(+"")
31
+ self.r = new_composite_reporter
32
+ @et = @ft = @pt = @st = @sse = nil
33
+ end
34
+
35
+ def error_test
36
+ unless @et then
37
+ @et = FakeTest.new :woot
38
+ @et.failures << Minitest::UnexpectedError.new(begin
39
+ raise "no"
40
+ rescue => e
41
+ e
42
+ end)
43
+ @et = Minitest::Result.from @et
44
+ end
45
+ @et
46
+ end
47
+
48
+ def system_stack_error_test
49
+ unless @sse then
50
+
51
+ ex = SystemStackError.new
52
+
53
+ pre = ("a".."c").to_a
54
+ mid = ("aa".."ad").to_a * 67
55
+ post = ("d".."f").to_a
56
+ ary = pre + mid + post
57
+
58
+ ex.set_backtrace ary
59
+
60
+ @sse = FakeTest.new :woot
61
+ @sse.failures << Minitest::UnexpectedError.new(ex)
62
+ @sse = Minitest::Result.from @sse
63
+ end
64
+ @sse
65
+ end
66
+
67
+ def fail_test
68
+ unless @ft then
69
+ @ft = FakeTest.new :woot
70
+ @ft.failures << begin
71
+ raise Minitest::Assertion, "boo"
72
+ rescue Minitest::Assertion => e
73
+ e
74
+ end
75
+ @ft = Minitest::Result.from @ft
76
+ end
77
+ @ft
78
+ end
79
+
80
+ def passing_test
81
+ @pt ||= Minitest::Result.from FakeTest.new(:woot)
82
+ end
83
+
84
+ def passing_test_with_metadata
85
+ test = FakeTest.new :woot
86
+ test.metadata[:meta] = :data
87
+ @pt ||= Minitest::Result.from test
88
+ end
89
+
90
+ def skip_test
91
+ unless @st then
92
+ @st = FakeTest.new :woot
93
+ @st.failures << begin
94
+ raise Minitest::Skip
95
+ rescue Minitest::Assertion => e
96
+ e
97
+ end
98
+ @st = Minitest::Result.from @st
99
+ end
100
+ @st
101
+ end
102
+
103
+ def test_to_s
104
+ r.record passing_test
105
+ r.record fail_test
106
+ assert_match "woot", r.to_s
107
+ end
108
+
109
+ def test_options_skip_F
110
+ r.options[:skip] = "F"
111
+
112
+ r.record passing_test
113
+ r.record fail_test
114
+
115
+ refute_match "woot", r.to_s
116
+ end
117
+
118
+ def test_options_skip_E
119
+ r.options[:skip] = "E"
120
+
121
+ r.record passing_test
122
+ r.record error_test
123
+
124
+ refute_match "RuntimeError: no", r.to_s
125
+ end
126
+
127
+ def test_passed_eh_empty
128
+ assert_predicate r, :passed?
129
+ end
130
+
131
+ def test_passed_eh_failure
132
+ r.results << fail_test
133
+
134
+ refute_predicate r, :passed?
135
+ end
136
+
137
+ SKIP_MSG = "\n\nYou have skipped tests. Run with --verbose for details."
138
+
139
+ def test_passed_eh_error
140
+ r.start
141
+
142
+ r.results << error_test
143
+
144
+ refute_predicate r, :passed?
145
+
146
+ r.report
147
+
148
+ refute_match SKIP_MSG, io.string
149
+ end
150
+
151
+ def test_passed_eh_skipped
152
+ r.start
153
+ r.results << skip_test
154
+ assert r.passed?
155
+
156
+ restore_env do
157
+ r.report
158
+ end
159
+
160
+ assert_match SKIP_MSG, io.string
161
+ end
162
+
163
+ def test_passed_eh_skipped_verbose
164
+ r.options[:verbose] = true
165
+
166
+ r.start
167
+ r.results << skip_test
168
+ assert r.passed?
169
+ r.report
170
+
171
+ refute_match SKIP_MSG, io.string
172
+ end
173
+
174
+ def test_start
175
+ r.start
176
+
177
+ exp = "Run options: \n\n# Running:\n\n"
178
+
179
+ assert_equal exp, io.string
180
+ end
181
+
182
+ def test_record_pass
183
+ r.record passing_test
184
+
185
+ assert_equal ".", io.string
186
+ assert_empty r.results
187
+ assert_equal 1, r.count
188
+ assert_equal 0, r.assertions
189
+ end
190
+
191
+ def test_record_pass_with_metadata
192
+ reporter = self.r
193
+
194
+ def reporter.metadata
195
+ @metadata
196
+ end
197
+
198
+ def reporter.record result
199
+ super
200
+ @metadata = result.metadata if result.metadata?
201
+ end
202
+
203
+ r.record passing_test_with_metadata
204
+
205
+ exp = { :meta => :data }
206
+ assert_equal exp, reporter.metadata
207
+
208
+ assert_equal ".", io.string
209
+ assert_empty r.results
210
+ assert_equal 1, r.count
211
+ assert_equal 0, r.assertions
212
+ end
213
+
214
+ def test_record_fail
215
+ fail_test = self.fail_test
216
+ r.record fail_test
217
+
218
+ assert_equal "F", io.string
219
+ assert_equal [fail_test], r.results
220
+ assert_equal 1, r.count
221
+ assert_equal 0, r.assertions
222
+ end
223
+
224
+ def test_record_error
225
+ error_test = self.error_test
226
+ r.record error_test
227
+
228
+ assert_equal "E", io.string
229
+ assert_equal [error_test], r.results
230
+ assert_equal 1, r.count
231
+ assert_equal 0, r.assertions
232
+ end
233
+
234
+ def test_record_skip
235
+ skip_test = self.skip_test
236
+ r.record skip_test
237
+
238
+ assert_equal "S", io.string
239
+ assert_equal [skip_test], r.results
240
+ assert_equal 1, r.count
241
+ assert_equal 0, r.assertions
242
+ end
243
+
244
+ def test_report_empty
245
+ r.start
246
+ r.report
247
+
248
+ exp = <<~EOM
249
+ Run options:
250
+
251
+ # Running:
252
+
253
+
254
+
255
+ Finished in 0.00
256
+
257
+ 0 runs, 0 assertions, 0 failures, 0 errors, 0 skips
258
+ EOM
259
+
260
+ assert_equal exp, normalize_output(io.string)
261
+ end
262
+
263
+ def test_report_passing
264
+ r.start
265
+ r.record passing_test
266
+ r.report
267
+
268
+ exp = <<~EOM
269
+ Run options:
270
+
271
+ # Running:
272
+
273
+ .
274
+
275
+ Finished in 0.00
276
+
277
+ 1 runs, 0 assertions, 0 failures, 0 errors, 0 skips
278
+ EOM
279
+
280
+ assert_equal exp, normalize_output(io.string)
281
+ end
282
+
283
+ def test_report_failure
284
+ r.start
285
+ r.record fail_test
286
+ r.report
287
+
288
+ exp = <<~EOM
289
+ Run options:
290
+
291
+ # Running:
292
+
293
+ F
294
+
295
+ Finished in 0.00
296
+
297
+ 1) Failure:
298
+ FakeTest#woot [FILE:LINE]:
299
+ boo
300
+
301
+ 1 runs, 0 assertions, 1 failures, 0 errors, 0 skips
302
+ EOM
303
+
304
+ assert_equal exp, normalize_output(io.string)
305
+ end
306
+
307
+ def test_report_error
308
+ r.start
309
+ r.record error_test
310
+ r.report
311
+
312
+ exp = <<~EOM
313
+ Run options:
314
+
315
+ # Running:
316
+
317
+ E
318
+
319
+ Finished in 0.00
320
+
321
+ 1) Error:
322
+ FakeTest#woot:
323
+ RuntimeError: no
324
+ FILE:LINE:in 'error_test'
325
+ FILE:LINE:in 'test_report_error'
326
+
327
+ 1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
328
+ EOM
329
+
330
+ assert_equal exp, normalize_output(io.string)
331
+ end
332
+
333
+ def test_report_error__sse
334
+ r.start
335
+ r.record system_stack_error_test
336
+ r.report
337
+
338
+ exp = <<~EOM
339
+ Run options:
340
+
341
+ # Running:
342
+
343
+ E
344
+
345
+ Finished in 0.00
346
+
347
+ 1) Error:
348
+ FakeTest#woot:
349
+ SystemStackError: 274 -> 12
350
+ a
351
+ b
352
+ c
353
+ +->> 67 cycles of 4 lines:
354
+ | aa
355
+ | ab
356
+ | ac
357
+ | ad
358
+ +-<<
359
+ d
360
+ e
361
+ f
362
+
363
+ 1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
364
+ EOM
365
+
366
+ assert_equal exp, normalize_output(io.string)
367
+ end
368
+
369
+ def test_report_skipped
370
+ r.start
371
+ r.record skip_test
372
+
373
+ restore_env do
374
+ r.report
375
+ end
376
+
377
+ exp = <<~EOM
378
+ Run options:
379
+
380
+ # Running:
381
+
382
+ S
383
+
384
+ Finished in 0.00
385
+
386
+ 1 runs, 0 assertions, 0 failures, 0 errors, 1 skips
387
+
388
+ You have skipped tests. Run with --verbose for details.
389
+ EOM
390
+
391
+ assert_equal exp, normalize_output(io.string)
392
+ end
393
+
394
+ def test_report_failure_uses_backtrace_filter
395
+ filter = Minitest::BacktraceFilter.new
396
+ def filter.filter _bt
397
+ ["foo.rb:123:in 'foo'"]
398
+ end
399
+
400
+ with_backtrace_filter filter do
401
+ r.start
402
+ r.record fail_test
403
+ r.report
404
+ end
405
+
406
+ exp = "FakeTest#woot [foo.rb:123]"
407
+
408
+ assert_includes io.string, exp
409
+ end
410
+
411
+ def test_report_failure_uses_backtrace_filter_complex_sorbet
412
+ backtrace = <<~EOBT
413
+ /Users/user/.gem/ruby/3.2.2/gems/minitest-5.20.0/lib/minitest/assertions.rb:183:in 'assert'
414
+ example_test.rb:9:in 'assert_false'
415
+ /Users/user/.gem/ruby/3.2.2/gems/sorbet-runtime-0.5.11068/lib/types/private/methods/call_validation.rb:256:in 'bind_call'
416
+ /Users/user/.gem/ruby/3.2.2/gems/sorbet-runtime-0.5.11068/lib/types/private/methods/call_validation.rb:256:in 'validate_call'
417
+ /Users/user/.gem/ruby/3.2.2/gems/sorbet-runtime-0.5.11068/lib/types/private/methods/_methods.rb:275:in 'block in _on_method_added'
418
+ example_test.rb:25:in 'test_something'
419
+ /Users/user/.gem/ruby/3.2.2/gems/minitest-5.20.0/lib/minitest/test.rb:94:in 'block (3 levels) in run'
420
+ /Users/user/.gem/ruby/3.2.2/gems/minitest-5.20.0/lib/minitest/test.rb:191:in 'capture_exceptions'
421
+ /Users/user/.gem/ruby/3.2.2/gems/minitest-5.20.0/lib/minitest/test.rb:89:in 'block (2 levels) in run'
422
+ ... so many lines ...
423
+ EOBT
424
+
425
+ filter = Minitest::BacktraceFilter.new %r%lib/minitest|gems/sorbet%
426
+
427
+ with_backtrace_filter filter do
428
+ begin
429
+ assert_equal 1, 2
430
+ rescue Minitest::Assertion => e
431
+ e.set_backtrace backtrace.lines.map(&:chomp)
432
+
433
+ assert_match "example_test.rb:25", e.location
434
+ end
435
+ end
436
+ end
437
+ end