summaryrefslogtreecommitdiff
path: root/tool/test
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-09-18 16:05:26 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-04 20:46:47 +0900
commitc4570acc86837fefa542a678dfdaba73cdd1fd03 (patch)
tree3727981f05a359b1fca4fb9df050b26f5c46ddf0 /tool/test
parent44b2e32fb670e5e704f5721cf973cdc77d54a315 (diff)
Refactor ordering of tests
* Split the sorting types into classes. * Apply the same sorting to method sorting under the parallel test.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4862
Diffstat (limited to 'tool/test')
-rw-r--r--tool/test/testunit/test_minitest_unit.rb25
-rw-r--r--tool/test/testunit/test_sorting.rb57
2 files changed, 61 insertions, 21 deletions
diff --git a/tool/test/testunit/test_minitest_unit.rb b/tool/test/testunit/test_minitest_unit.rb
index 68e88f574e..5941392fa0 100644
--- a/tool/test/testunit/test_minitest_unit.rb
+++ b/tool/test/testunit/test_minitest_unit.rb
@@ -238,7 +238,7 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
tc = Class.new(Test::Unit::TestCase)
assert_equal 2, Test::Unit::TestCase.test_suites.size
- assert_equal [tc, Test::Unit::TestCase], Test::Unit::TestCase.test_suites
+ assert_equal [tc, Test::Unit::TestCase], Test::Unit::TestCase.test_suites.sort_by {|ts| ts.name.to_s}
end
def assert_filtering name, expected, a = false
@@ -1331,34 +1331,17 @@ class TestMiniTestUnitTestCase < Test::Unit::TestCase
end
end
- def test_test_methods_random
+ def test_test_methods
@assertion_count = 0
sample_test_case = Class.new Test::Unit::TestCase do
- def self.test_order; :random; end
def test_test1; assert "does not matter" end
def test_test2; assert "does not matter" end
def test_test3; assert "does not matter" end
- @test_order = [1, 0, 2]
- def self.rand(n) @test_order.shift; end
end
- expected = %w(test_test2 test_test1 test_test3)
- assert_equal expected, sample_test_case.test_methods
- end
-
- def test_test_methods_sorted
- @assertion_count = 0
-
- sample_test_case = Class.new Test::Unit::TestCase do
- def self.test_order; :sorted end
- def test_test3; assert "does not matter" end
- def test_test2; assert "does not matter" end
- def test_test1; assert "does not matter" end
- end
-
- expected = %w(test_test1 test_test2 test_test3)
- assert_equal expected, sample_test_case.test_methods
+ expected = %i(test_test1 test_test2 test_test3)
+ assert_equal expected, sample_test_case.test_methods.sort
end
def assert_triggered expected, klass = Test::Unit::AssertionFailedError
diff --git a/tool/test/testunit/test_sorting.rb b/tool/test/testunit/test_sorting.rb
index f9de3ec154..7678249ec2 100644
--- a/tool/test/testunit/test_sorting.rb
+++ b/tool/test/testunit/test_sorting.rb
@@ -15,4 +15,61 @@ class TestTestUnitSorting < Test::Unit::TestCase
f.read
}
end
+
+ Item = Struct.new(:name)
+ SEED = 0x50975eed
+
+ def make_test_list
+ (1..16).map {"test_%.3x" % rand(0x1000)}.freeze
+ end
+
+ def test_sort_alpha
+ sorter = Test::Unit::Order::Types[:alpha].new(SEED)
+ assert_kind_of(Test::Unit::Order::Types[:sorted], sorter)
+
+ list = make_test_list
+ sorted = list.sort
+ 16.times do
+ assert_equal(sorted, sorter.sort_by_string(list))
+ end
+
+ list = list.map {|s| Item.new(s)}.freeze
+ sorted = list.sort_by(&:name)
+ 16.times do
+ assert_equal(sorted, sorter.sort_by_name(list))
+ end
+ end
+
+ def test_sort_nosort
+ sorter = Test::Unit::Order::Types[:nosort].new(SEED)
+
+ list = make_test_list
+ 16.times do
+ assert_equal(list, sorter.sort_by_string(list))
+ end
+
+ list = list.map {|s| Item.new(s)}.freeze
+ 16.times do
+ assert_equal(list, sorter.sort_by_name(list))
+ end
+ end
+
+ def test_sort_random
+ type = Test::Unit::Order::Types[:random]
+ sorter = type.new(SEED)
+
+ list = make_test_list
+ sorted = type.new(SEED).sort_by_string(list).freeze
+ 16.times do
+ assert_equal(sorted, sorter.sort_by_string(list))
+ end
+ assert_not_equal(sorted, type.new(SEED+1).sort_by_string(list))
+
+ list = list.map {|s| Item.new(s)}.freeze
+ sorted = sorted.map {|s| Item.new(s)}.freeze
+ 16.times do
+ assert_equal(sorted, sorter.sort_by_name(list))
+ end
+ assert_not_equal(sorted, type.new(SEED+1).sort_by_name(list))
+ end
end