Author: Alex Gaynor <alex.gay...@gmail.com> Branch: list-strategies Changeset: r48673:b387640aa6ba Date: 2011-11-02 14:12 -0400 http://bitbucket.org/pypy/pypy/changeset/b387640aa6ba/
Log: When using a string list-strategy have the same behavior on str.join with one element lists. diff --git a/pypy/objspace/std/stringobject.py b/pypy/objspace/std/stringobject.py --- a/pypy/objspace/std/stringobject.py +++ b/pypy/objspace/std/stringobject.py @@ -344,6 +344,8 @@ def str_join__String_ANY(space, w_self, w_list): l = space.listview_str(w_list) if l is not None: + if len(l) == 1: + return space.wrap(l[0]) return space.wrap(w_self._value.join(l)) list_w = space.listview(w_list) size = len(list_w) diff --git a/pypy/objspace/std/test/test_liststrategies.py b/pypy/objspace/std/test/test_liststrategies.py --- a/pypy/objspace/std/test/test_liststrategies.py +++ b/pypy/objspace/std/test/test_liststrategies.py @@ -367,12 +367,19 @@ w_l = self.space.newlist([self.space.wrap('a'), self.space.wrap('b')]) assert space.listview_str(w_l) == ["a", "b"] - def test_string_uses_listview_str(self): + def test_string_join_uses_listview_str(self): space = self.space w_l = self.space.newlist([self.space.wrap('a'), self.space.wrap('b')]) w_l.getitems = None assert space.str_w(space.call_method(space.wrap("c"), "join", w_l)) == "acb" + def test_string_join_returns_same_instance(self): + space = self.space + w_text = space.wrap("text") + w_l = self.space.newlist([w_text]) + w_l.getitems = None + assert space.is_w(space.call_method(space.wrap(" -- "), "join", w_l), w_text) + def test_newlist_str(self): space = self.space l = ['a', 'b'] diff --git a/pypy/objspace/std/test/test_stringobject.py b/pypy/objspace/std/test/test_stringobject.py --- a/pypy/objspace/std/test/test_stringobject.py +++ b/pypy/objspace/std/test/test_stringobject.py @@ -496,6 +496,7 @@ assert "-".join(['a', 'b']) == 'a-b' text = 'text' assert "".join([text]) == text + assert " -- ".join([text]) is text raises(TypeError, ''.join, 1) raises(TypeError, ''.join, [1]) raises(TypeError, ''.join, [[1]]) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit