Commit graph

12086 commits

Author SHA1 Message Date
mrkn
7bef465e9b range.c: reject ArithmeticSequence in rb_range_values
Reject ArithmeticSequence in rb_range_values so that methods like
Array#[] raises TypeError for ArithmeticSequence as an index.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-21 13:05:16 +00:00
mame
010a742cb6 eval_error.c (show_cause): check if cause is an Exception or not
Fixes [Bug #15447]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-21 11:44:21 +00:00
mrkn
09b3d38c72 enumerator.c: Fix airth_seq_each for Rational
Fix the wrong uses of rb_int_ge in arith_seq_each.

[ruby-core:90648] [Bug #15444]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-21 00:03:39 +00:00
mrkn
ccdba542d3 Import bigdecimal-1.4.0.pre.20181220a
* https://github.com/ruby/bigdecimal/compare/v1.4.0.pre.20181214a..v1.4.0.pre.20181220a

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 23:29:49 +00:00
mame
ab2da43ce4 ext/coverage/lib/coverage.rb (Coverage.line_stub): use only line events
It wrongly used all linenos of ISeq#trace_points which includes not only
line events but also call, return, and other events.  So, the result
included some linenos that can not be covered at all by line coverage.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 10:17:37 +00:00
ko1
2a70f68c05 hide iseq operand object for duphash. [Bug #15440]
* compile.c (compile_array): hide source Hash object.

* hash.c (rb_hash_resurrect): introduced to dup Hash object
  using rb_cHash.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 07:17:55 +00:00
nobu
fe8475d7df Test separately to get rid of risk to modify unrelated hash
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 06:59:27 +00:00
nobu
ec7b1e475b Freeze hash literals embedded in duphash instructions
Previously, these hash literals were not frozen, and thus could be
modified by ObjectSpace, resulting in undesired behavior.  Example:

```ruby
require 'objspace'

def a(b={0=>1,1=>4,2=>17})
  b
end

p a
ObjectSpace.each_object(Hash) do |a|
  a[3] = 8 if a.class == Hash && a[0] == 1 && a[1] == 4 && a[2] == 17
end
p a
```

It may be desirable to hide such hashes from ObjectSpace, since
they are internal, but I'm not sure how to do that.

From: Jeremy Evans <code@jeremyevans.net>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 06:44:50 +00:00
nobu
f89238ec0d parse.y: ignore constant name captures
* parse.y (reg_named_capture_assign_iter): ignore non-local name
  captures, including non-ASCII constant names.
  [ruby-dev:50719] [Bug #15437]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 05:43:15 +00:00
kou
766f9b4aff Really ensure loading REXML in tests
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 04:03:10 +00:00
kou
3ea72d2589 Ensure loading REXML
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 03:08:57 +00:00
kou
0d1abb904e rexml: upgrade to 3.1.8
See https://github.com/ruby/rexml/blob/master/NEWS.md for change summary.

Changes for spec/ has been reported: https://github.com/ruby/spec/pull/639


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-20 02:49:10 +00:00
normal
4038d0137f webrick: add the ability to override res, req creation
So that a customized HTTPServer subclass can use it's own
Request/Response classes.

To apply the override, make a subclass of WEBrick::HTTPServer
and override the
`create_request_and_response(with_webrick_config)` method. The
method should return an Array of [request, response].

To check whether the Server supports this method (i.e. when
using older versions of WEBrick when needing this
functionality), you can ask the server if it responds to the
method

    server.respond_to?(:create_request_and_response)

This is backportable.

[ruby-core:69604] [Feature #11266]

From: Julik Tarkhanov <me@julik.nl>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-19 11:08:05 +00:00
hsbt
92e726628e Merge RubyGems 3.0.0 from upstream.
https://blog.rubygems.org/2018/12/19/3.0.0-released.html

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-19 07:20:17 +00:00
nobu
188b673973 Enable refinements on symbol-proc in ruby-level methods
* vm_args.c (refine_sym_proc_call): resolve refinements when the
  proc is invoked, instead of resolving at making the proc, to
  enable refinements on symbol-proc in ruby-level methods

* vm.c (vm_cref_dup): clear cached symbol-procs when duplicating.

[Bug #15114] [Fix GH-2039]

From: manga_osyo <manga.osyo@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-18 13:59:46 +00:00
normal
1df9c2bc1c thread_sync.c (mutex_ptr): only reinitalize waitqueue at fork
Mutexes need to remain locked after forking.

This fixes "[BUG] invalid keeping_mutexes: Attempt to unlock a
mutex which is locked by another thread" and should
fix test_fork_while_parent_locked failures in CI

[ruby-core:90581] [Bug #15424]
[ruby-core:90595] [Bug #15430]

Fixes: r66230 ("handle mutexes held by parent threads in children")

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-18 09:21:05 +00:00
ko1
2103333e78 should use defined_class.
* vm_insnhelper.c (vm_call_method_each_type): we should use me->defined_class
  instead of me->owner because me->owner doesn't has correct ancestors list.
  [Bug #15427]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-18 08:33:20 +00:00
knu
ab364fb5a8 Import ipaddr 1.2.2
- Enable frozen_string_literal and do a bit of code cleanup


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-18 05:09:08 +00:00
akr
78dc3da299 Pathname#relative_path_from uses is_a?
I reconsidered because simpler code would have better maintainablity.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-18 03:09:54 +00:00
normal
5245ed6b9f Fix test failure if ENV["USER"] doesn't match Process.euid
When dropping privileges to run tests, ENV["USER"] could be set
to a user that doesn't match Process.euid, which causes this
test to fail with Errno::EPERM.  Try to get the name for the
current euid, and only fallback to ENV["USER"] if that doesn't
work.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-17 22:48:57 +00:00
nobu
b824c87117 Split test_fnmatch
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-17 05:57:15 +00:00
nobu
713f360dcd Already nlink is properly set on Windows
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-17 04:58:50 +00:00
nobu
990c8759db Split test_expand_path, test_basename, test_dirname
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-17 04:58:49 +00:00
nobu
9446db408c Refine error message for time interval
* time.c (time_timespec): Time interval value can be zero, not
  only positive.  [ruby-dev:50709] [Bug #15420]

From: shuujii (Shuji KOBAYASHI) <shuujii@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-16 12:55:59 +00:00
akr
4cf828632f Pathname#relative_path_from compatible with mock.
[Fix GH-2049]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-16 12:26:52 +00:00
normal
05da6568c2 test/lib/test/unit.rb: do not propagate MAKEFLAGS to children
Propagating MAKEFLAGS to children running test/unit caused stuck
tests with GNU make when "-jN" is passed in both the make(1)
command-line and the "TESTS=" variable; because the forked child
process would see MAKEFLAGS and try to use jobserver on its own.

This is regression caused by r64399
(commit b53fadfd5f,
"process.c: defaults to close_others false");
but that change also fixed a regression when close-on-exec
became the default in 2.0 :<

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-15 04:40:14 +00:00
naruse
67f59eb4ab fix r66163
OpenSSL maybe aren't loaded in rubygems.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-14 08:01:40 +00:00
nobu
cbcc148eaf Suppress deprecation warnings
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-14 04:10:42 +00:00
mrkn
62b55d9483 Import bigdecimal-1.4.0.pre.20181214a
* https://github.com/ruby/bigdecimal/compare/v1.4.0.pre.20181205a..v1.4.0.pre.20181214a

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-14 03:33:53 +00:00
nobu
65dd1434b3 Suppress uninitialized instance variable warnings
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-14 01:29:23 +00:00
akr
608310d6ff use :chdir option to avoid fd 3 to work with Windows.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-13 08:53:15 +00:00
k0kubun
23ffadad69 test_win32ole_event.rb: retry random failure
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66378 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-13 05:59:14 +00:00
mrkn
68bdef0041 Add test cases of rb_arithmetic_sequence_extract
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66371 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-12 21:17:04 +00:00
ko1
103e8d5bc7 skip a test.
* test/ruby/test_literal.rb (test_debug_frozen_string_in_array_literal):
  skip last test if `RUBY_ISEQ_DUMP_DEBUG` is specified because round-trip
  (iseq <-> binary/array) doesn't support this feature.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-12 17:16:02 +00:00
ko1
7510eef748 remove compiled_ prefix. [Feature #15287]
* vm_trace.c: remove `compiled_` prefix from the following methods:
  * `compiled_eval_script`
  * `compiled_instruction_sequence`
  [Feature #15287]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-12 15:45:06 +00:00
mame
90fc1ef779 test/test_open3.rb: skip a fd redirection test on windows
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-12 11:24:15 +00:00
akr
c8cb0565a1 open3.rb don't use keyword splat (**).
revert r43582, r49173 and r49177.

open3 arguments uses spawn-like keyword arguments.
Both symbol and integer keys are used.
```
Open3.capture2(*command, :in => IO::NULL, 3 => IO::NULL)
``

This style cannot be supported with keyword splat (**) since Ruby 2.6.
Because Ruby 2.6 prohibits symbol/non-symbol key hash separation.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66352 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-12 06:48:46 +00:00
hsbt
7f9bf068fc Merge rubygems@21f12a8 from upstream.
* [BudlerVersionFinder] set .filter! and .compatible? to match only on major versions https://github.com/rubygems/rubygems/pull/2515
  * Fix broken symlink that points to ../* https://github.com/rubygems/rubygems/pull/2516

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-12 05:07:50 +00:00
normal
0046a4a519 test/dtrace: use TracePoint.__enable
"TracePoint.enable" is implemented in prelude.rb since
r66003 / commit 96990203b7
and not available in miniruby.  I tried using regular "ruby"
for testing, but it proved noisy and caused test failures.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-11 09:49:31 +00:00
normal
349f6a3275 test/dtrace: improve diagnostics
These will help us track down test failures more easily
(on FreeBSD 11.2)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-11 09:49:26 +00:00
naruse
785ace12f9 CentOS-7 (1810)'s header has O_TMPFILE but kernel doesn't support it
20181206T080003Z.diff.html.gz

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-11 08:44:00 +00:00
nobu
8c69f7ec44 test/date: removed unnecessaruy __send__
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-11 05:09:35 +00:00
nobu
b572705486 date_core.c: moved some methods to DateTime
* ext/date/date_core.c (Init_date_core): moved methods which make
  sense only for DateTime to that class, instead of defining
  private methods in Date and making them public in DateTime.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66329 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-11 04:35:13 +00:00
nobu
b91599c48b Fix infinite loop by ensure
* compile.c (iseq_insert_nop_between_end_and_cont): insert nop so
  that the end of rescue and continuing points are not same, to
  get rid of infinite loop.  [Bug #15385]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-11 04:14:31 +00:00
naruse
1bf066dcfa Preserve HTTP header key as string [Bug #15394]
to prevent send Host header twice accidentally.

From: Sangyong Sim <sangyong-sim@cookpad.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-10 23:54:14 +00:00
duerst
dff1e89bfb add a test to make sure some unassigned codepoints do not get converted
In test/ruby/enc/test_case_mapping.rb, add a test to make sure the
unassigned codepoints in the Georgian MTAVRULI range (U+1CBB, U+1CBC)
do not get converted to unrelated codepoints by String#capitalize.
(It turns out that this test was not strictly necessary, because
unassigned codepoints are already excluded by the fact that they are
not found in the onigenc_unicode_fold_lookup table. So this test only
serves to check against future regressions.)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-10 23:12:12 +00:00
duerst
3628eae2e7 implement special behavior for Georgian for String#capitalize
The modern Georgian script is special in that it has an 'uppercase'
variant called MTAVRULI which can be used for emphasis of whole words,
for screamy headlines, and so on. However, in contrast to all other
bicameral scripts, there is no usage of capitalizing the first letter
in a word or a sentence. Words with mixed capitalization are not used
at all.

We therefore implement special behavior for String#capitalize. Formally,
we define String#capitalize as first applying String#downcase for the
whole string, then using titlecase on the first letter. Because Georgian
defines titlecase as the identity function both for MTAVRULI ('uppercase')
and Mkhedruli (lowercase), this results in String#capitalize being
equivalent to String#downcase for Georgian. This avoids undesirable
mixed case.

* enc/unicode.c: Actual implementation

* string.c: Add mention of this special case for documentation

* test/ruby/enc/test_case_mapping.rb: Add two tests, a general one
  that uses String#capitalize on some (including nonsensical)
  combinations of MTAVRULI and Mkhedruli, and a canary test to
  detect the potential assignment of characters to the currently
  open slots (holes) at U+1CBB and U+1CBC.

* test/ruby/enc/test_case_comprehensive.rb: Tweak generation of
  expectation data.

Together with r65933, this closes issue #14839.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66300 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-09 23:14:29 +00:00
k0kubun
596d7bdec4 test/rdoc/minitest_helper.rb: partially revert r66286
to resurrect r65613

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-09 12:35:13 +00:00
aycabta
18911e99d2 Merge RDoc 6.1.0.beta3 from upstream
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-08 17:39:52 +00:00
nobu
d60738f6f1 Adjust reserved hash values
The reserved hash values in hash.c must be consistend with st.c.
[ruby-core:90356] [Bug #15389]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-07 12:03:16 +00:00