summaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2024-11-05[ruby/json] Re-enable passing testBenoit Daloze
https://github.com/ruby/json/commit/82d21f01c5 Notes: Merged: https://github.com/ruby/ruby/pull/12003
2024-11-05[ruby/json] Add tests for the behavior of JSON.generate with base types ↵Jean Boussier
subclasses Ref: https://github.com/ruby/json/pull/674 Ref: https://github.com/ruby/json/pull/668 The behavior on such case it quite unclear, the goal here is to figure out whatever was the behavior on Cext version of `json 2.7.0` and get all implementations to converge. We can then decide to make them all behave differently if we so wish. https://github.com/ruby/json/commit/614921dcef Notes: Merged: https://github.com/ruby/ruby/pull/12003
2024-11-05[ruby/json] JSON::Ext::Parser mark the name cache entries when not on the heapJean Boussier
This is somewhat dead code as unless you are using `JSON::Parser.new` direcltly we never allocate `JSON::Ext::Parser` anymore. But still, we should mark all its reference in case some code out there uses that. Followup: #675 https://github.com/ruby/json/commit/8bf74a977b Notes: Merged: https://github.com/ruby/ruby/pull/12003
2024-11-05Use wide character startupNobuyoshi Nakada
Mingw crt-git 12.0.0.r369.g0d4221712-1 now prohibits "command line contains characters that are not supported in the active code page". https://sourceforge.net/p/mingw-w64/mingw-w64/ci/0d42217123d3aec0341b79f6d959c76e09648a1e/ Already Ruby builds `argv` in `rb_w32_sysinit`, instead of mswin- or mingw-made `argv`. Just bypass the conversion in mingw crt.
2024-11-05[ruby/stringio] Copy from the relocated stringNobuyoshi Nakada
When ungetting the string same as the same buffer string, extending the buffer can move the pointer in the argument. Reported by manun Manu (manun) at https://hackerone.com/reports/2805165. https://github.com/ruby/stringio/commit/95c1194832
2024-11-05[ruby/date] Refine assertionsNobuyoshi Nakada
https://github.com/ruby/date/commit/1970b740d0
2024-11-05[ruby/date] Fix incorrect argc2 decrement in datetime_s_iso8601 functionDmitrii Zudin
Replace the decrement (argc2--) with an increment (argc2++) for the correct number of arguments when opt is provided. https://github.com/ruby/date/commit/b6974b00d8
2024-11-04[ruby/rdoc] Display class ancestors in the sidebar #1183Alexis Bernard
https://github.com/ruby/rdoc/commit/50dda13426
2024-11-04YJIT: Replace Array#each only when YJIT is enabled (#11955)Takashi Kokubun
* YJIT: Replace Array#each only when YJIT is enabled * Add comments about BUILTIN_ATTR_C_TRACE * Make Ruby Array#each available with --yjit as well * Fix all paths that expect a C location * Use method_basic_definition_p to detect patches * Copy a comment about C_TRACE flag to compilers * Rephrase a comment about add_yjit_hook * Give METHOD_ENTRY_BASIC flag to Array#each * Add --yjit-c-builtin option * Allow inconsistent source_location in test-spec * Refactor a check of BUILTIN_ATTR_C_TRACE * Set METHOD_ENTRY_BASIC without touching vm->running Notes: Merged-By: maximecb <[email protected]>
2024-11-04Fix Dir.mktmpdir argumentNobuyoshi Nakada
The temporary directory is the second argument.
2024-11-04Mingw: Exclude failing tests due to the crt changeNobuyoshi Nakada
Mingw crt-git 12.0.0.r369.g0d4221712-1 now prohibits "command line contains characters that are not supported in the active code page". https://sourceforge.net/p/mingw-w64/mingw-w64/ci/0d42217123d3aec0341b79f6d959c76e09648a1e/ Provisionally exclude tests that fail by passing such characters. Notes: Merged: https://github.com/ruby/ruby/pull/11991
2024-11-04Validate user input encodingDavid Rodríguez
If the user has the encoding of her system messed up, she may end up sending us incorrectly encoding input, causing "invalid byte sequence in UTF-8" errors at random places. These errors can be forced on a system without encoding issues with something like: ``` $ gem install$(echo -e "\xFF") foo /Users/deivid/.asdf/installs/ruby/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/config_file.rb:534:in `block in set_config_file_name': invalid byte sequence in UTF-8 (ArgumentError) from /Users/deivid/.asdf/installs/ruby/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/config_file.rb:530:in `each' from /Users/deivid/.asdf/installs/ruby/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/config_file.rb:530:in `set_config_file_name' from /Users/deivid/.asdf/installs/ruby/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/config_file.rb:177:in `initialize' from /Users/deivid/.asdf/installs/ruby/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/gem_runner.rb:71:in `new' from /Users/deivid/.asdf/installs/ruby/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/gem_runner.rb:71:in `do_configuration' from /Users/deivid/.asdf/installs/ruby/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/gem_runner.rb:33:in `run' from /Users/deivid/.asdf/installs/ruby/3.2.1/bin/gem:10:in `<main>' ``` This commit makes RubyGems print a better error in this case: ``` $ ruby -Ilib bin/gem install$(echo -e "\xFF") foo /Users/deivid/Code/rubygems/rubygems/lib/rubygems/gem_runner.rb:75:in `validate_encoding': invalid argument: 'install�' has invalid encoding (Gem::OptionParser::InvalidArgument) from /Users/deivid/Code/rubygems/rubygems/lib/rubygems/gem_runner.rb:31:in `run' from bin/gem:10:in `<main>' ```
2024-11-04[rubygems/rubygems] Fix commands with 2 MFA requests when webauthn is enabledDavid Rodríguez
If a command requires two MFA authenticated requests, and webauthn is enabled, then first one will succeed but the second one will fail because it tries to reuse the OTP code from the first request and that does not work. This happens when you have not yet logged in to rubygems.org, or when you have an API key with invalid scopes for the current operation. In that case, we need: * An API request to get a token or change scopes for the one that you have. * Another API request to perform the actual operation. Instead of trying to reuse the token, make sure it's cleared so we are asked to authenticate again. We only do this when webauthn is enabled because reusing TOPT tokens otherwise is allowed and I don't want to break that. https://github.com/rubygems/rubygems/commit/669e343935
2024-11-04[rubygems/rubygems] TermError should inherit from SystemExitDavid Rodríguez
The `gem owner` command rescues standard errors, but does not rescue SystemExit errors. If TermError is a standard error, not a system exit, tests don't behave like realworld for this command. https://github.com/rubygems/rubygems/commit/cf7d500f4d
2024-11-03[ruby/prism] Error for def ivarKevin Newton
https://github.com/ruby/prism/commit/232a02acef
2024-11-02Skip TestProc#test_hash_does_not_change_after_compaction if compaction is ↵Peter Zhu
not supported Notes: Merged: https://github.com/ruby/ruby/pull/11980
2024-11-01Improve coverage of TestProc#test_hash_uniquenessPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/11966
2024-11-01Add TestProc#test_hash_equalPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/11966
2024-11-01Rename test_hash to test_hash_uniquenessPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/11966
2024-11-01[Bug #20853] Fix Proc#hash to not change after compactionPeter Zhu
The hash value of a Proc must remain constant after a compaction, otherwise it may not work as the key in a hash table. Notes: Merged: https://github.com/ruby/ruby/pull/11966
2024-11-01JSON.generate: call to_json on String subclassesJean Boussier
Fix: https://github.com/ruby/json/issues/667 This is yet another behavior on which the various implementations differed, but the C implementation used to call `to_json` on String subclasses used as keys. This was optimized out in e125072130229e54a651f7b11d7d5a782ae7fb65 but there is an Active Support test case for it, so it's best to make all 3 implementation respect this behavior.
2024-11-01[ruby/json] Emit warnings when dumping binary stringsJean Boussier
Because of it's Ruby 1.8 heritage, the C extension doesn't care much about strings encoding. We should get stricter over time. https://github.com/ruby/json/commit/42402fc13f
2024-11-01Deprecate unsafe default options of `JSON.load`Jean Boussier
[Feature #19528] Ref: https://bugs.ruby-lang.org/issues/19528 `load` is understood as the default method for serializer kind of libraries, and the default options of `JSON.load` has caused many security vulnerabilities over the years. The plan is to do like YAML/Psych, deprecate these default options and direct users toward using `JSON.unsafe_load` so at least it's obvious it should be used against untrusted data.
2024-11-01Elide Generator::State allocation until a `to_json` method has to be calledJean Boussier
Fix: https://github.com/ruby/json/issues/655 For very small documents, the biggest performance gap with alternatives is that the API impose that we allocate the `State` object. In a real world app this doesn't make much of a difference, but when running in a micro-benchmark this doubles the allocations, causing twice the amount of GC runs, making us look bad. However, unless we have to call a `to_json` method, the `State` object isn't visible, so with some refactoring, we can elude that allocation entirely. Instead we allocate the State internal struct on the stack, and if we need to call a `to_json` method, we allocate the `State` and spill the struct on the heap. As a result, `JSON.generate` is now as fast as re-using a `State` instance, as long as only primitives are generated. Before: ``` == Encoding small mixed (34 bytes) ruby 3.3.4 (2024-07-09 revision be1089c8ec) +YJIT [arm64-darwin23] Warming up -------------------------------------- json (reuse) 598.654k i/100ms json 400.542k i/100ms oj 533.353k i/100ms Calculating ------------------------------------- json (reuse) 6.371M (± 8.6%) i/s (156.96 ns/i) - 31.729M in 5.059195s json 4.120M (± 6.6%) i/s (242.72 ns/i) - 20.828M in 5.090549s oj 5.622M (± 6.4%) i/s (177.86 ns/i) - 28.268M in 5.061473s Comparison: json (reuse): 6371126.6 i/s oj: 5622452.0 i/s - same-ish: difference falls within error json: 4119991.1 i/s - 1.55x slower == Encoding small nested array (121 bytes) ruby 3.3.4 (2024-07-09 revision be1089c8ec) +YJIT [arm64-darwin23] Warming up -------------------------------------- json (reuse) 248.125k i/100ms json 215.255k i/100ms oj 217.531k i/100ms Calculating ------------------------------------- json (reuse) 2.628M (± 6.1%) i/s (380.55 ns/i) - 13.151M in 5.030281s json 2.185M (± 6.7%) i/s (457.74 ns/i) - 10.978M in 5.057655s oj 2.217M (± 6.7%) i/s (451.10 ns/i) - 11.094M in 5.044844s Comparison: json (reuse): 2627799.4 i/s oj: 2216824.8 i/s - 1.19x slower json: 2184669.5 i/s - 1.20x slower == Encoding small hash (65 bytes) ruby 3.3.4 (2024-07-09 revision be1089c8ec) +YJIT [arm64-darwin23] Warming up -------------------------------------- json (reuse) 641.334k i/100ms json 322.745k i/100ms oj 642.450k i/100ms Calculating ------------------------------------- json (reuse) 7.133M (± 6.5%) i/s (140.19 ns/i) - 35.915M in 5.068201s json 4.615M (± 7.0%) i/s (216.70 ns/i) - 22.915M in 5.003718s oj 6.912M (± 6.4%) i/s (144.68 ns/i) - 34.692M in 5.047690s Comparison: json (reuse): 7133123.3 i/s oj: 6911977.1 i/s - same-ish: difference falls within error json: 4614696.6 i/s - 1.55x slower ``` After: ``` == Encoding small mixed (34 bytes) ruby 3.3.4 (2024-07-09 revision be1089c8ec) +YJIT [arm64-darwin23] Warming up -------------------------------------- json (reuse) 572.751k i/100ms json 457.741k i/100ms oj 512.247k i/100ms Calculating ------------------------------------- json (reuse) 6.324M (± 6.9%) i/s (158.12 ns/i) - 31.501M in 5.023093s json 6.263M (± 6.9%) i/s (159.66 ns/i) - 31.126M in 5.017086s oj 5.569M (± 6.6%) i/s (179.56 ns/i) - 27.661M in 5.003739s Comparison: json (reuse): 6324183.5 i/s json: 6263204.9 i/s - same-ish: difference falls within error oj: 5569049.2 i/s - same-ish: difference falls within error == Encoding small nested array (121 bytes) ruby 3.3.4 (2024-07-09 revision be1089c8ec) +YJIT [arm64-darwin23] Warming up -------------------------------------- json (reuse) 258.505k i/100ms json 242.335k i/100ms oj 220.678k i/100ms Calculating ------------------------------------- json (reuse) 2.589M (± 9.6%) i/s (386.17 ns/i) - 12.925M in 5.071853s json 2.594M (± 6.6%) i/s (385.46 ns/i) - 13.086M in 5.083035s oj 2.250M (± 2.3%) i/s (444.43 ns/i) - 11.255M in 5.004707s Comparison: json (reuse): 2589499.6 i/s json: 2594321.0 i/s - same-ish: difference falls within error oj: 2250064.0 i/s - 1.15x slower == Encoding small hash (65 bytes) ruby 3.3.4 (2024-07-09 revision be1089c8ec) +YJIT [arm64-darwin23] Warming up -------------------------------------- json (reuse) 656.373k i/100ms json 644.135k i/100ms oj 650.283k i/100ms Calculating ------------------------------------- json (reuse) 7.202M (± 7.1%) i/s (138.84 ns/i) - 36.101M in 5.051438s json 7.278M (± 1.7%) i/s (137.40 ns/i) - 36.716M in 5.046300s oj 7.036M (± 1.7%) i/s (142.12 ns/i) - 35.766M in 5.084729s Comparison: json (reuse): 7202447.9 i/s json: 7277883.0 i/s - same-ish: difference falls within error oj: 7036115.2 i/s - same-ish: difference falls within error ```
2024-11-01[ruby/json] Skip test failing on JRubyBenoit Daloze
https://github.com/ruby/json/commit/0f0b16b3f5
2024-11-01[ruby/json] Add test for parsing broken stringsBenoit Daloze
https://github.com/ruby/json/commit/850bd077c4
2024-11-01[ruby/json] Setup ruby_memcheckJean Boussier
Hoping it might find the leak reported in https://github.com/ruby/json/issues/460 https://github.com/ruby/json/commit/08635312e5
2024-11-01`alias` should not set `defined_class` for ModulesKoichi Sasada
`me->defined_class` should be 0 for method entries of Modules. This patch checks this condition and fix https://github.com/ruby/ruby/pull/11965#issuecomment-2448291790 Notes: Merged: https://github.com/ruby/ruby/pull/11968
2024-11-01Removed accidentally sync fileHiroshi SHIBATA
2024-10-31Fix assertion when envval of proc is QundefPeter Zhu
The following code crashes with assertions enabled because envval could be Qundef: {}.to_proc.dup Notes: Merged: https://github.com/ruby/ruby/pull/11970
2024-10-31Fix indentation in TestProc#test_hash [ci skip]Peter Zhu
2024-10-31[ruby/openssl] pkcs7: remove default cipher from PKCS7.encryptKazuki Yamaguchi
Require that users explicitly specify the desired algorithm. In my opinion, we are not in a position to specify the default cipher. When OpenSSL::PKCS7.encrypt is given only two arguments, it uses "RC2-40-CBC" as the symmetric cipher algorithm. 40-bit RC2 is a US export-grade cipher and considered insecure. Although this is technically a breaking change, the impact should be minimal. Even when OpenSSL is compiled with RC2 support and the macro OPENSSL_NO_RC2 is not defined, it will not actually work on modern systems because RC2 is part of the legacy provider. https://github.com/ruby/openssl/commit/439f456bfa
2024-10-31Introduce Fiber Scheduler `blocking_region` hook. (#11963)Samuel Williams
Notes: Merged-By: ioquatix <[email protected]>
2024-10-31[ruby/error_highlight] use `instance_method` to get method objectKoichi Sasada
instead of `method()`. There is a bug around `define_method`, so this patch is workaround. https://github.com/ruby/error_highlight/commit/4d04537f58
2024-10-30Only check RubyVM on CRubyCharles Oliver Nutter
Blind use of the RubyVM constant here prevents this test from running on non-CRuby. This patch guards it with RUBY_ENGINE == "ruby" to make sure that doesn't happen. Notes: Merged: https://github.com/ruby/ruby/pull/11964
2024-10-30[rubygems/rubygems] Fix `gem update --system` leaving old default bundler ↵David Rodríguez
executables around https://github.com/rubygems/rubygems/commit/4b81add54c
2024-10-29[ruby/error_highlight] Redefine in the module contextNobuyoshi Nakada
https://github.com/ruby/error_highlight/commit/0048bd0285
2024-10-30Fix method definition ownersNobuyoshi Nakada
2024-10-29[ruby/error_highlight] Suppress smaller `max_snippet_width` warningNobuyoshi Nakada
https://github.com/ruby/error_highlight/commit/9cd14c5b9a
2024-10-29Handle all formatting configs potentially being `nil`.Jean Boussier
Fix: https://github.com/ruby/json/issues/653 I don't think this was really fully supported in the past, but it kinda worked with some of the implementations.
2024-10-26[ruby/json] Workaround rubygems $LOAD_PATH bugJean Boussier
Ref: https://github.com/ruby/json/issues/647 Ref: https://github.com/rubygems/rubygems/pull/6490 Older rubygems are executing `extconf.rb` with a broken `$LOAD_PATH` causing the `json` gem native extension to be loaded with the stdlib version of the `.rb` files. This fails with ``` json/common.rb:82:in `initialize': wrong number of arguments (given 1, expected 0) (ArgumentError) ``` Since this is just for `extconf.rb` we can probably just accept that extra argument and ignore it. The bug was fixed in rubygems 3.4.9 / 2023-03-20 https://github.com/ruby/json/commit/1f5e849fe0
2024-10-26[ruby/json] Cleanup test_helper.rbJean Boussier
https://github.com/ruby/json/commit/49de571dd8
2024-10-26json_pure: fix ractor compatibilityJean Boussier
This actually never worked, because the test was always testing the ext version from the stdlib, never the pure version nor the current ext version.
2024-10-26[ruby/json] Cleaner .encode / .force_encodingJean Boussier
https://github.com/ruby/json/commit/cecf04fdfc
2024-10-26[ruby/json] Modernize heredocsJean Boussier
https://github.com/ruby/json/commit/fb25e94aea
2024-10-26pretty_generate: don't apply object_nl / array_nl for empty containersJean Boussier
Fix: https://github.com/ruby/json/issues/437 Before: ```json { "foo": { }, "bar": [ ] } ``` After: ```json { "foo": {}, "bar": [] } ```
2024-10-26[ruby/json] JSON.dump / String#to_json: raise on invalid encodingJean Boussier
This regressed since 2.7.2. https://github.com/ruby/json/commit/35407d6635
2024-10-26Raise the correct exception in fast_serialize_stringBenoit Daloze
* Related to https://github.com/ruby/json/issues/344
2024-10-26[ruby/json] raise_parse_error: avoid UBJean Boussier
Fix: https://github.com/ruby/json/pull/625 Declaring the buffer in a sub block cause bugs on some compilers. https://github.com/ruby/json/commit/90967c9eb0
2024-10-26[ruby/json] Drop compatibility for missing Array#permutation (Ruby <= 1.8.6)Étienne Barrié
https://github.com/ruby/json/commit/b02091ed44 Co-authored-by: Jean Boussier <[email protected]>