summaryrefslogtreecommitdiff
path: root/tool/lib/test/unit.rb
AgeCommit message (Collapse)Author
2021-12-24merge revision(s) ↵nagachika
5086c25f6015558877f85c3f1c014780b08fd3ce,3ff0a0b40c2e1fbdad2286f1dafe837f822d0e0d: [Backport #16936] 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]. --- tool/lib/test/unit.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) Filter method names only if filtering method name only If sole `filter` option doesn't seem including test case name, match with method name only. And if the filter is a Regexp or String, it never matches method name symbols. --- tool/lib/test/unit.rb | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-)
2020-12-13Debug the command used for gdb dumpTakashi Kokubun
It's not working http://ci.rvm.jp/results/trunk-mjit@phosphorus-docker/3288206. I'm debugging why.
2020-12-12Dump a backtrace with gdbTakashi Kokubun
Because Ruby often fails to dump a C backtrace.
2020-12-03Avoid leaving too many core files in /tmpTakashi Kokubun
for CIs like ci.rvm.jp.
2020-12-03Do not require time and fileutils by defaultTakashi Kokubun
I have no idea what I'm doing, but the previous commit caused lots of CI failures like https://github.com/ruby/ruby/runs/1496949568 and this place is the most suspicious.
2020-12-03Save a core file on a worker crashTakashi Kokubun
CI failures like http://ci.rvm.jp/results/trunk-mjit@phosphorus-docker/3280458 doesn't provide any useful information, and it doesn't leave a core file in a CI environment because a test like `Process.kill(:TRAP, $$)` overwrites in a next run very quickly. Thus I'd like to keep core files in /tmp.
2020-12-03Revert "Report a full_message on a worker crash"Takashi Kokubun
This reverts commit 00f046ef57f9da7f5248f9ef9d55702ddc407bf1. It was not helpful for an issue I was debugging.
2020-12-01tune parallel testKoichi Sasada
This patch contains the fowllowing hacks: (1) Add "--timetable-data=FILE" option for test-all This option enables to dump timeline event contains worker, suite, and start/end time. (2) remove TestJIT in test_jit_debug.rb on parallel test. it is duplicated test. (3) move test_jit.rb and test_jit_debug.rb at first because these two tests are bottleneck of parallel tests. On my environment, `make test-all TESTS=-j12` reduced the total time 190 seconds -> 140 seconds. Notes: Merged: https://github.com/ruby/ruby/pull/3826
2020-11-24Report a full_message on a worker crashTakashi Kokubun
A worker crash happens very often, but we're not sure why. I'd like to know a backtrace if it's available.
2020-10-27freeze dynamic regexp literalsKoichi Sasada
Regexp literals are frozen, and also dynamically comppiled Regexp literals (/#{expr}/) are frozen. Notes: Merged: https://github.com/ruby/ruby/pull/3676
2020-05-17Added --test-order=nosort optionNobuyoshi Nakada
Run tests in the order given in the command line.
2020-04-23Expand retrying test file names to realpathNobuyoshi Nakada
As well as worker processes do in Test::Unit::Worker#run.
2020-03-04tool/lib/test/unit: support TESTS='-- -ext-' again卜部昌平
There is a test directory named test/-ext-. Because this directry starts with a hyphen, we have to cheat test/unit in order for it to run the tests underneath. TESTS='-- -ext' worked for a long time. Let's not break that maneuver.
2020-02-28respect --test-order=randomKoichi Sasada
Now --test-order=random is simply ignored. This patch respect this option. Notes: Merged: https://github.com/ruby/ruby/pull/2932
2020-02-27don't ignore `--seed` optionKoichi Sasada
`--seed N` option is just ignored so respect this option. [Feature #16655] Also making "Run options" display pretty.
2019-12-12implement make test-all TESTS=--gc-compact卜部昌平
79eb5e1acac2339c6ec71db723298bdfcd92b233 implemented RUBY_TEST_GC_COMPACT=1 so why not make it also possible via the command line argument.
2019-10-03use bind_call for test-all --gc-stress卜部昌平
This one allocation of Method object is worth avoiding. We don't want to test UnboundMethod#bind right here. GC need not run.
2019-08-11Use `end_with?` instead of Regexp with missing escapeKazuhiro NISHIYAMA
2019-08-09complement `test_` prefix.Koichi Sasada
`make test-all TESTS=name` can specify running test files by name. name can be dirname ('dir/') or a file ('.../test_foo.rb'). This patch complement `test_` prefix for a test. So we only need to specify `TESTS=ruby/hash` which means `TESTS=ruby/test_hash.rb`.
2019-07-25Use libraries in the base directory if givenNobuyoshi Nakada
2019-07-25Added --base-directory optionNobuyoshi Nakada
2019-07-25Moved NoMemoryError hookNobuyoshi Nakada
Moved NoMemoryError hook from AutoRunner.run to Runner#run, so it will work even in non-autorunning mode.
2019-07-25Moved NoMemoryError hook to Test::Unit::AutoRunnerNobuyoshi Nakada
2019-07-21tool/test/runner.rb: support --test-target-dir optionYusuke Endoh
tool/test/runner.rb had been copied from test/runner.rb. test/runner.rb was for `make test-all`, and tool/test/runner.rb was for `make test-testframework` and `make test-tool`. But I want to avoid the code clones. This change makes tool/test/runner.rb support --test-target-dir option which allows tool/test/runner.rb to run `make test-all`. Now we can remove test/runner.rb.
2019-07-15Put colorize to library directory.Hiroshi SHIBATA
Same as 66299e7ca83d379d13abaa5411f3e0419334cabb
2019-07-14complement '.rb' on `test-all TESTS=test_xxx`Koichi Sasada
for test-all rule, we can specify a file with TESTS option like `TESTS=test_xxx.rb`. However, we can eliminate last '.rb' suffix so this patch try with '.rb' suffix if the given path is not available.
2019-07-02Move to tool/lib from test/lib.Hiroshi SHIBATA