The main Thread should have report_on_exception=true for consistency

* Adapt test and add specs.
* See [Feature #14143] [ruby-core:84227]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
eregon 2017-12-14 13:08:02 +00:00
Родитель 13ea7a8761
Коммит 2e315baf48
4 изменённых файлов: 13 добавлений и 3 удалений

Просмотреть файл

@ -34,6 +34,16 @@ ruby_version_is "2.4" do
end
describe "Thread#report_on_exception" do
ruby_version_is "2.5" do
it "returns true for the main Thread" do
Thread.current.report_on_exception.should == true
end
it "returns true for new Threads" do
Thread.new { Thread.current.report_on_exception }.value.should == true
end
end
it "returns whether the Thread will print a backtrace if it exits with an exception" do
t = Thread.new { Thread.current.report_on_exception = true }
t.join

Просмотреть файл

@ -382,8 +382,8 @@ class TestThread < Test::Unit::TestCase
assert_equal(true, Thread.report_on_exception,
"global flag is true by default")
assert_equal(false, Thread.current.report_on_exception,
"the main thread has report_on_exception=false")
assert_equal(true, Thread.current.report_on_exception,
"the main thread has report_on_exception=true")
Thread.report_on_exception = true
Thread.current.report_on_exception = false

Просмотреть файл

@ -743,7 +743,6 @@ thread_create_core(VALUE thval, VALUE args, VALUE (*fn)(ANYARGS))
RBASIC_CLEAR_CLASS(th->pending_interrupt_mask_stack);
native_mutex_initialize(&th->interrupt_lock);
th->report_on_exception = th->vm->thread_report_on_exception;
/* kick thread */
err = native_thread_create(th);

1
vm.c
Просмотреть файл

@ -2518,6 +2518,7 @@ th_init(rb_thread_t *th, VALUE self)
th->retval = Qundef;
#endif
th->name = Qnil;
th->report_on_exception = th->vm->thread_report_on_exception;
}
static VALUE