path: root/spec/ruby
AgeCommit message (Collapse)Author
59 min.[DOC] State the precision of `Process.times` as platform-definedHEADmasterNobuyoshi Nakada
Remove the bad example that can lead to misunderstanding as if this precision is defined in Ruby.
74 min.Check by integer modulo instead of float stringNobuyoshi Nakada
3 daysFix failures when all network interfaces are downNobuyoshi Nakada
2023-09-12Adjust CGI spec to pass when ran in isolationAlan Wu
It failed with `NameError` because `Html3` is defined in the file that `CGI::HtmlExtension` autoloads.
2023-09-12Make Kernel#lambda raise when given non-literal blockAlan Wu
Previously, Kernel#lambda returned a non-lambda proc when given a non-literal block and issued a warning under the `:deprecated` category. With this change, Kernel#lambda will always return a lambda proc, if it returns without raising. Due to interactions with block passing optimizations, we previously had two separate code paths for detecting whether Kernel#lambda got a literal block. This change allows us to remove one path, the hack done with rb_control_frame_t::block_code introduced in 85a337f for supporting situations where Kernel#lambda returned a non-lambda proc. [Feature #19777] Co-authored-by: Takashi Kokubun <> Notes: Merged:
2023-09-04Update to ruby/spec@96d1072Benoit Daloze
2023-08-30BasicSocket#recv* return `nil` rather than an empty packetJean Boussier
[Bug #19012] man recvmsg(2) states: > Return Value > These calls return the number of bytes received, or -1 if an error occurred. > The return value will be 0 when the peer has performed an orderly shutdown. Not too sure how one is supposed to make the difference between a packet of size 0 and a closed connection. Notes: Merged:
2023-08-26[Bug #19784] Fix behaviors against prefix with broken encodingNobuyoshi Nakada
- String#start_with? - String#delete_prefix - String#delete_prefix! Notes: Merged:
2023-08-24Fix support for dynamic keys. (#8273)Samuel Williams
* Skip RBS test. Notes: Merged-By: ioquatix <>
2023-08-23Quarantine a very flaky specTakashi Kokubun This has been extremely flaky on macOS GitHub Actions. Benoit suggested to quarantine it if it's too problematic (it is) and there's no reasonable fix in a short time (it already took too long). So this commit follows the suggestion. We should remove revert this once rb_cloexec_open() is fixed.
2023-08-10Deprecate Kernel#open and IO support for subprocess creation/forkingMike Dalessio
Deprecate Kernel#open and IO support for subprocess creation and forking. This deprecates subprocess creation and forking in - Kernel#open - - IO.binread - IO.foreach - IO.readlines - - IO.write This behavior is slated to be removed in Ruby 4.0 [Feature #19630] Notes: Merged:
2023-08-02Update to ruby/spec@9e278f5Benoit Daloze
2023-08-02Fix encoding switches when RUBYOPT is empty or only spacesBenoit Daloze
* Follow-up of dbbc3583ba432c279f07b1fa0afb0a8a9ba50c91 which broke this.
2023-07-31`Refinement#refined_class` is now deprecatedNobuyoshi Nakada
2023-07-30Add examples of `return` in `eval`Nobuyoshi Nakada
Notes: Merged:
2023-07-26Make {Nil,True,False}Class#singleton_method always raise NameErrorJeremy Evans
{Nil,True,False}Class#singleton_methods always returns [] indicating that there are no singleton methods defined, so #singleton_method should be consistent with that. Fixes [Bug #11064] Notes: Merged:
2023-07-24Use the caller location as default filename for eval family of methodsJean Boussier
[Feature #19755] Before (in /tmp/test.rb): ```ruby Object.class_eval("p __FILE__") # => "(eval)" ``` After: ```ruby Object.class_eval("p __FILE__") # => "(eval at /tmp/test.rb:1)" ``` This makes it much easier to track down generated code in case the author forgot to provide a filename argument. Notes: Merged:
2023-07-19Add tests for `return` in `BEGIN` and `END` blocksNobuyoshi Nakada
2023-07-17Implement Process.warmupJean Boussier
[Feature #18885] For now, the optimizations performed are: - Run a major GC - Compact the heap - Promote all surviving objects to oldgen Other optimizations may follow. Notes: Merged:
2023-07-15[Bug #19769] Fix range of size 1 in `String#tr`alexandre184
Notes: Merged: Merged-By: nobu <>
2023-07-06Improve ArgumentError message for Module#set_temporary_nameBenoit Daloze
Notes: Merged:
2023-07-06Ensure the name given to Module#set_temporary_name is not a valid constant pathBenoit Daloze
Co-authored-by: Nobuyoshi Nakada <> Notes: Merged:
2023-07-06Specs for Module#set_temporary_name should be in their own fileBenoit Daloze
Notes: Merged:
2023-07-05Skip a failing spec for the latest bigdecimalTakashi Kokubun
2023-06-26Update to ruby/spec@30e1c35Benoit Daloze
2023-06-21Allow setting the name of a class or module. (#7483)Samuel Williams
Introduce `Module#set_temporary_name` for setting identifiers for otherwise anonymous modules/classes. Notes: Merged-By: ioquatix <>
2023-06-01rb_io_descriptor() is available since 3.1Benoit Daloze
2023-06-01Hide the usage of `rb_io_t` where possible. (#7880)Samuel Williams
This retries the compatible parts of the previously reverted PR so we can continue to update related code without breaking backwards compatibility. Notes: Merged-By: ioquatix <>
2023-06-01Revert "Hide most of the implementation of `struct rb_io`. (#6511)"NARUSE, Yui
This reverts commit 18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2. fix [Bug #19704] This breaks compatibility for extension libraries. Such changes need a discussion.
2023-05-30Hide most of the implementation of `struct rb_io`. (#6511)Samuel Williams
* Add rb_io_path and rb_io_open_descriptor. * Use rb_io_open_descriptor to create PTY objects * Rename FMODE_PREP -> FMODE_EXTERNAL and expose it FMODE_PREP I believe refers to the concept of a "pre-prepared" file, but FMODE_EXTERNAL is clearer about what the file descriptor represents and aligns with language in the IO::Buffer module. * Ensure that rb_io_open_descriptor closes the FD if it fails If FMODE_EXTERNAL is not set, then it's guaranteed that Ruby will be responsible for closing your file, eventually, if you pass it to rb_io_open_descriptor, even if it raises an exception. * Rename IS_EXTERNAL_FD -> RUBY_IO_EXTERNAL_P * Expose `rb_io_closed_p`. * Add `rb_io_mode` to get IO mode. --------- Co-authored-by: KJ Tsanaktsidis <> Notes: Merged-By: ioquatix <>
2023-05-29Refactor guards for specBenoit Daloze
2023-05-29Unify error messages of rb_num2ulong and rb_num2ullPeter Zhu
The error messages were slightly different due, which causes different behaviour on 32-bit and 64-bit systems. Notes: Merged:
2023-05-29Update to ruby/spec@c3677cfBenoit Daloze
2023-05-24Fix "runs a C function with the global lock unlocked and unlocks IO with the ↵Samuel Williams
generic RUBY_UBF_IO" on Windows. (#7848) * Enable borked spec. * Ensure win32 wrappers are visible and used. * Reorganise `read`/`write`/`pipe` in `thread_spec.c`. Notes: Merged-By: ioquatix <>
2023-05-24Add a newline at EOF [ci skip]Nobuyoshi Nakada
2023-05-24Add support for pread/pwrite on windows. (#7827)Samuel Williams
Notes: Merged-By: ioquatix <> print a deprecation warning when receiving keyword arguments (#7828)Jean byroot Boussier
[Feature #19236] In Ruby 3.3, `` shall print a deprecation warning if keyword arguments are passed instead of treating them as an implicit positional Hash. This will allow to safely introduce a `capacity` keyword argument in 3.4 Co-authored-by: Jean Boussier <> Notes: Merged-By: byroot <>
2023-05-21Fix typo in spec file description [ci skip]Ivanov-Anton
fixed typo for spec description Notes: Merged: Merged-By: nobu <>
2023-05-18Add Fiber#kill, similar to Thread#kill. (#7823)Samuel Williams
Notes: Merged-By: ioquatix <>
2023-05-13fix wording of spec description [ci skip]Martin Dürst
2023-05-10[Bug #19597] Freeze script nameNobuyoshi Nakada
Notes: Merged:
2023-04-26marshal.c: shallow freeze user objectsJean Boussier
When `freeze: true` argument is passed. [Bug #19427] Notes: Merged:
2023-04-25Update to ruby/spec@7f6ca5bBenoit Daloze
2023-04-25Workaround CRuby adding x86_64-linux-fake in $LOADED_FEATURESBenoit Daloze
2023-04-25Update to ruby/spec@7f69c86Benoit Daloze
2023-04-24Allow anonymous memberless StructJeremy Evans
Previously, named memberless Structs were allowed, but anonymous memberless Structs were not. Fixes [Bug #19416] Notes: Merged:
2023-04-23Check the precision of `getrusage` at runtimeNobuyoshi Nakada
2023-04-22Fix a guard of `Process.times`Nobuyoshi Nakada
`GETRUSAGE_BASED_CLOCK_PROCESS_CPUTIME_ID` clock uses `getrusage` always if available as the name states. That is if it is implemented `getrusage` is available, regardless microseconds in its results. Notes: Merged:
2023-04-22Fix an example of `Process.times`Nobuyoshi Nakada
Prior to commit 5806c54447439f2ba22892e4045e78dd80f96f0c, it was "at least one result with precision beyond milliseconds (with none-zero microseconds) should exist"; after this commit, "at least one result should have zero microseconds". This chance is lower than the previous condition. Notes: Merged:
2023-04-21Skip when unix socket path is too longNobuyoshi Nakada
Eventually the path directly under "/tmp" is complained by `rm_r` in spec/mspec/lib/mspec/helpers/fs.rb. Notes: Merged: