mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Properly exclude test cases.
Lets consider the following scenario:
~~~
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):001:0> p suite
OpenSSL::TestEC
=> OpenSSL::TestEC
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):002:0> p all_test_methods
["test_ECPrivateKey", "test_ECPrivateKey_encrypted", "test_PUBKEY", "test_check_key", "test_derive_key", "test_dh_compute_key", "test_dsa_sign_asn1_FIPS186_3", "test_ec_group", "test_ec_key", "test_ec_point", "test_ec_point_add", "test_ec_point_mul", "test_generate", "test_marshal", "test_sign_verify", "test_sign_verify_raw"]
=>
["test_ECPrivateKey",
"test_ECPrivateKey_encrypted",
"test_PUBKEY",
"test_check_key",
"test_derive_key",
"test_dh_compute_key",
"test_dsa_sign_asn1_FIPS186_3",
"test_ec_group",
"test_ec_key",
"test_ec_point",
"test_ec_point_add",
"test_ec_point_mul",
"test_generate",
"test_marshal",
"test_sign_verify",
"test_sign_verify_raw"]
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):003:0> p filter
/\A(?=.*)(?!.*(?-mix:(?-mix:memory_leak)|(?-mix:OpenSSL::TestEC.test_check_key)))/
=> /\A(?=.*)(?!.*(?-mix:(?-mix:memory_leak)|(?-mix:OpenSSL::TestEC.test_check_key)))/
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):004:0> method = "test_check_key"
=> "test_check_key"
~~~
The intention here is to exclude the `test_check_key` test case.
Unfortunately this does not work as expected, because the negative filter
is never checked:
~~~
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):005:0> filter === method
=> true
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):006:0> filter === "#{suite}##{method}"
=> false
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):007:0> filter === method || filter === "#{suite}##{method}"
=> true
~~~
Therefore always filter against the fully qualified method name
`#{suite}##{method}`, which should provide the expected result.
However, if plain string filter is used, keep checking also only the
method name.
This resolves [Bug #16936].
This commit is contained in:
parent
9fc2f5375d
commit
5086c25f60
Notes:
git
2021-10-27 19:56:45 +09:00
1 changed files with 9 additions and 3 deletions
|
|
@ -1497,9 +1497,15 @@ module Test
|
|||
|
||||
all_test_methods = suite.send "#{type}_methods"
|
||||
if filter
|
||||
all_test_methods.select! {|method|
|
||||
filter === method || filter === "#{suite}##{method}"
|
||||
}
|
||||
if Regexp === filter
|
||||
all_test_methods.select! {|method|
|
||||
filter === "#{suite}##{method}"
|
||||
}
|
||||
else
|
||||
all_test_methods.select! {|method|
|
||||
filter === method || filter === "#{suite}##{method}"
|
||||
}
|
||||
end
|
||||
end
|
||||
all_test_methods = @order.sort_by_name(all_test_methods)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue