Author: Armin Rigo <ar...@tunes.org> Branch: py3.5 Changeset: r88890:2c5fdace2d2e Date: 2016-12-05 12:12 +0100 http://bitbucket.org/pypy/pypy/changeset/2c5fdace2d2e/
Log: Make the test more precise, fix (thanks ronan) diff --git a/pypy/objspace/std/intobject.py b/pypy/objspace/std/intobject.py --- a/pypy/objspace/std/intobject.py +++ b/pypy/objspace/std/intobject.py @@ -89,19 +89,13 @@ try: as_int = bigint.toint() except OverflowError: - from pypy.objspace.std.longobject import newbigint - if space.is_w(w_inttype, space.w_bool): - return space.w_True # extremely obscure case - return newbigint(space, w_inttype, bigint) + w_obj = space.newlong_from_rbigint(bigint) else: - if space.is_w(w_inttype, space.w_int): - # common case - return wrapint(space, as_int) - if space.is_w(w_inttype, space.w_bool): - return space.newbool(as_int != 0) # extremely obscure case - w_obj = space.allocate_instance(W_IntObject, w_inttype) - W_IntObject.__init__(w_obj, as_int) - return w_obj + w_obj = space.newint(as_int) + if not space.is_w(w_inttype, space.w_int): + # That's what from_bytes() does in CPython 3.5.2 too + w_obj = space.call_function(w_inttype, w_obj) + return w_obj @unwrap_spec(nbytes=int, byteorder=str, signed=bool) def descr_to_bytes(self, space, nbytes, byteorder, signed=False): diff --git a/pypy/objspace/std/test/test_intobject.py b/pypy/objspace/std/test/test_intobject.py --- a/pypy/objspace/std/test/test_intobject.py +++ b/pypy/objspace/std/test/test_intobject.py @@ -608,14 +608,18 @@ raises(TypeError, int, memoryview(b'100'), 2) def test_from_bytes(self): + called = [] class X(int): - pass + def __init__(self, val): + called.append(val) x = X.from_bytes(b"", 'little') assert type(x) is X and x == 0 + assert called == [0] x = X.from_bytes(b"*" * 100, 'little') assert type(x) is X - expected = sum(256 ** i for i in range(100)) - assert x == expected * ord('*') + expected = sum(256 ** i for i in range(100)) * ord('*') + assert x == expected + assert called == [0, expected] class AppTestIntShortcut(AppTestInt): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit