From be35e0b4d8668352309da80d9cbc6cbb3d6e81f8 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sat, 12 Jul 2025 20:05:48 +0900 Subject: [PATCH 1/2] Test in exponential scale with rehearsal --- test/uri/test_mailto.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/uri/test_mailto.rb b/test/uri/test_mailto.rb index 66f3edd..e5bed5b 100644 --- a/test/uri/test_mailto.rb +++ b/test/uri/test_mailto.rb @@ -213,15 +213,16 @@ def test_check_to def test_email_regexp re = URI::MailTo::EMAIL_REGEXP - rate = 1000 longlabel = '.' + 'invalid'.ljust(63, 'd') endlabel = '' - pre = ->(n) {'a@invalid' + longlabel*(n*rate) + endlabel} - assert_linear_performance(1..10, pre: pre) do |to| + seq = (1..5).map {|i| 5**i} + rehearsal = 100 + pre = ->(n) {'a@invalid' + longlabel*(n) + endlabel} + assert_linear_performance(seq, rehearsal: rehearsal, pre: pre) do |to| re =~ to or flunk end endlabel = '.' + 'email'.rjust(64, 'd') - assert_linear_performance(1..10, pre: pre) do |to| + assert_linear_performance(seq, rehearsal: rehearsal, pre: pre) do |to| re =~ to and flunk end end From fa49e5b8ae6078cad1f276c4edb33e4f23929bf4 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 13 Jul 2025 13:18:15 +0900 Subject: [PATCH 2/2] Repeat matching to reduce deviations --- test/uri/test_mailto.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/uri/test_mailto.rb b/test/uri/test_mailto.rb index e5bed5b..59bb5de 100644 --- a/test/uri/test_mailto.rb +++ b/test/uri/test_mailto.rb @@ -213,17 +213,18 @@ def test_check_to def test_email_regexp re = URI::MailTo::EMAIL_REGEXP + repeat = 10 longlabel = '.' + 'invalid'.ljust(63, 'd') endlabel = '' - seq = (1..5).map {|i| 5**i} - rehearsal = 100 + seq = (1..3).map {|i| 10**i} + rehearsal = 10 pre = ->(n) {'a@invalid' + longlabel*(n) + endlabel} assert_linear_performance(seq, rehearsal: rehearsal, pre: pre) do |to| - re =~ to or flunk + repeat.times {re =~ to or flunk} end endlabel = '.' + 'email'.rjust(64, 'd') assert_linear_performance(seq, rehearsal: rehearsal, pre: pre) do |to| - re =~ to and flunk + repeat.times {re =~ to and flunk} end end