diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index 3695f6e..5912929 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -557,7 +557,9 @@ def test_thread_local_fetch assert_equal(3, t.fetch("qux") {x = 3}) assert_equal(3, x) - assert_raise(KeyError) {t.fetch(:qux)} + e = assert_raise(KeyError) {t.fetch(:qux)} + assert_equal(:qux, e.key) + assert_equal(t, e.receiver) ensure t.kill if t end diff --git a/thread.c b/thread.c index 2460d7e..7df1a66 100644 --- a/thread.c +++ b/thread.c @@ -3168,7 +3168,7 @@ rb_thread_fetch(int argc, VALUE *argv, VALUE self) return rb_yield(key); } else if (argc == 1) { - rb_raise(rb_eKeyError, "key not found: %"PRIsVALUE, key); + rb_key_err_raise(rb_sprintf("key not found: \"%"PRIsVALUE"\"", key), self, key); } else { return argv[1];