minitest 5.12.0 → 5.22.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,6 +28,9 @@ class TestMinitestAssertions < Minitest::Test
28
28
 
29
29
  RUBY18 = !defined? Encoding
30
30
 
31
+ # not included in JRuby
32
+ RE_LEVELS = /\(\d+ levels\) /
33
+
31
34
  class DummyTest
32
35
  include Minitest::Assertions
33
36
  # include Minitest::Reportable # TODO: why do I really need this?
@@ -77,6 +80,14 @@ class TestMinitestAssertions < Minitest::Test
77
80
  self.send assert_msg, expected, msg
78
81
  end
79
82
 
83
+ def assert_unexpected expected
84
+ expected = Regexp.new expected if String === expected
85
+
86
+ assert_triggered expected, Minitest::UnexpectedError do
87
+ yield
88
+ end
89
+ end
90
+
80
91
  def clean s
81
92
  s.gsub(/^ {6,10}/, "")
82
93
  end
@@ -343,7 +354,7 @@ class TestMinitestAssertions < Minitest::Test
343
354
  @@ -1,3 +1,3 @@
344
355
  -# encoding: UTF-8
345
356
  -# valid: false
346
- +# encoding: ASCII-8BIT
357
+ +# encoding: #{Encoding::BINARY.name}
347
358
  +# valid: true
348
359
  "bad-utf8-\\xF1.txt"
349
360
  EOM
@@ -362,7 +373,7 @@ class TestMinitestAssertions < Minitest::Test
362
373
  @@ -1,3 +1,3 @@
363
374
  -# encoding: US-ASCII
364
375
  -# valid: false
365
- +# encoding: ASCII-8BIT
376
+ +# encoding: #{Encoding::BINARY.name}
366
377
  +# valid: true
367
378
  "bad-utf8-\\xF1.txt"
368
379
  EOM
@@ -397,7 +408,7 @@ class TestMinitestAssertions < Minitest::Test
397
408
  end
398
409
 
399
410
  def test_assert_in_delta_triggered
400
- x = maglev? ? "9.999999xxxe-07" : "1.0e-06"
411
+ x = "1.0e-06"
401
412
  assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= #{x}." do
402
413
  @tc.assert_in_delta 0.0, 1.0 / 1000, 0.000001
403
414
  end
@@ -428,7 +439,7 @@ class TestMinitestAssertions < Minitest::Test
428
439
 
429
440
  def test_assert_in_epsilon_triggered_negative_case
430
441
  x = (RUBY18 and not maglev?) ? "0.1" : "0.100000xxx"
431
- y = maglev? ? "0.100000xxx" : "0.1"
442
+ y = "0.1"
432
443
  assert_triggered "Expected |-1.1 - -1| (#{x}) to be <= #{y}." do
433
444
  @tc.assert_in_epsilon(-1.1, -1, 0.1)
434
445
  end
@@ -473,7 +484,10 @@ class TestMinitestAssertions < Minitest::Test
473
484
 
474
485
  def test_assert_match
475
486
  @assertion_count = 2
476
- @tc.assert_match(/\w+/, "blah blah blah")
487
+ m = @tc.assert_match(/\w+/, "blah blah blah")
488
+
489
+ assert_kind_of MatchData, m
490
+ assert_equal "blah", m[0]
477
491
  end
478
492
 
479
493
  def test_assert_match_matchee_to_str
@@ -603,12 +617,117 @@ class TestMinitestAssertions < Minitest::Test
603
617
  end
604
618
  end
605
619
 
606
- def test_assert_output_without_block
620
+ def test_assert_output_no_block
607
621
  assert_triggered "assert_output requires a block to capture output." do
608
622
  @tc.assert_output "blah"
609
623
  end
610
624
  end
611
625
 
626
+ def test_assert_output_nested_assert_uncaught
627
+ @assertion_count = 1
628
+
629
+ assert_triggered "Epic Fail!" do
630
+ @tc.assert_output "blah\n" do
631
+ puts "blah"
632
+ @tc.flunk
633
+ end
634
+ end
635
+ end
636
+
637
+ def test_assert_output_nested_raise
638
+ @assertion_count = 2
639
+
640
+ @tc.assert_output "blah\n" do
641
+ @tc.assert_raises RuntimeError do
642
+ puts "blah"
643
+ raise "boom!"
644
+ end
645
+ end
646
+ end
647
+
648
+ def test_assert_output_nested_raise_bad
649
+ @assertion_count = 0
650
+
651
+ assert_unexpected "boom!" do
652
+ @tc.assert_raises do # 2) bypassed via UnexpectedError
653
+ @tc.assert_output "blah\n" do # 1) captures and raises UnexpectedError
654
+ puts "not_blah"
655
+ raise "boom!"
656
+ end
657
+ end
658
+ end
659
+ end
660
+
661
+ def test_assert_output_nested_raise_mismatch
662
+ # this test is redundant, but illustrative
663
+ @assertion_count = 0
664
+
665
+ assert_unexpected "boom!" do
666
+ @tc.assert_raises RuntimeError do # 2) bypassed via UnexpectedError
667
+ @tc.assert_output "blah\n" do # 1) captures and raises UnexpectedError
668
+ puts "not_blah"
669
+ raise ArgumentError, "boom!"
670
+ end
671
+ end
672
+ end
673
+ end
674
+
675
+ def test_assert_output_nested_throw_caught
676
+ @assertion_count = 2
677
+
678
+ @tc.assert_output "blah\n" do
679
+ @tc.assert_throws :boom! do
680
+ puts "blah"
681
+ throw :boom!
682
+ end
683
+ end
684
+ end
685
+
686
+ def test_assert_output_nested_throw_caught_bad
687
+ @assertion_count = 1 # want 0; can't prevent throw from escaping :(
688
+
689
+ @tc.assert_throws :boom! do # 2) captured via catch
690
+ @tc.assert_output "blah\n" do # 1) bypassed via throw
691
+ puts "not_blah"
692
+ throw :boom!
693
+ end
694
+ end
695
+ end
696
+
697
+ def test_assert_output_nested_throw_mismatch
698
+ @assertion_count = 0
699
+
700
+ assert_unexpected "uncaught throw :boom!" do
701
+ @tc.assert_throws :not_boom! do # 2) captured via assert_throws+rescue
702
+ @tc.assert_output "blah\n" do # 1) bypassed via throw
703
+ puts "not_blah"
704
+ throw :boom!
705
+ end
706
+ end
707
+ end
708
+ end
709
+
710
+ def test_assert_output_uncaught_raise
711
+ @assertion_count = 0
712
+
713
+ assert_unexpected "RuntimeError: boom!" do
714
+ @tc.assert_output "blah\n" do
715
+ puts "not_blah"
716
+ raise "boom!"
717
+ end
718
+ end
719
+ end
720
+
721
+ def test_assert_output_uncaught_throw
722
+ @assertion_count = 0
723
+
724
+ assert_unexpected "uncaught throw :boom!" do
725
+ @tc.assert_output "blah\n" do
726
+ puts "not_blah"
727
+ throw :boom!
728
+ end
729
+ end
730
+ end
612
731
  def test_assert_predicate
613
732
  @tc.assert_predicate "", :empty?
614
733
  end
@@ -643,12 +762,12 @@ class TestMinitestAssertions < Minitest::Test
643
762
  Class: <SomeError>
644
763
  Message: <\"blah\">
645
764
  ---Backtrace---
646
- FILE:LINE:in \`test_assert_raises_default_triggered\'
765
+ FILE:LINE:in \`block in test_assert_raises_default_triggered\'
647
766
  ---------------
648
767
  EOM
649
768
 
650
769
  actual = e.message.gsub(/^.+:\d+/, "FILE:LINE")
651
- actual.gsub!(/block \(\d+ levels\) in /, "") if RUBY_VERSION >= "1.9.0"
770
+ actual.gsub!(RE_LEVELS, "") unless jruby?
652
771
 
653
772
  assert_equal expected, actual
654
773
  end
@@ -671,11 +790,24 @@ class TestMinitestAssertions < Minitest::Test
671
790
  end
672
791
  end
673
792
 
793
+ def test_assert_raises_throw_nested_bad
794
+ @assertion_count = 0
795
+
796
+ assert_unexpected "RuntimeError: boom!" do
797
+ @tc.assert_raises do
798
+ @tc.assert_throws :blah do
799
+ raise "boom!"
800
+ throw :not_blah
801
+ end
802
+ end
803
+ end
804
+ end
805
+
674
806
  ##
675
807
  # *sigh* This is quite an odd scenario, but it is from real (albeit
676
808
  # ugly) test code in ruby-core:
677
809
 
678
- # http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29259
810
+ # https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29259
679
811
 
680
812
  def test_assert_raises_skip
681
813
  @assertion_count = 0
@@ -709,12 +841,12 @@ class TestMinitestAssertions < Minitest::Test
709
841
  Class: <AnError>
710
842
  Message: <\"some message\">
711
843
  ---Backtrace---
712
- FILE:LINE:in \`test_assert_raises_subclass_triggered\'
844
+ FILE:LINE:in \`block in test_assert_raises_subclass_triggered\'
713
845
  ---------------
714
846
  EOM
715
847
 
716
848
  actual = e.message.gsub(/^.+:\d+/, "FILE:LINE")
717
- actual.gsub!(/block \(\d+ levels\) in /, "") if RUBY_VERSION >= "1.9.0"
849
+ actual.gsub!(RE_LEVELS, "") unless jruby?
718
850
 
719
851
  assert_equal expected.chomp, actual
720
852
  end
@@ -731,12 +863,12 @@ class TestMinitestAssertions < Minitest::Test
731
863
  Class: <SyntaxError>
732
864
  Message: <\"icky\">
733
865
  ---Backtrace---
734
- FILE:LINE:in \`test_assert_raises_triggered_different\'
866
+ FILE:LINE:in \`block in test_assert_raises_triggered_different\'
735
867
  ---------------
736
868
  EOM
737
869
 
738
870
  actual = e.message.gsub(/^.+:\d+/, "FILE:LINE")
739
- actual.gsub!(/block \(\d+ levels\) in /, "") if RUBY_VERSION >= "1.9.0"
871
+ actual.gsub!(RE_LEVELS, "") unless jruby?
740
872
 
741
873
  assert_equal expected, actual
742
874
  end
@@ -754,12 +886,12 @@ class TestMinitestAssertions < Minitest::Test
754
886
  Class: <SyntaxError>
755
887
  Message: <\"icky\">
756
888
  ---Backtrace---
757
- FILE:LINE:in \`test_assert_raises_triggered_different_msg\'
889
+ FILE:LINE:in \`block in test_assert_raises_triggered_different_msg\'
758
890
  ---------------
759
891
  EOM
760
892
 
761
893
  actual = e.message.gsub(/^.+:\d+/, "FILE:LINE")
762
- actual.gsub!(/block \(\d+ levels\) in /, "") if RUBY_VERSION >= "1.9.0"
894
+ actual.gsub!(RE_LEVELS, "") unless jruby?
763
895
 
764
896
  assert_equal expected.chomp, actual
765
897
  end
@@ -804,6 +936,16 @@ class TestMinitestAssertions < Minitest::Test
804
936
  end
805
937
  end
806
938
 
939
+ def test_assert_respond_to__include_all
940
+ @tc.assert_respond_to @tc, :exit, include_all: true
941
+ end
942
+
943
+ def test_assert_respond_to__include_all_triggered
944
+ assert_triggered(/Expected .+::DummyTest. to respond to #exit\?/) do
945
+ @tc.assert_respond_to @tc, :exit?, include_all: true
946
+ end
947
+ end
948
+
807
949
  def test_assert_same
808
950
  @assertion_count = 3
809
951
 
@@ -869,13 +1011,25 @@ class TestMinitestAssertions < Minitest::Test
869
1011
  end
870
1012
 
871
1013
  def test_assert_throws
872
- @tc.assert_throws :blah do
1014
+ v = @tc.assert_throws :blah do
873
1015
  throw :blah
874
1016
  end
1017
+
1018
+ assert_nil v
1019
+ end
1020
+
1021
+ def test_assert_throws_value
1022
+ v = @tc.assert_throws :blah do
1023
+ throw :blah, 42
1024
+ end
1025
+
1026
+ assert_equal 42, v
875
1027
  end
876
1028
 
877
1029
  def test_assert_throws_argument_exception
878
- @tc.assert_raises ArgumentError do
1030
+ @assertion_count = 0
1031
+
1032
+ assert_unexpected "ArgumentError" do
879
1033
  @tc.assert_throws :blah do
880
1034
  raise ArgumentError
881
1035
  end
@@ -891,7 +1045,9 @@ class TestMinitestAssertions < Minitest::Test
891
1045
  end
892
1046
 
893
1047
  def test_assert_throws_name_error
894
- @tc.assert_raises NameError do
1048
+ @assertion_count = 0
1049
+
1050
+ assert_unexpected "NameError" do
895
1051
  @tc.assert_throws :blah do
896
1052
  raise NameError
897
1053
  end
@@ -906,6 +1062,76 @@ class TestMinitestAssertions < Minitest::Test
906
1062
  end
907
1063
  end
908
1064
 
1065
+ def test_assert_path_exists
1066
+ @tc.assert_path_exists __FILE__
1067
+ end
1068
+
1069
+ def test_assert_path_exists_triggered
1070
+ assert_triggered "Expected path 'blah' to exist." do
1071
+ @tc.assert_path_exists "blah"
1072
+ end
1073
+ end
1074
+
1075
+ def test_assert_pattern
1076
+ if RUBY_VERSION > "3" then
1077
+ @tc.assert_pattern do
1078
+ exp = if RUBY_VERSION.start_with? "3.0"
1079
+ "(eval):1: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!\n"
1080
+ else
1081
+ ""
1082
+ end
1083
+ assert_output nil, exp do
1084
+ eval "[1,2,3] => [Integer, Integer, Integer]" # eval to escape parser for ruby<3
1085
+ end
1086
+ end
1087
+ else
1088
+ @assertion_count = 0
1089
+
1090
+ assert_raises NotImplementedError do
1091
+ @tc.assert_pattern do
1092
+ # do nothing
1093
+ end
1094
+ end
1095
+ end
1096
+ end
1097
+
1098
+ def test_assert_pattern_traps_nomatchingpatternerror
1099
+ skip unless RUBY_VERSION > "3"
1100
+ exp = if RUBY_VERSION.start_with? "3.0" then
1101
+ "[1, 2, 3]" # terrible error message!
1102
+ else
1103
+ /length mismatch/
1104
+ end
1105
+
1106
+ assert_triggered exp do
1107
+ @tc.assert_pattern do
1108
+ capture_io do # 3.0 is noisy
1109
+ eval "[1,2,3] => [Integer, Integer]" # eval to escape parser for ruby<3
1110
+ end
1111
+ end
1112
+ end
1113
+ end
1114
+
1115
+ def test_assert_pattern_raises_other_exceptions
1116
+ skip unless RUBY_VERSION >= "3.0"
1117
+
1118
+ @assertion_count = 0
1119
+
1120
+ assert_raises RuntimeError do
1121
+ @tc.assert_pattern do
1122
+ raise "boom"
1123
+ end
1124
+ end
1125
+ end
1126
+
1127
+ def test_assert_pattern_with_no_block
1128
+ skip unless RUBY_VERSION >= "3.0"
1129
+
1130
+ assert_triggered "assert_pattern requires a block to capture errors." do
1131
+ @tc.assert_pattern
1132
+ end
1133
+ end
1134
+
909
1135
  def test_capture_io
910
1136
  @assertion_count = 0
911
1137
 
@@ -937,18 +1163,14 @@ class TestMinitestAssertions < Minitest::Test
937
1163
  def test_class_asserts_match_refutes
938
1164
  @assertion_count = 0
939
1165
 
940
- methods = Minitest::Assertions.public_instance_methods
941
- methods.map!(&:to_s) if Symbol === methods.first
1166
+ methods = Minitest::Assertions.public_instance_methods.map(&:to_s)
942
1167
 
943
1168
  # These don't have corresponding refutes _on purpose_. They're
944
1169
  # useless and will never be added, so don't bother.
945
1170
  ignores = %w[assert_output assert_raises assert_send
946
1171
  assert_silent assert_throws assert_mock]
947
1172
 
948
- # These are test/unit methods. I'm not actually sure why they're still here
949
- ignores += %w[assert_no_match assert_not_equal assert_not_nil
950
- assert_not_same assert_nothing_raised
951
- assert_nothing_thrown assert_raise]
1173
+ ignores += %w[assert_allocations] # for minitest-gcstats
952
1174
 
953
1175
  asserts = methods.grep(/^assert/).sort - ignores
954
1176
  refutes = methods.grep(/^refute/).sort - ignores
@@ -978,6 +1200,23 @@ class TestMinitestAssertions < Minitest::Test
978
1200
  end
979
1201
  end
980
1202
 
1203
+ def assert_fail_after t
1204
+ @tc.fail_after t.year, t.month, t.day, "remove the deprecations"
1205
+ end
1206
+
1207
+ def test_fail_after
1208
+ d0 = Time.now
1209
+ d1 = d0 + 86_400 # I am an idiot
1210
+
1211
+ assert_silent do
1212
+ assert_fail_after d1
1213
+ end
1214
+
1215
+ assert_triggered "remove the deprecations" do
1216
+ assert_fail_after d0
1217
+ end
1218
+ end
1219
+
981
1220
  def test_flunk
982
1221
  assert_triggered "Epic Fail!" do
983
1222
  @tc.flunk
@@ -997,7 +1236,7 @@ class TestMinitestAssertions < Minitest::Test
997
1236
  def test_refute
998
1237
  @assertion_count = 2
999
1238
 
1000
- @tc.assert_equal false, @tc.refute(false), "returns false on success"
1239
+ @tc.assert_equal true, @tc.refute(false), "returns true on success"
1001
1240
  end
1002
1241
 
1003
1242
  def test_refute_empty
@@ -1029,7 +1268,7 @@ class TestMinitestAssertions < Minitest::Test
1029
1268
  end
1030
1269
 
1031
1270
  def test_refute_in_delta_triggered
1032
- x = maglev? ? "0.100000xxx" : "0.1"
1271
+ x = "0.1"
1033
1272
  assert_triggered "Expected |0.0 - 0.001| (0.001) to not be <= #{x}." do
1034
1273
  @tc.refute_in_delta 0.0, 1.0 / 1000, 0.1
1035
1274
  end
@@ -1141,6 +1380,56 @@ class TestMinitestAssertions < Minitest::Test
1141
1380
  end
1142
1381
  end
1143
1382
 
1383
+ def test_refute_pattern
1384
+ if RUBY_VERSION >= "3.0"
1385
+ @tc.refute_pattern do
1386
+ capture_io do # 3.0 is noisy
1387
+ eval "[1,2,3] => [Integer, Integer, String]"
1388
+ end
1389
+ end
1390
+ else
1391
+ @assertion_count = 0
1392
+
1393
+ assert_raises NotImplementedError do
1394
+ @tc.refute_pattern do
1395
+ eval "[1,2,3] => [Integer, Integer, String]"
1396
+ end
1397
+ end
1398
+ end
1399
+ end
1400
+
1401
+ def test_refute_pattern_expects_nomatchingpatternerror
1402
+ skip unless RUBY_VERSION > "3"
1403
+
1404
+ assert_triggered(/NoMatchingPatternError expected, but nothing was raised./) do
1405
+ @tc.refute_pattern do
1406
+ capture_io do # 3.0 is noisy
1407
+ eval "[1,2,3] => [Integer, Integer, Integer]"
1408
+ end
1409
+ end
1410
+ end
1411
+ end
1412
+
1413
+ def test_refute_pattern_raises_other_exceptions
1414
+ skip unless RUBY_VERSION >= "3.0"
1415
+
1416
+ @assertion_count = 0
1417
+
1418
+ assert_raises RuntimeError do
1419
+ @tc.refute_pattern do
1420
+ raise "boom"
1421
+ end
1422
+ end
1423
+ end
1424
+
1425
+ def test_refute_pattern_with_no_block
1426
+ skip unless RUBY_VERSION >= "3.0"
1427
+
1428
+ assert_triggered "refute_pattern requires a block to capture errors." do
1429
+ @tc.refute_pattern
1430
+ end
1431
+ end
1432
+
1144
1433
  def test_refute_predicate
1145
1434
  @tc.refute_predicate "42", :empty?
1146
1435
  end
@@ -1161,6 +1450,16 @@ class TestMinitestAssertions < Minitest::Test
1161
1450
  end
1162
1451
  end
1163
1452
 
1453
+ def test_refute_respond_to__include_all
1454
+ @tc.refute_respond_to "blah", :missing, include_all: true
1455
+ end
1456
+
1457
+ def test_refute_respond_to__include_all_triggered
1458
+ assert_triggered(/Expected .*DummyTest.* to not respond to exit./) do
1459
+ @tc.refute_respond_to @tc, :exit, include_all: true
1460
+ end
1461
+ end
1462
+
1164
1463
  def test_refute_same
1165
1464
  @tc.refute_same 1, 2
1166
1465
  end
@@ -1171,6 +1470,16 @@ class TestMinitestAssertions < Minitest::Test
1171
1470
  end
1172
1471
  end
1173
1472
 
1473
+ def test_refute_path_exists
1474
+ @tc.refute_path_exists "blah"
1475
+ end
1476
+
1477
+ def test_refute_path_exists_triggered
1478
+ assert_triggered "Expected path '#{__FILE__}' to not exist." do
1479
+ @tc.refute_path_exists __FILE__
1480
+ end
1481
+ end
1482
+
1174
1483
  def test_skip
1175
1484
  @assertion_count = 0
1176
1485
 
@@ -1179,6 +1488,25 @@ class TestMinitestAssertions < Minitest::Test
1179
1488
  end
1180
1489
  end
1181
1490
 
1491
+ def assert_skip_until t, msg
1492
+ @tc.skip_until t.year, t.month, t.day, msg
1493
+ end
1494
+
1495
+ def test_skip_until
1496
+ @assertion_count = 0
1497
+
1498
+ d0 = Time.now
1499
+ d1 = d0 + 86_400 # I am an idiot
1500
+
1501
+ assert_output "", /Stale skip_until \"not yet\" at .*?:\d+$/ do
1502
+ assert_skip_until d0, "not yet"
1503
+ end
1504
+
1505
+ assert_triggered "not ready yet", Minitest::Skip do
1506
+ assert_skip_until d1, "not ready yet"
1507
+ end
1508
+ end
1509
+
1182
1510
  def util_msg exp, act, msg = nil
1183
1511
  s = "Expected: #{exp.inspect}\n Actual: #{act.inspect}"
1184
1512
  s = "#{msg}.\n#{s}" if msg
@@ -1329,14 +1657,14 @@ class TestMinitestAssertionHelpers < Minitest::Test
1329
1657
 
1330
1658
  def test_mu_pp_for_diff_str_encoding
1331
1659
  str = "A\nB".b
1332
- exp = "# encoding: ASCII-8BIT\n# valid: true\n\"A\nB\""
1660
+ exp = "# encoding: #{Encoding::BINARY.name}\n# valid: true\n\"A\nB\""
1333
1661
 
1334
1662
  assert_mu_pp_for_diff exp, str, :raw
1335
1663
  end
1336
1664
 
1337
1665
  def test_mu_pp_for_diff_str_encoding_both
1338
1666
  str = "A\\n\nB".b
1339
- exp = "# encoding: ASCII-8BIT\n# valid: true\n\"A\\\\n\\nB\""
1667
+ exp = "# encoding: #{Encoding::BINARY.name}\n# valid: true\n\"A\\\\n\\nB\""
1340
1668
 
1341
1669
  assert_mu_pp_for_diff exp, str, :raw
1342
1670
  end
@@ -1376,7 +1704,7 @@ class TestMinitestAssertionHelpers < Minitest::Test
1376
1704
 
1377
1705
  def test_mu_pp_str_encoding
1378
1706
  str = "A\nB".b
1379
- exp = "# encoding: ASCII-8BIT\n# valid: true\n\"A\\nB\""
1707
+ exp = "# encoding: #{Encoding::BINARY.name}\n# valid: true\n\"A\\nB\""
1380
1708
 
1381
1709
  assert_mu_pp exp, str, :raw
1382
1710
  end
@@ -3,7 +3,7 @@ require "minitest/benchmark"
3
3
 
4
4
  ##
5
5
  # Used to verify data:
6
- # http://www.wolframalpha.com/examples/RegressionAnalysis.html
6
+ # https://www.wolframalpha.com/examples/RegressionAnalysis.html
7
7
 
8
8
  class TestMinitestBenchmark < Minitest::Test
9
9
  def test_cls_bench_exp
@@ -110,7 +110,7 @@ class TestMinitestBenchmark < Minitest::Test
110
110
  assert_fit :power, x, y, 0.90, 2.6217, 1.4556
111
111
 
112
112
  # income to % of households below income amount
113
- # http://library.wolfram.com/infocenter/Conferences/6461/PowerLaws.nb
113
+ # https://library.wolfram.com/infocenter/Conferences/6461/PowerLaws.nb
114
114
  x = [15_000, 25_000, 35_000, 50_000, 75_000, 100_000]
115
115
  y = [0.154, 0.283, 0.402, 0.55, 0.733, 0.843]
116
116