Author: Amaury Forgeot d'Arc <amaur...@gmail.com> Branch: py3k Changeset: r61506:eed851e3809b Date: 2013-02-21 00:19 +0100 http://bitbucket.org/pypy/pypy/changeset/eed851e3809b/
Log: Fixes for _rawffi tests diff --git a/pypy/tool/pytest/apptest.py b/pypy/tool/pytest/apptest.py --- a/pypy/tool/pytest/apptest.py +++ b/pypy/tool/pytest/apptest.py @@ -24,6 +24,35 @@ self.excinfo = excinfo +def py3k_repr(value): + "return the repr() that py3k would give for an object.""" + if isinstance(value, str): + # python2 string -> Bytes string + return "b" + repr(value) + elif isinstance(value, unicode): + # python2 unicode -> python3 string + return repr(value)[1:] + elif isinstance(value, list): + return '[' + ', '.join(py3k_repr(item) for item in value) + ']' + elif isinstance(value, tuple): + return '(' + ', '.join(py3k_repr(item) for item in value) + ',)' + elif isinstance(value, dict): + return '{' + ', '.join('%s: %s' % (py3k_repr(key), py3k_repr(value)) + for key, value in value.items()) + '}' + elif isinstance(value, long): + return repr(value)[:-1] + elif isinstance(value, float): + r = repr(value) + if r in ('nan', 'inf', '-inf'): + return "float(%r)" % r + else: + return r + elif isinstance(value, type): + return type.__name__ + else: + return repr(value) + + def run_with_python(python_, target_, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") @@ -37,6 +66,7 @@ print(message) raise SystemExit(0) __builtins__.skip = skip + __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, func, *args, **kwargs): @@ -68,17 +98,13 @@ defs.append(str(code)) arg_repr = [] for arg in args: - if isinstance(arg, str): - arg_repr.append("b%r" % arg) - elif isinstance(arg, unicode): - arg_repr.append(repr(arg)[1:]) - elif isinstance(arg, types.FunctionType): + if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: - arg_repr.append(repr(arg)) - args = ','.join(arg_repr) + arg_repr.append(py3k_repr(arg)) + args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" @@ -88,14 +114,8 @@ elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) - elif isinstance(value, str): - # python2 string -> Bytes string - defs.append("self.%s = b%r\n" % (symbol, value)) - elif isinstance(value, unicode): - # python2 unicode -> python3 string - defs.append("self.%s = %s\n" % (symbol, repr(value)[1:])) - elif isinstance(value, (int, float, list, dict)): - defs.append("self.%s = %r\n" % (symbol, value)) + elif isinstance(value, (str, unicode, int, float, list, dict)): + defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) source = py.code.Source(target_)[1:] pyfile = udir.join('src.py') source = helpers + '\n'.join(defs) + 'if 1:\n' + str(source) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit