Issue #5536 has been updated by Benoit Daloze.


> Issue #5536 has been updated by Nobuyoshi Nakada.
>
> (11/11/01 21:43), Benoit Daloze wrote:
>> P.S.: There is no test for String#{start,end}_with? in test/, should I add one or is it enough to change RubySpec (which I'll do when this gets accepted)?
>
> See test/ruby/test_m17n_comb.rb.

Sorry, I missed it, I only looked at test/ruby/test_string.rb.
But I'm not sure the error tests belong there, as test_m17n_comb.rb mainly focus on Encoding interactions.

Should I add in test_string.rb or test_m17n_comb.rb?

Here is the diff for test_m17n_comb.rb:

diff --git a/test/ruby/test_m17n_comb.rb b/test/ruby/test_m17n_comb.rb
index 79016af..9c6d5f3 100644
--- a/test/ruby/test_m17n_comb.rb
+++ b/test/ruby/test_m17n_comb.rb
@@ -1551,6 +1551,7 @@ class TestM17NComb < Test::Unit::TestCase
       end
       assert_equal(false, enccall(s1, :end_with?, s2), desc)
     }
+    assert_raise(TypeError) { "str".end_with? :not_convertible_to_string }
   end
 
   def test_str_start_with?
@@ -1572,6 +1573,7 @@ class TestM17NComb < Test::Unit::TestCase
       end
       assert_equal(false, enccall(s1, :start_with?, s2), desc)
     }
+    assert_raise(TypeError) { "str".start_with? :not_convertible_to_string }
   end
 
   def test_str_ord

----------------------------------------
Bug #5536: String#start_with? and end_with? ignore arguments convertible to a String [PATCH]
http://redmine.ruby-lang.org/issues/5536

Author: Benoit Daloze
Status: Assigned
Priority: Normal
Assignee: Yukihiro Matsumoto
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2011-11-01 trunk 33605) [x86_64-linux]


Hi,

Currently, String#start_with? and String#end_with? ignore arguments not convertible to String.

I believe it should instead raise an error,
 as it may lead to false expectations from the user and
 it is inconsistent with the rest of the API.

For example, if I try to use start_with? with a RegExp (which would be a nice feature BTW):
  "str".start_with? /s/ # => false
I believe it should be:
  "str".start_with? /s/ # => TypeError: can't convert Regexp into String

If you prefer the current behavior, could you explain me why?

P.S.: There is no test for String#{start,end}_with? in test/, should I add one or is it enough to change RubySpec (which I'll do when this gets accepted)?


-- 
http://redmine.ruby-lang.org