aboutsummaryrefslogtreecommitdiffstats
path: root/test
Commit message (Collapse)AuthorAgeFilesLines
* Fix pp when passed a empty ruby2_keywords-flagged hash as array element (#2966)Jeremy Evans2020-03-311-0/+5
| | | | | | | | | | | | | | | | | | | | | This causes problems because the hash is passed to a block not accepting keywords. Because the hash is empty and keyword flagged, it is removed before calling the block. This doesn't cause an ArgumentError because it is a block and not a lambda. Just like any other block not passed required arguments, arguments not passed are set to nil. Issues like this are a strong reason not to have ruby2_keywords by default. Fixes [Bug #16519] This backports 28d31ead34baff1c4abc0d7d902ef4bc1d576fb2 and 0ea759eac9234afc47e8fb1bcacfe9ee12c8ffb6, but needed to be modified for 2.7 as 2.7 will perform empty keyword to positional hash conversion for required arguments, which will happen if "v" in the seplist method is empty when yielded. Co-authored-by: NARUSE, Yui <nurse@users.noreply.github.com>
* Clear all trace events during teardownAlan Wu2020-03-301-0/+4
| | | | | | | | | | | | | Since 0c2d81dada, not all trace events are cleared during VM teardown. This causes a crash when there is a tracepoint for `RUBY_INTERNAL_EVENT_GC_EXIT` active during teardown. The commit looks like a refactoring commit so I think this change was unintentional. [Bug #16682] (cherry picked from commit b385f7670ffa420790bc548747fa4b58c4c5d8f6)
* Ruby 2.7 backport about IRB (#2990)aycabta2020-03-3018-142/+646
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * [ruby/reline] Sort completion list #### Legacy mode: ```console $ irb --legacy irb(main):001:0> l[TAB][TAB] lambda load local_variables loop ``` #### Before this patch: ```console $ irb irb(main):001:0> l[TAB][TAB] local_variables loop lambda load ``` #### After this patch: ```console $ irb irb(main):001:0> l[TAB][TAB] lambda load local_variables loop ``` https://github.com/ruby/reline/commit/6074069c7d * Drop an invalid char as UTF-8 * Add test_completion_with_indent_and_completer_quote_characters This is for 8a705245e55575d4d310a2e956b89a36a5931971. * [ruby/irb] Add tests for RubyLex The set_auto_indent method calculates the correct number of spaces for indenting a line. We think there might be a few bugs in this method so we are testing the current functionality to make sure nothing breaks when we address those bugs. Example test failure: ``` 1) Failure: TestIRB::TestRubyLex#test_auto_indent [/Users/Ben/Projects/irb/test/irb/test_ruby_lex.rb:75]: Calculated the wrong number of spaces for: def each_top_level_statement initialize_input catch(:TERM_INPUT) do loop do begin prompt unless l = lex throw :TERM_INPUT if @line == '' else . <10> expected but was <12>. ``` https://github.com/ruby/irb/commit/752d5597ab * [ruby/reline] Degenerate the terminal size to [$LINES, $COLUMNS] if it is unknown This is a workaround for https://github.com/ruby/irb/issues/50 https://github.com/ruby/reline/commit/5725677d1a * [ruby/irb] Fix newline depth with multiple braces This commit fixes the check_newline_depth_difference method to multiple open braces on one line into account. Before this change we were subtracting from the depth in check_newline_depth_difference on every open brace. This is the right thing to do if the opening and closing brace are on the same line. For example in a method definition we have an opening and closing parentheses we want to add 1 to our depth, and then remove it. ``` def foo() end ``` However this isn't the correct behavior when the brace spans multiple lines. If a brace spans multiple lines we don't want to subtract from check_newline_depth_difference and we want to treat the braces the same way as we do `end` and allow check_corresponding_token_depth to pop the correct depth. Example of bad behavior: ``` def foo() [ ] puts 'bar' end ``` Example of desired behavior: ``` def foo() [ ] puts 'bar' end ``` https://github.com/ruby/irb/commit/7dc8af01e0 * text/readline/test_readline.rb - fix skip on Reline (#2743) TestRelineAsReadline#test_input_metachar passes on MinGW * Add "require 'openstruct'" what is forgotten * [ruby/irb] Fix lib name of OpenStruct https://github.com/ruby/irb/commit/1f3a84ab6b * Add load path and require for ruby/ruby * Rescue EOFError If C-d is pressed before IRB is ready, IRB crashes because EOFError occurs. * Complete indented and quoted string correctly def foo ''.upca[TAB] This will be completed to be: def foo ''.upcase The indent was gone. This commit fixes the bug. * [ruby/irb] Fix crashing when multiple open braces per line https://github.com/ruby/irb/issues/55 If we had put multiple open braces on a line the with no closing brace spaces_of_nest array keeps getting '0' added to it. This means that when we pop off of this array we are saying that we should be in position zero for the next line. This is an issue because we don't always want to be in position 0 after a closing brace. Example: ``` [[[ ] ] ] ``` In the above example the 'spaces_of_nest' array looks like this after the first line is entered: [0,0,0]. We really want to be indented 4 spaces for the 1st closing brace 2 for the 2nd and 0 for the 3rd. i.e. we want it to be: [0,2,4]. We also saw this issue with a heredoc inside of an array. ``` [<<FOO] hello FOO ``` https://github.com/ruby/irb/commit/80c69c8272 * Support history-size in .inputrc correctly * Introduce an abstracted structure about the encoding of Reline The command prompt on Windows always uses Unicode to take input and print output but most Reline implementation depends on Encoding.default_external. This commit introduces an abstracted structure about the encoding of Reline. * Remove an unused setting variable * Use Reline.encoding_system_needs if exists * Add tests for vi_insert and vi_add * Implement vi_insert_at_bol and vi_add_at_eol * [ruby/reline] Implement vi_to_next_char https://github.com/ruby/reline/commit/066ecb0a21 * [ruby/reline] Implement vi_prev_char and vi_to_prev_char https://github.com/ruby/reline/commit/0ad3ee63fa * [ruby/readline-ext] Include ruby/assert.h in ruby/ruby.h so that assertions can be there https://github.com/ruby/readline-ext/commit/4d44c12832 * Stop using minitest dependent methods * Skip a test that uses assert_ruby_status if it doesn't exist * Use omit instead of skip * Check DONT_RUN_RELINE_TEST envvar * [ruby/irb] Add newline_before_multiline_output https://github.com/ruby/irb/commit/9eb1801a66 * [ruby/irb] Fix compatibility with rails before 5.2 Rails before 5.2 added Array#append as an alias to Array#<< , so that it expects only one argument. However ruby-2.5 added Array#append as an alias to Array#push which takes any number of arguments. If irb completion is used in `rails c` (for example "IO.<tab>") it fails with: irb/completion.rb:206:in `<<': wrong number of arguments (given 3, expected 1) (ArgumentError) Using Array#push instead of Array#append fixes compatibility. https://github.com/ruby/irb/commit/5b7bbf9c34 * Reline: Use a more robust detection of MinTTY The previous detection per get_screen_size fails when stdout is passed to a pipe. That is the case when running ruby tests in parallel ("-j" switch). In this case Reline believes that it's running on MinTTY and the tests are running with ANSI IOGate instead of the Windows adapter on MINGW. So parallel test results were different to that of a single process. This commit fixes these differencies. The code is taken from git sources and translated to ruby. NtQueryObject() is replaced by GetFileInformationByHandleEx(), because NtQueryObject() is undocumented and is more difficult to use: https://github.com/git-for-windows/git/blob/c5a03b1e29c69f3f06c8fabd92493edb73469176/compat/winansi.c#L558 * Reline: Fix changed test results due to change to UTF-8 on Windows In commit f8ea2860b0cac1aec79978e6c44168802958e8af the Reline encoding for native windows console was changed to hardcoded UTF-8. This caused failures in reline and readline tests, but they were hidden, because parallel ruby tests incorrectly used Reline::ANSI as IOGate. Tests failures were raised in single process mode, but not with -j switch. This patch corrects encodings on native Windows console. * [ruby/irb] [ruby/irb] Rewrite an expression to detect multiline https://github.com/ruby/irb/commit/ed5cf375a6 https://github.com/ruby/irb/commit/5b7bbf9c34 * [ruby/reline] Implement vi_change_meta https://github.com/ruby/reline/commit/8538e0e10f * Always refer to Reline::IOGate.encoding * Always use UTF-8 for Reline::GeneralIO on Windows * Use test_mode on Reline::History::Test for encoding * [ruby/reline] Support GNOME style Home/End key sequences [Bug #16510] https://github.com/ruby/reline/commit/788f0df845 * [ruby/irb] Add a new easter egg: dancing ruby https://github.com/ruby/irb/commit/e37dc7e58e * [ruby/irb] Exclude useless files from RDoc https://github.com/ruby/irb/commit/8f1ab2400c * [ruby/irb] Exclude useless files from RDoc * Fix inaccuracy in encoding tests These tests assume Encoding.find('locale') == Encoding.find('external') and fail if they are distinct. * [ruby/reline] Fix Reline::Windows#scroll_down I mistook Right and Bottom. https://github.com/ruby/reline/commit/8be401c5f5 * [ruby/reline] Bypass cursor down when a char is rendered at eol on Windows A newline is automatically inserted if a character is rendered at eol on Windows command prompt. https://github.com/ruby/reline/commit/4bfea07e4a * [ruby/reline] Organize special keys escape sequences https://github.com/ruby/reline/commit/41deb1a3d9 * [ruby/readline-ext] Remove unnecessary -I$(top_srcdir) when it's an individual gem https://github.com/ruby/readline-ext/commit/efaca4a5f4 * [ruby/readline-ext] Check TestRelineAsReadline existance https://github.com/ruby/readline-ext/commit/c0a6303168 * [ruby/readline-ext] The ruby/assert.h is adopted by Ruby 2.7 or later https://github.com/ruby/readline-ext/commit/106c31fc1b * Revert "[ruby/readline-ext] Include ruby/assert.h in ruby/ruby.h so that assertions can be there" This reverts commit 425b2064d394639101854c83a061a0918b33b857. This cherry-pick was a mistake. * [ruby/readline-ext] Use require check instead of DONT_RUN_RELINE_TEST env https://github.com/ruby/readline-ext/commit/1df99d1481 * [ruby/readline-ext] Add spec.extensions https://github.com/ruby/readline-ext/commit/8c33abb13c * [ruby/readline-ext] Use rake/extensiokntask to build https://github.com/ruby/readline-ext/commit/b0b5f709bd * Fix readline build dependency * [ruby/irb] Add test_complete_symbol https://github.com/ruby/irb/commit/dbbf086c1f * [ruby/irb] Check doc namespace correctly IRB::InputCompletor::PerfectMatchedProc crashes when doc not found because a variable name was incorrect. https://github.com/ruby/irb/commit/889fd4928f * [ruby/irb] Fix auto indent with closed brace A closed brace in auto-indent shouldn't affect the next brace in the same line, but it behaves like below: p() { } It's a bug. https://github.com/ruby/irb/commit/fbe59e344f * [ruby/irb] Use 0.step instead of (..0).each for Ruby 2.5 https://github.com/ruby/irb/commit/5d628ca40e * Revert "[ruby/irb] Add test_complete_symbol" This reverts commit 3af3431c2c145134996e66f3d8d9ade8ad81bde0. * [ruby/irb] fix reserved words and completion for them https://github.com/ruby/irb/commit/6184b227ad * Add test_complete_symbol The previous version of the test method used a symbol, ":abcdefg" to complete but longer symbols that can be completed are defined by other test methods of other libs. * test/irb/test_completion.rb: suppress a warning: unused literal ignored * [ruby/reline] Use IO#write instead of IO#print IO#print always adds a string of $\ automatically. https://github.com/ruby/reline/commit/a93119c847 * [ruby/irb] Version 1.2.2 https://github.com/ruby/irb/commit/a71753f15a * [ruby/reline] Version 0.1.3 https://github.com/ruby/reline/commit/ea2b182466 * [ruby/irb] Include easter-egg.rb in gemspec `irb` doesn't run because this file isn't included in the gem. https://github.com/ruby/irb/commit/73cda56d25 * [ruby/irb] Version 1.2.3 https://github.com/ruby/irb/commit/dd56e06df5 * support multi-run test for test_readline.rb * [ruby/irb] `yield` outside method definition is a syntax error https://github.com/ruby/irb/commit/dbc7b059c7 * test/readline - allow ENV control of test class creation In ruby/ruby, the tests run on both readline & reline by creating four test classes: ``` TestReadline TestReadlineHistory TestRelineAsReadline TestRelineAsReadlineHistory ``` Reline inports the test files and uses them in its CI. Adding the ENV control allows it to only run the `TestRelineAsReadline` classes. * Omit test_using_quoting_detection_proc_with_multibyte_input temporarily for random order test * support random order test. test_readline: HISTORY should be empty. test_using_quoting_detection_proc: test_using_quoting_detection_proc_with_multibyte_input: Readline.completer_quote_characters= and Readline.completer_word_break_characters= doesn't accept nil, so skip if previous values are nil. * Set Readline.completion_append_character = nil always GNU Readline add a white space when Readline.completion_append_character is not initialized. * Fix a typo [ci skip] * skip test if Reline.completion_proc is nil. Some other tests can set Reline.completion_proc, so if it is nil, simply skip this test. * Reset Reline.point TestRelineAsReadline#test_insert_text expects Readline.point == 0 at the beginning of the test, but a test violate this assumption. * Convert incompatible encoding symbol names * Ignore incompatible convert of symbols * Add workaround for test-bundler failure https://github.com/ruby/actions/runs/500526558?check_suite_focus=true#step:16:127 ``` Failures: 1) Bundler.setup when Bundler is bundled doesn't blow up Failure/Error: expect(err).to be_empty expected `"fatal: not a git repository (or any of the parent directories): .git\nfatal: not a git repository (o...the parent directories): .git\nfatal: not a git repository (or any of the parent directories): .git".empty?` to return true, got false Commands: $ /home/runner/work/actions/actions/snapshot-master/ruby \ -I/home/runner/work/actions/actions/snapshot-master/lib:/home/runner/work/actions/actions/snapshot-master/spec/bundler \ -rsupport/hax -rsupport/artifice/fail \ /home/runner/work/actions/actions/snapshot-master/libexec/bundle install --retry 0 Resolving dependencies... Using bundler 2.1.4 Bundle complete! 1 Gemfile dependency, 1 gem now installed. Use `bundle info [gemname]` to see where a bundled gem is installed. fatal: not a git repository (or any of the parent directories): .git fatal: not a git repository (or any of the parent directories): .git fatal: not a git repository (or any of the parent directories): .git # $? => 0 $ /home/runner/work/actions/actions/snapshot-master/ruby \ -I/home/runner/work/actions/actions/snapshot-master/lib:/home/runner/work/actions/actions/snapshot-master/spec/bundler \ -rsupport/hax -rsupport/artifice/fail \ /home/runner/work/actions/actions/snapshot-master/libexec/bundle exec ruby -e \ require\ \'bundler\'\;\ Bundler.setup fatal: not a git repository (or any of the parent directories): .git fatal: not a git repository (or any of the parent directories): .git fatal: not a git repository (or any of the parent directories): .git # $? => 0 # ./spec/bundler/runtime/setup_spec.rb:1056:in `block (3 levels) in <top (required)>' # ./spec/bundler/spec_helper.rb:111:in `block (3 levels) in <top (required)>' # ./spec/bundler/spec_helper.rb:111:in `block (2 levels) in <top (required)>' # ./spec/bundler/spec_helper.rb:78:in `block (2 levels) in <top (required)>' make: *** [yes-test-bundler] Error 1 ``` * [ruby/irb] Unnamed groups are not captured when named groups are used https://github.com/ruby/irb/commit/0a641a69b0 * [ruby/reline] Work with wrong $/ value correctly https://github.com/ruby/reline/commit/962ebf5a1b * [ruby/irb] Detect multiple lines output simplify The old implementation performance test code: require 'objspace' puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001) /\A.*\Z/ !~ ('abc' * 20_000_000) puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001) and run `time test.rb`: 2.5868 MB 62.226 MB real 0m1.307s user 0m0.452s sys 0m0.797s The new implementation performance test code: require 'objspace' puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001) ('abc' * 20_000_000).include?("\n") puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001) and run `time test.rb`: 2.5861 MB 62.226 MB real 0m0.132s user 0m0.088s sys 0m0.042s https://github.com/ruby/irb/commit/40d6610baf * [ruby/reline] Suppress error in case INPUTRC env is empty https://github.com/ruby/reline/commit/bce7e7562b * [ruby/reline] Add yamatanooroti rendering test https://github.com/ruby/reline/commit/f092519525 * [ruby/reline] Rename test suite name of yamatanooroti test https://github.com/ruby/reline/commit/b0f32f5de4 * [ruby/reline] Add a comment why rescue yamatanooroti loading error on the test https://github.com/ruby/reline/commit/2a8061daec * [ruby/irb] Suppress crashing when EncodingError has occurred without lineno https://github.com/ruby/irb/commit/13572d8cdc * [ruby/reline] Suppress error when check ambiguous char width in LANG=C https://github.com/ruby/reline/commit/623dffdd75 * [ruby/io-console] Enable only interrupt bits on `intr: true` https://github.com/ruby/io-console/commit/baaf929041 * [ruby/io-console] bump up to 0.5.4 * [ruby/io-console] Update the minimum requirement of Ruby version https://github.com/ruby/io-console/commit/73e7b6318a * [ruby/io-console] Filter Ruby engine name rather than just /ruby/ This breaks tests using this path on JRuby because the `jruby` executable turns into `jjruby` after the sub. https://github.com/ruby/io-console/commit/e5951aa34c * [ruby/io-console] bump up to 0.5.5 * [ruby/io-console] Prefer keyword arguments https://github.com/ruby/io-console/commit/5facbfc4c8 * [ruby/io-console] [DOC] Improved about `intr:` https://github.com/ruby/io-console/commit/82b630cd79 * [ruby/io-console] Just ignore the extension on other than CRuby https://github.com/ruby/io-console/commit/41b6f09574 * [ruby/io-console] bump up to 0.5.6 Co-authored-by: KOBAYASHI Shuji <shuujii@gmail.com> Co-authored-by: Ben <kanobt61@gmail.com> Co-authored-by: Yusuke Endoh <mame@ruby-lang.org> Co-authored-by: MSP-Greg <MSP-Greg@users.noreply.github.com> Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Co-authored-by: Kenta Murata <mrkn@mrkn.jp> Co-authored-by: Lars Kanis <lars@greiz-reinsdorf.de> Co-authored-by: Lars Kanis <kanis@comcard.de> Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org> Co-authored-by: Nobuhiro IMAI <nov@yo.rim.or.jp> Co-authored-by: Nick Lewis <nick@puppet.com> Co-authored-by: S-H-GAMELINKS <gamelinks007@gmail.com> Co-authored-by: Koichi Sasada <ko1@atdot.net> Co-authored-by: Kazuhiro NISHIYAMA <zn@mbf.nifty.com> Co-authored-by: Charles Oliver Nutter <headius@headius.com>
* Suppress an "assigned but unused variable" warningYusuke Endoh2020-03-281-0/+1
| | | | (cherry picked from commit 501f2c44e6ae79c02a5c4d0f872fc7fa77258fcf)
* Preserve `kwarg` flag and fix up f5c904c2a9Nobuyoshi Nakada2020-03-281-0/+2
| | | | (cherry picked from commit c8d0bf0156878df03a71fffc97c44abf7333d5d7)
* Suppress "assigned but unused variable" warningsYusuke Endoh2020-03-271-0/+2
| | | | (cherry picked from commit 65dd50fc25f6522536d5c4749055384bde1f9371)
* Allow newlines inside braced patternNobuyoshi Nakada2020-03-271-0/+14
| | | | (cherry picked from commit f5c904c2a907013e22ff74bc3686952c5448d493)
* Allow trailing comma in hash patternKazuki Tsujimoto2020-03-271-0/+9
| | | | (cherry picked from commit d25a4f413dce6ad3a8baaf61591415b9a8cce082)
* Make RbConfig::CONFIG values mutable [Bug #16738]Nobuyoshi Nakada2020-03-271-0/+9
| | | | | | | As `RbConfig.expand` modifies the argument and involved `CONFIG` values, its values should be mutable. (cherry picked from commit 4adb2d655dcd54b28366b4d17e86b21e2b622cd1)
* test/openssl/test_ssl.rb: ignore SSLError when the connection is closedYusuke Endoh2020-03-261-1/+6
| | | | | | | | | | | | | | | | | | | | "test_close_after_socket_close" checks if ssl.close is no-op even after the wrapped socket is closed. The test itself is fair, but the other endpoint that is reading the SSL connection may fail with SSLError: "SSL_read: unexpected eof while reading" in some environments: https://github.com/ruby/ruby/actions/runs/60085389 (MinGW) https://rubyci.org/logs/rubyci.s3.amazonaws.com/android28-x86_64/ruby-master/log/20200321T034442Z.fail.html.gz ``` 1) Failure: OpenSSL::TestSSL#test_close_after_socket_close [D:/a/ruby/ruby/src/test/openssl/utils.rb:299]: exceptions on 1 threads: SSL_read: unexpected eof while reading ``` This changeset rescues and ignores the SSLError in the test. (cherry picked from commit be76e86e69106c6906322dc30aa75c3ff65da63c)
* check ar_table after `#hash` callKoichi Sasada2020-03-261-0/+58
| | | | | | | | | ar_table can be converted to st_table just after `ar_do_hash()` function which calls `#hash` method. We need to check the representation to detect this mutation. [Bug #16676] (cherry picked from commit 4c019f5a626523e99e2827ed917802e3097c380d)
* [ruby/stringio] StringIO#initialize default to the source string encodingJean Boussier2020-03-151-0/+12
| | | | | | | [Bug #16497] https://github.com/ruby/stringio/commit/4958a5ccab (cherry picked from commit e257c08f2ec27e2d66cdfa7e2415deb492522e22)
* Do not autosplat when calling proc with empty keyword splatJeremy Evans2020-03-151-0/+20
| | | | | | | | | | | | | | With the removal of the splatted argument when using an empty keyword splat, the autosplat code considered an empty keyword splat the same as no argument at all. However, that results in autosplat behavior changing dependent on the content of the splatted hash, which is not what anyone would expect or want. This change always skips an autosplat if keywords were provided. Fixes [Bug #16560] (cherry picked from commit c1d8829ef515ee51fadeadd7dd022b5c47a71cdd)
* Prevent unloading methods used in root_fiber while calling another Fiber (#2939)Takashi Kokubun2020-03-151-5/+27
| | | | | | | | | | Fixing SEGVs like: http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2744905 http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2744420 http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2741400 [Bug #16664] (cherry picked from commit adcf0316d1ecedae2a9157ad941550e0c0fb510b)
* Avoid infinite loop on --jit-waitTakashi Kokubun2020-03-151-4/+26
| | | | (cherry picked from commit a8dcab723316997d9e01c89d6df969edce75bdca)
* Fix SimpleDelegator respond_to? regressionJean Boussier2020-03-151-0/+14
| | | | | | | | | | | In 2.6, SimpleDelegator would always use the target `respond_to?` In 2.7.0 it doesn't if the target does not inherit from Object. This breaks compatibility for delegated objects that inherit from BasicObject and redefine `respond_to?`. [Bug #16606] (cherry picked from commit f2552216d43040cd42bbb9fd484eab6c70856fe6)
* delegate.rb: fixed keyword arguments in DelegateClassNobuyoshi Nakada2020-03-151-0/+8
| | | | | | | `Delegator.delegating_block` should delegate keyword arguments separately. [ruby-core:96949] (cherry picked from commit 9bcf4f3db26249772c983896ebbc9ff41f4614db)
* Make ruby2_keywords methods correctly handle **{} optimizationJeremy Evans2020-03-151-0/+14
| | | | | | | | | | | | | | | | Previously, this code: ruby2_keywords def foo(*a) a.last end foo(**{}) Returned an empty frozen hash. However, the final hash should not be frozen in this case, as it wouldn't be if foo accepted a keyword splat. Use a new unfrozen empty hash instead of reusing the frozen empty hash in this case. Fixes [Bug #16642]
* Don't display singleton class in Method#inspect unless method defined thereJeremy Evans2020-03-141-0/+8
| | | | | | | | | | | | | | 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] (cherry picked from commit e02bd0e713ef920e6d12c27f16548f48ec5c2cf0)
* Fixed duplicated warningNobuyoshi Nakada2020-03-141-0/+6
| | | | | | | As `command_rhs` is always a "value expression", `command_asgn` does not need the same check. [Bug #16619] (cherry picked from commit 6e6844320de989cb88a154e2ac75066ccea1bba2)
* Fixed symbol misused as IDNobuyoshi Nakada2020-03-141-0/+8
| | | | | | | `rb_funcallv_public` and `rb_respond_to` require an `ID`, not a `Symbol`. [Bug #16649] (cherry picked from commit 8b6e2685a4b7c7de905f7ed60c02ef85e0724754)
* Pass keyword arguments to IOs properly [Bug #16639]Nobuyoshi Nakada2020-03-131-0/+7
| | | | (cherry picked from commit 041c2932e336b509b0ddc1fdbd9f160bce8d4893)
* lib/drb/drb.rb: Use ruby2_keywords for keyword separationYusuke Endoh2020-03-132-0/+28
| | | | | | [Bug #16634] (cherry picked from commit fb472ca7adbaceb35aae1b3a6b948720ffc9eb53)
* Add the loaded feature after no exception raisedNobuyoshi Nakada2020-03-131-0/+7
| | | | | | | Retrying after rescued `require` should try to load the same library again. [Bug #16607] (cherry picked from commit 7d6903dc476f982e7b432adbeef3a3d9372a309f)
* Squashed commit of the following: [Backport #16516]NARUSE, Yui2020-03-132-1/+10
| | | | | | | | | | | | | | commit c98c492578d898dc07a04b8240d8d5b1508ffafa Author: Nobuyoshi Nakada <nobu@ruby-lang.org> Date: Fri Jan 17 16:56:53 2020 +0900 Added test for f38b3e8c707ebdcad05aa9485cf1760640b74fbb commit f38b3e8c707ebdcad05aa9485cf1760640b74fbb Author: Nobuyoshi Nakada <nobu@ruby-lang.org> Date: Thu Jan 16 18:34:31 2020 +0900 Fixed the location of args node with numbered parameter
* Disable GC until VM objects get initialized [Bug #16616]Nobuyoshi Nakada2020-03-131-0/+1
|
* Avoid jumping to a wrong destinationTakashi Kokubun2020-02-201-0/+10
| | | | when the next insn is already compiled by former branches.
* Fix typo s/test_ruby2_keywords_hash!/test_ruby2_keywords_hash/Ryuta Kamizono2020-02-181-1/+1
| | | In #2818, `Hash.ruby2_keywords!` has renamed to `Hash.ruby2_keywords_hash`.
* hash.c: Add a feature to manipulate ruby2_keywords flagYusuke Endoh2020-02-181-0/+24
| | | | | | | | | | | | | | | It was found that a feature to check and add ruby2_keywords flag to an existing Hash is needed when arguments are serialized and deserialized. It is possible to do the same without explicit APIs, but it would be good to provide them as a core feature. https://github.com/rails/rails/pull/38105#discussion_r361863767 Hash.ruby2_keywords_hash?(hash) checks if hash is flagged or not. Hash.ruby2_keywords_hash(hash) returns a duplicated hash that has a ruby2_keywords flag, [Bug #16486]
* Restart timer thread even after preparation failedNobuyoshi Nakada2020-02-131-0/+9
| | | | | If the timer thread is left stopped, memory crash or segfault can happen. [Bug #16624]
* MinGW on Actions (#2791)MSP-Greg2020-01-302-4/+17
| | | | | | | | | | | | | | | | | | | * MinGW - skip spec in spec/ruby/optional/capi/thread_spec.rb C-API Thread function rb_thread_call_without_gvl -- runs a C function with the global lock unlocked and unlocks IO with the generic RUBY_UBF_IO stops/freezes spec tests See https://bugs.ruby-lang.org/issues/16265 * MinGW - skip test test/resolv/test_dns.rb Test times out in CI (both AppVeyor & Actions), cannot repo locally * MinGW - skip test test/ruby/test_thread_queue.rb * Add Actions mingw.yml
* Fixed a segfault `GC.verify_compaction_references`Nobuyoshi Nakada2020-01-301-0/+2
| | | | | Which is by coercion of `Qundef`, when any keyword argument without `toward:` option is given. [Bug #16598]
* `Regexp` in `MatchData` can be `nil`Nobuyoshi Nakada2020-01-161-0/+4
| | | | | | | `String#sub` with a string pattern defers creating a `Regexp` until `MatchData#regexp` creates a `Regexp` from the matched string. `Regexp#last_match(group_name)` accessed its content without creating the `Regexp` though. [Bug #16508]
* script_compiled event on compile error.Koichi Sasada2020-01-161-0/+9
| | | | | | script_compiled event for TracePoint should not be invoked on compile error (SyntaxError) because it is not "compiled". [Bug #16459]
* range.c: Range#min with a beginless one now raise an explicit exceptionYusuke Endoh2019-12-251-0/+6
| | | | [Bug #16450]
* ^D on non-empty line in vi mode behaves like Enteraycabta2019-12-251-8/+11
|
* Scale sleeping times to wait for the OS operationsNobuyoshi Nakada2019-12-241-0/+4
|
* The delete-char-or-list shows completed list when called at end of lineaycabta2019-12-241-3/+40
| | | | It doesn't behave the same as the delete-char.
* Synchronize with a Queue instead of sleepingNobuyoshi Nakada2019-12-241-4/+12
|
* Revert "Scale sleeping times"Koichi Sasada2019-12-241-4/+0
| | | | | | | | This reverts commit e57d6194218efc73c30f3fed9dd321d2e357030b. Test fails: http://ci.rvm.jp/results/trunk-gc-asserts@ruby-sky1/2518563 http://ci.rvm.jp/results/trunk-gc_compact@silicon-docker/2518533
* Scale sleeping timesNobuyoshi Nakada2019-12-241-0/+4
|
* Get rid of false positive misspellingsNobuyoshi Nakada2019-12-241-7/+8
| | | | [Bug #16437]
* [ruby/rdoc] Support newline in the middle of constant definitionaycabta2019-12-241-1/+1
| | | | https://github.com/ruby/rdoc/commit/74d3984324
* [ruby/rdoc] Treat Proc#call syntax sugar for constant correctlyaycabta2019-12-241-0/+11
| | | | https://github.com/ruby/rdoc/commit/957d041ae0
* Reword keyword arguments warning messages to convey these are deprecation ↵Marc-Andre Lafortune2019-12-2310-487/+487
| | | | warnings
* ObjectSpace._id2ref should check liveness.Koichi Sasada2019-12-231-0/+20
| | | | | objspace->id_to_obj_tbl can contain died objects because of lazy sweep, so that it should check liveness.
* Port ↵Yuki Nishijima2019-12-231-0/+0
| | | | https://github.com/ruby/did_you_mean/commit/dd1dd86e6c3188c36224d5dd4389676e6653a727
* Revert "Should return "." for File.extname("file.") also on Windows"NAKAMURA Usaku2019-12-232-4/+8
| | | | | | | | We want to introduce consistency and better compatibility with unixen, but the Windows APIs doues not have consistency fundamentally and we can not found any logical way... This reverts commit 61aff0cd189e67fa6f2565639ad0128fa33b88fc.
* fix a thread test.Koichi Sasada2019-12-221-7/+7
| | | | | | * Use Queue for synchronization. * Don't use `sleep 0.2` and use `th.join` because created thread can raise an exception after 0.2 seconds.
* compile.c: avoid newarraykwsplat for argumentsv2_7_0_rc2Yusuke Endoh2019-12-221-0/+6
| | | | | | | | | | | | | | `foo(*rest, post, **empty_kw)` is compiled like `foo(*rest + [post, **empty_kw])`, and `**empty_kw` is removed by "newarraykwsplat" instruction. However, the method call still has a flag of KW_SPLAT, so "post" is considered as a keyword hash, which caused a segfault. Note that the flag cannot be removed if "empty_kw" is not always empty. This change fixes the issue by compiling arguments with "newarray" instead of "newarraykwsplat". [Bug #16442]