Project

General

Profile

Actions

Bug #891

closed

MiniTest::Assertions#assert_instance_of should use Object#instance_of?

Added by okkez (okkez _) over 15 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:37458]

Description

=begin
タイトルの通りなのですが、MiniTest::Assertions#assert_instance_of の実装がおかしいと思います。
Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか?
test/unit では Object#instance_of? を使用していました。
=end

Actions #1

Updated by matz (Yukihiro Matsumoto) over 15 years ago

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:37458] [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?"
on Tue, 16 Dec 2008 16:26:38 +0900, okkez _ writes:

|タイトルの通りなのですが、MiniTest::Assertions#assert_instance_of の実装がおかしいと思います。
|Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか?

このふたつは同じ働きですが、「おかしい」というのはどういう意
味でしょうか。「より良く意図を表現する」とかいうような意味で
あれば、バグとは言えないような。

=end

Actions #2

Updated by rubikitch (rubikitch .) over 15 years ago

=begin
From: Yukihiro Matsumoto
Subject: [ruby-dev:37459] Re: [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?
Date: Tue, 16 Dec 2008 17:33:46 +0900

|Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか?

このふたつは同じ働きですが、「おかしい」というのはどういう意

Object#instance_of?はサブクラスだとだめですよね。

Numeric === 1 # => true
Fixnum === 1 # => true
1.instance_of? Fixnum # => true
1.instance_of? Numeric # => false

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/

=end

Actions #3

Updated by okkez (okkez _) over 15 years ago

=begin
okkez です。

Ruby のリビルドをしてる間にるびきちさんがフォローしてくださってますが

さっきビルドした Ruby で確認してみました。

2008/12/16 17:33 Yukihiro Matsumoto :

まつもと ゆきひろです

In message "Re: [ruby-dev:37458] [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?"
on Tue, 16 Dec 2008 16:26:38 +0900, okkez _ writes:

|タイトルの通りなのですが、MiniTest::Assertions#assert_instance_of の実装がおかしいと思います。
|Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか?

このふたつは同じ働きですが、「おかしい」というのはどういう意
味でしょうか。「より良く意図を表現する」とかいうような意味で
あれば、バグとは言えないような。

以下のような実行結果になるからです。
Object#instance_of?(klass) はレシーバが klass の直接のインスタンスになっている
場合だけ true を返します。

RUBY_DESCRIPTION
=> "ruby 1.9.1 (2008-12-16 revision 20782) [i686-linux]"
String === 'a'
=> true
Object === 'a'
=> true
'a'.kind_of?(String)
=> true
'a'.kind_of?(Object)
=> true
'a'.instance_of?(String)
=> true
'a'.instance_of?(Object)
=> false

--
okkez

=end

Actions #4

Updated by matz (Yukihiro Matsumoto) over 15 years ago

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:37464] Re: [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?"
on Tue, 16 Dec 2008 20:22:23 +0900, okkez writes:

|以下のような実行結果になるからです。
|Object#instance_of?(klass) はレシーバが klass の直接のインスタンスになっている
|場合だけ true を返します。

なるほど。コミットします。

ただ、minitestはRyan Davisがメンテナですから、今後は
ruby-coreにレポートしていただくのが確実だと思います。今回の
コミットがロストしなきゃいいけど。

=end

Actions #5

Updated by matz (Yukihiro Matsumoto) over 15 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r20798.
=end

Actions #6

Updated by okkez (okkez _) over 15 years ago

=begin
okkez です。

2008/12/16 22:05 Yukihiro Matsumoto :

まつもと ゆきひろです

In message "Re: [ruby-dev:37464] Re: [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?"
on Tue, 16 Dec 2008 20:22:23 +0900, okkez writes:

|以下のような実行結果になるからです。
|Object#instance_of?(klass) はレシーバが klass の直接のインスタンスになっている
|場合だけ true を返します。

なるほど。コミットします。

ただ、minitestはRyan Davisがメンテナですから、今後は
ruby-coreにレポートしていただくのが確実だと思います。今回の
コミットがロストしなきゃいいけど。

次からは ruby-core にレポートするようにします。

--
okkez

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0