-
Notifications
You must be signed in to change notification settings - Fork 5.4k
ZJIT: Start testing against /test/ruby/
and update all ZJIT related testing targets/docs
#13791
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
I'm reluctant to make the name
Running a single test file in
I admit that
It's confusing to insert "ruby" in between "test-all". I don't come up with a good name for this other than If you need a place to maintain a set of skipped test cases for ZJIT, you might want to try "excludes" directory. Look at |
@k0kubun Thanks for the suggestions! I didn't know about |
3bad873
to
cf88fc9
Compare
This comment has been minimized.
This comment has been minimized.
794fc5f
to
d790fc7
Compare
@@ -38,9 +38,8 @@ jobs: | |||
- test_task: 'ruby' # build test for combo build | |||
configure: '--enable-yjit --enable-zjit' | |||
|
|||
- test_task: 'test-all' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if it's worth testing test_zjit
by itself on CI when we'll be running it in zjit-test-all
anyway. Also the test-all
name will be confusing along with zjit-test-all
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As long as it is running in CI somehow.
Although it may give more informative and early warnings than other test suites because it's more targeted
# exclude(:test_proc_args_pos_rest_block, 'Test crashes with ZJIT') | ||
# exclude(:test_proc_args_rest_post_block, 'Test crashes with ZJIT') | ||
|
||
# exclude(:test_binding_receiver, 'Test fails with ZJIT') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As explained in description, I need to exclude all test methods to avoid the ZJIT panic. But I also identified these tests that'd also fail/crash even without the panic.
d790fc7
to
953f709
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job 👍 Let's merge it once the CI passes.
- Rename `zjit-test-all` to `zjit-check` - Add `zjit-test-all` target to zjit.mk to run all Ruby tests with ZJIT enabled excluding known failing tests - Update documentation and CI workflow to reflect the new targets
953f709
to
80495ea
Compare
make zjit-check
has replaced the oldmake zjit-test-all
, which runs ZJIT unit tests (Rust) andmake test-all TESTS=test/ruby/test_zjit.rb
make zjit-test-all
now runs ZJIT with tests under/test/ruby/
with some test cases excluded undertest/.excludes-zjit/
due to known crash/panic/failureThere are 3 ways tests fail to execute with ZJIT:
We can avoid 1 and 2 by excluding those specific cases with
exclude(:test_method_name, "reason")
. But this doesn't avoid ZJIT panics."I think" this is because the exclusion is done through removing methods, so if ZJIT panics due to compiling certain iseqs, it'd panic before those methods even get removed?