Fix method coverage comparisons

Although Ruby's hashes preserve the insertion order, the ordering of
method coverage results is inherently nondeterministic, because they
are collected using `ObjectSpace`.
This commit is contained in:
Nobuyoshi Nakada 2023-10-15 21:15:43 +09:00 committed by Yusuke Endoh
parent 833c930bd6
commit 7e51cadc2e

View File

@ -848,9 +848,10 @@ class TestCoverage < Test::Unit::TestCase
EOS EOS
end end
cov1 = "[0, 0, nil, nil, 0, 1, nil, nil, 0, 0, nil]" assert_separately(%w[-rcoverage], "#{<<~"begin;"}\n#{<<~'end;'}")
cov2 = "[0, 0, nil, nil, 0, 1, nil, nil, 0, 1, nil]" begin;
assert_in_out_err(%w[-rcoverage], <<-"end;", [cov1, cov2], []) cov1 = [0, 0, nil, nil, 0, 1, nil, nil, 0, 0, nil]
cov2 = [0, 0, nil, nil, 0, 1, nil, nil, 0, 1, nil]
Coverage.setup Coverage.setup
tmp = Dir.pwd tmp = Dir.pwd
require tmp + "/test.rb" require tmp + "/test.rb"
@ -859,15 +860,34 @@ class TestCoverage < Test::Unit::TestCase
bar bar
Coverage.suspend Coverage.suspend
baz baz
p Coverage.peek_result[tmp + "/test.rb"] assert_equal cov1, Coverage.peek_result[tmp + "/test.rb"]
Coverage.resume Coverage.resume
baz baz
p Coverage.result[tmp + "/test.rb"] assert_equal cov2, Coverage.result[tmp + "/test.rb"]
end; end;
cov1 = "{:lines=>[0, 0, nil, nil, 0, 1, nil, nil, 0, 0, nil], :branches=>{}, :methods=>{[Object, :baz, 9, 12, 11, 15]=>0, [Object, :bar, 5, 12, 7, 15]=>1, [Object, :foo, 1, 12, 3, 15]=>0}}" assert_separately(%w[-rcoverage], "#{<<~"begin;"}\n#{<<~'end;'}")
cov2 = "{:lines=>[0, 0, nil, nil, 0, 1, nil, nil, 0, 1, nil], :branches=>{}, :methods=>{[Object, :baz, 9, 12, 11, 15]=>1, [Object, :bar, 5, 12, 7, 15]=>1, [Object, :foo, 1, 12, 3, 15]=>0}}" begin;
assert_in_out_err(%w[-rcoverage], <<-"end;", [cov1, cov2], []) cov1 = {
lines: [0, 0, nil, nil, 0, 1, nil, nil, 0, 0, nil],
branches: {},
methods: {
[Object, :baz, 9, 12, 11, 15]=>0,
[Object, :bar, 5, 12, 7, 15]=>1,
[Object, :foo, 1, 12, 3, 15]=>0,
}
}
cov2 = {
lines: [0, 0, nil, nil, 0, 1, nil, nil, 0, 1, nil],
branches: {},
methods: {
[Object, :baz, 9, 12, 11, 15]=>1,
[Object, :bar, 5, 12, 7, 15]=>1,
[Object, :foo, 1, 12, 3, 15]=>0,
}
}
Coverage.setup(:all) Coverage.setup(:all)
tmp = Dir.pwd tmp = Dir.pwd
require tmp + "/test.rb" require tmp + "/test.rb"
@ -876,15 +896,16 @@ class TestCoverage < Test::Unit::TestCase
bar bar
Coverage.suspend Coverage.suspend
baz baz
p Coverage.peek_result[tmp + "/test.rb"] assert_equal cov1, Coverage.peek_result[tmp + "/test.rb"]
Coverage.resume Coverage.resume
baz baz
p Coverage.result[tmp + "/test.rb"] assert_equal cov2, Coverage.result[tmp + "/test.rb"]
end; end;
cov1 = "{:oneshot_lines=>[6]}" assert_separately(%w[-rcoverage], "#{<<~"begin;"}\n#{<<~'end;'}")
cov2 = "{:oneshot_lines=>[6, 10]}" begin;
assert_in_out_err(%w[-rcoverage], <<-"end;", [cov1, cov2], []) cov1 = {:oneshot_lines=>[6]}
cov2 = {:oneshot_lines=>[6, 10]}
Coverage.setup(oneshot_lines: true) Coverage.setup(oneshot_lines: true)
tmp = Dir.pwd tmp = Dir.pwd
require tmp + "/test.rb" require tmp + "/test.rb"
@ -893,10 +914,10 @@ class TestCoverage < Test::Unit::TestCase
bar bar
Coverage.suspend Coverage.suspend
baz baz
p Coverage.peek_result[tmp + "/test.rb"] assert_equal cov1, Coverage.peek_result[tmp + "/test.rb"]
Coverage.resume Coverage.resume
baz baz
p Coverage.result[tmp + "/test.rb"] assert_equal cov2, Coverage.result[tmp + "/test.rb"]
end; end;
} }
} }