aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/core
Commit message (Collapse)AuthorAgeFilesLines
* Make Mutex per-Fiber instead of per-ThreadBenoit Daloze2020-09-141-0/+12
| | | | | | | | | * Enables Mutex to be used as synchronization between multiple Fibers of the same Thread. * With a Fiber scheduler we can yield to another Fiber on contended Mutex#lock instead of blocking the entire thread. * This also makes the behavior of Mutex consistent across CRuby, JRuby and TruffleRuby. * [Feature #16792]
* Fix constant names set using const_set on a singleton classMarc-Andre Lafortune2020-09-022-8/+28
| | | | Fixes [Bug #14895]
* Deprecate iterator? methodNobuyoshi Nakada2020-08-311-6/+8
| | | | [Feature #15547] [Fix GH-2071]
* Thread.exclusive: delete卜部昌平2020-08-311-32/+34
| | | | | | Has been deprecated since 2069c9e031fc968d6d3d0fe30a9316851e4d91d8. [Feature #17125][ruby-core:99636]
* Update to ruby/spec@335eb9bBenoit Daloze2020-08-2814-332/+501
|
* States Time.at expects rational-like argument to respond to #to_intNobuyoshi Nakada2020-08-281-0/+6
| | | | https://bugs.ruby-lang.org/issues/17131
* [Feature #16513] TracePoint#inspect returns "... file:line" (#3391)Nguyễn Quang Minh2020-08-062-3/+106
| | | | | | | | | * Fix debug documents to match Thread#to_s change (Feature #16412 ticket) * TracePoint#inspect returns "... file:line" (Feature #16513) * Guard older version of Ruby in Tracepoint inspection tests * Focus on current thread only when running TracePoint inspection test
* Fix arity of Hash#to_proc [Bug #12671]Benoit Daloze2020-07-291-0/+4
|
* Update to ruby/spec@07164daBenoit Daloze2020-07-2718-18/+480
|
* Make StringIO encoding fixedNobuyoshi Nakada2020-07-201-2/+2
| | | | Get rid of affects by default external encoding.
* Fixed yday and wday with timezone [Bug #17024]Nobuyoshi Nakada2020-07-121-0/+4
|
* Update to ruby/spec@b6b7752Benoit Daloze2020-06-2714-43/+245
|
* Implement Proc#== and #eql?Jeremy Evans2020-06-193-9/+21
| | | | | | | | | | Previously, these were not implemented, and Object#== and #eql? were used. This tries to check the proc internals to make sure that procs created from separate blocks are treated as not equal, but procs created from the same block are treated as equal, even when the lazy proc allocation optimization is used. Implements [Feature #14267]
* Suppress warnings [Feature #15973]Nobuyoshi Nakada2020-06-134-6/+6
|
* Refined ioctl error descriptionNobuyoshi Nakada2020-06-111-2/+2
|
* Make proc/Proc.new without block an error instead of warningJeremy Evans2020-06-102-2/+2
| | | | The warning for these was added in 2.7.
* ENV.delete should return the result of block on non-existing keyNobuyoshi Nakada2020-06-101-0/+7
| | | | | | | Fixes [Bug #16173] Co-Authored-By: Burdette Lamar <burdettelamar@yahoo.com> Co-Authored-By: Jeremy Evans <code@jeremyevans.net>
* Fix build failuresYuki Nishijima2020-06-061-2/+2
|
* Ensure origins for all included, prepended, and refined modulesJeremy Evans2020-06-031-11/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes various issues when a module is included in or prepended to a module or class, and then refined, or refined and then included or prepended to a module or class. Implement by renaming ensure_origin to rb_ensure_origin, making it non-static, and calling it when refining a module. Fix Module#initialize_copy to handle origins correctly. Previously, Module#initialize_copy did not handle origins correctly. For example, this code: ```ruby module B; end class A def b; 2 end prepend B end a = A.dup.new class A def b; 1 end end p a.b ``` Printed 1 instead of 2. This is because the super chain for a.singleton_class was: ``` a.singleton_class A.dup B(iclass) B(iclass origin) A(origin) # not A.dup(origin) ``` The B iclasses would not be modified, so the includer entry would be still be set to A and not A.dup. This modifies things so that if the class/module has an origin, all iclasses between the class/module and the origin are duplicated and have the correct includer entry set, and the correct origin is created. This requires other changes to make sure all tests still pass: * rb_undef_methods_from doesn't automatically handle classes with origins, so pass it the origin for Comparable when undefing methods in Complex. This fixed a failure in the Complex tests. * When adding a method, the method cache was not cleared correctly if klass has an origin. Clear the method cache for the klass before switching to the origin of klass. This fixed failures in the autoload tests related to overridding require, without breaking the optimization tests. Also clear the method cache for both the module and origin when removing a method. * Module#include? is fixed to skip origin iclasses. * Refinements are fixed to use the origin class of the module that has an origin. * RCLASS_REFINED_BY_ANY is removed as it was only used in a single place and is no longer needed. * Marshal#dump is fixed to skip iclass origins. * rb_method_entry_make is fixed to handled overridden optimized methods for modules that have origins. Fixes [Bug #16852]
* Add a spec for the new NoMethodError display of the receiverJean Boussier2020-06-021-0/+18
|
* Update to ruby/spec@4e486faBenoit Daloze2020-05-3132-87/+355
|
* Update to ruby/spec@032ee74Benoit Daloze2020-05-03166-555/+555
|
* spec/ruby/core/process/clock_getres_spec.rb: lax the resolution limitYusuke Endoh2020-05-031-4/+4
| | | | | | Android is Linux, but the clock resolution is 10 milliseconds. I think that 1 microsecond is too strict for embedded environment. This change laxes the limit to 10 milliseconds.
* Command failed to run just failsNobuyoshi Nakada2020-05-021-1/+1
| | | | | | The exact exit status value of command failed to run is not a spec, but a platform dependent implementation detail. Just it is not "success".
* Fix ObjectSpace::WeakMap#key? to work if the value is nilBenoit Daloze2020-05-021-1/+1
| | | | * Fixes [Bug #16826]
* Update to ruby/spec@d394dfdBenoit Daloze2020-05-0231-14/+476
|
* [ruby/spec] Temporary directories should be under the mock_dirNobuyoshi Nakada2020-04-292-16/+20
|
* Skip Process#clock_getres specs on AndroidYusuke Endoh2020-04-191-2/+2
| | | | ... just like AIX and OpenBSD.
* Turn class variable warnings into exceptionsJeremy Evans2020-04-102-7/+3
| | | | | | | | | | | | | | | | | | This changes the following warnings: * warning: class variable access from toplevel * warning: class variable @foo of D is overtaken by C into RuntimeErrors. Handle defined?(@@foo) at toplevel by returning nil instead of raising an exception (the previous behavior warned before returning nil when defined? was used). Refactor the specs to avoid the warnings even in older versions. The specs were checking for the warnings, but the purpose of the related specs as evidenced from their description is to test for behavior, not for warnings. Fixes [Bug #14541]
* Use `rb_warn_deprecated` for `File.exists?` and `Dir.exists?`Nobuyoshi Nakada2020-04-063-27/+0
|
* Update to ruby/spec@7289ea3Benoit Daloze2020-04-041-2/+14
|
* Use `platform_is` guardNobuyoshi Nakada2020-04-034-4/+4
|
* Refined "Drop support for ruby 2.4 from ruby/spec"Nobuyoshi Nakada2020-04-034-7/+27
| | | | By using spec/mspec/tool/remove_old_guards.rb.
* Update to ruby/spec@cc7b9e5Benoit Daloze2020-04-021-7/+3
|
* Drop support for ruby 2.4 from ruby/specNobuyoshi Nakada2020-04-0189-2367/+1849
|
* Use FrozenError instead of frozen_error_classNobuyoshi Nakada2020-04-0190-333/+333
|
* spec/ruby/core/time/: Use near time for timezone testYusuke Endoh2020-03-293-7/+7
| | | | | | | | | | | | | | | | | `time_with_zone.zone.should == (time_with_zone - 60*60).zone` fails when the time is immediately before the change of summer time. https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11s/ruby-master/log/20200328T232504Z.fail.html.gz ``` 1) Time#+ preserves time zone FAILED Expected "CET" == "CEST" to be truthy but was false ``` It is acceptable as it fails at most twice per year, but it would be good to use near time objects to reduce the possibility.
* Increase the number of Process.times attemptsTakashi Kokubun2020-03-281-1/+1
| | | | | CI of 5806c54447439f2ba22892e4045e78dd80f96f0c did not succeed https://travis-ci.org/github/ruby/ruby/jobs/668072714
* Improve reliability of the Process.times specBenoit Daloze2020-03-281-4/+12
|
* Do not check that #stime changes in Process.times specBenoit Daloze2020-03-281-1/+0
| | | | * Since the spec might not spend any time in system calls.
* Remove debugging codeBenoit Daloze2020-03-281-8/+1
|
* Remove Process.clock_getres "matches the resolution in practice" specsBenoit Daloze2020-03-282-72/+0
| | | | | * Almost all platforms return incorrect values for Process.clock_getres, it should be removed: https://bugs.ruby-lang.org/issues/16740
* Update to ruby/spec@ec84479Benoit Daloze2020-03-2815-10/+124
|
* Show failed timesNobuyoshi Nakada2020-03-241-1/+3
|
* Try to avoid random failures on clock_getres_spec.rbTakashi Kokubun2020-03-231-1/+1
| | | | | | This spec fails too often https://github.com/ruby/ruby/runs/529546249 https://github.com/ruby/ruby/runs/524933256
* Support obj.clone(freeze: true) for freezing cloneJeremy Evans2020-03-221-3/+9
| | | | | | | | | | | | | | | | | | This freezes the clone even if the receiver is not frozen. It is only for consistency with freeze: false not freezing the clone even if the receiver is frozen. Because Object#clone is now partially implemented in Ruby and not fully implemented in C, freeze: nil must be supported to provide the default behavior of only freezing the clone if the receiver is frozen. This requires modifying delegate and set, to set freeze: nil instead of freeze: true as the keyword parameter for initialize_clone. Those are the two libraries in stdlib that override initialize_clone. Implements [Feature #16175]
* `Proc` made by `Hash#to_proc` should be a lambda [Bug #12671]Yusuke Endoh2020-03-161-2/+10
| | | | Like `Symbol#to_proc` (f0b815dc670b61eba1daaa67a8613ac431d32b16)
* hash.c: Do not use the fast path (rb_yield_values) for lambda blocksYusuke Endoh2020-03-161-10/+28
| | | | | | | | | | | | | | | | | As a semantics, Hash#each yields a 2-element array (pairs of keys and values). So, `{ a: 1 }.each(&->(k, v) { })` should raise an exception due to lambda's arity check. However, the optimization that avoids Array allocation by using rb_yield_values for blocks whose arity is more than 1 (introduced at b9d29603375d17c3d1d609d9662f50beaec61fa1 and some commits), seemed to overlook the lambda case, and wrongly allowed the code above to work. This change experimentally attempts to make it strict; now the code above raises an ArgumentError. This is an incompatible change; if the compatibility issue is bigger than our expectation, it may be reverted (until Ruby 3.0 release). [Bug #12706]
* Don't display singleton class in Method#inspect unless method defined thereJeremy Evans2020-03-091-0/+18
| | | | | | | | | | | Previously, if an object has a singleton class, and you call Object#method on the object, the resulting string would include the object's singleton class, even though the method was not defined in the singleton class. Change this so the we only show the singleton class if the method is defined in the singleton class. Fixes [Bug #15608]
* spec/ruby/core/process/exec_spec.rb: remove a guard for openbsdYusuke Endoh2020-03-051-10/+2
| | | | | | openbsd current seems to behave the same as other OSs. https://rubyci.org/logs/rubyci.s3.amazonaws.com/openbsd-current/ruby-master/log/20200305T063005Z.fail.html.gz