import sys import types import py from py.builtin import set, frozenset, reversed, sorted def test_enumerate(): l = [0,1,2] for i,x in enumerate(l): assert i == x def test_BaseException(): assert issubclass(IndexError, py.builtin.BaseException) assert issubclass(Exception, py.builtin.BaseException) assert issubclass(KeyboardInterrupt, py.builtin.BaseException) class MyRandomClass(object): pass assert not issubclass(MyRandomClass, py.builtin.BaseException) assert py.builtin.BaseException.__module__ in ('exceptions', 'builtins') assert Exception.__name__ == 'Exception' def test_GeneratorExit(): assert py.builtin.GeneratorExit.__module__ in ('exceptions', 'builtins') assert issubclass(py.builtin.GeneratorExit, py.builtin.BaseException) def test_reversed(): reversed = py.builtin.reversed r = reversed("hello") assert iter(r) is r s = "".join(list(r)) assert s == "olleh" assert list(reversed(list(reversed("hello")))) == ['h','e','l','l','o'] py.test.raises(TypeError, reversed, reversed("hello")) def test_simple(): s = set([1, 2, 3, 4]) assert s == set([3, 4, 2, 1]) s1 = s.union(set([5, 6])) assert 5 in s1 assert 1 in s1 def test_frozenset(): s = set([frozenset([0, 1]), frozenset([1, 0])]) assert len(s) == 1 def test_sorted(): if sorted == py.builtin.sorted: return # don't test a real builtin for s in [py.builtin.sorted]: def test(): assert s([3, 2, 1]) == [1, 2, 3] assert s([1, 2, 3], reverse=True) == [3, 2, 1] l = s([1, 2, 3, 4, 5, 6], key=lambda x: x % 2) assert l == [2, 4, 6, 1, 3, 5] l = s([1, 2, 3, 4], cmp=lambda x, y: -cmp(x, y)) assert l == [4, 3, 2, 1] l = s([1, 2, 3, 4], cmp=lambda x, y: -cmp(x, y), key=lambda x: x % 2) assert l == [1, 3, 2, 4] def compare(x, y): assert type(x) == str assert type(y) == str return cmp(x, y) data = 'The quick Brown fox Jumped over The lazy Dog'.split() s(data, cmp=compare, key=str.lower) yield test def test_print_simple(): from py.builtin import print_ py.test.raises(TypeError, "print_(hello=3)") f = py.io.TextIO() print_("hello", "world", file=f) s = f.getvalue() assert s == "hello world\n" f = py.io.TextIO() print_("hello", end="", file=f) s = f.getvalue() assert s == "hello" f = py.io.TextIO() print_("xyz", "abc", sep="", end="", file=f) s = f.getvalue() assert s == "xyzabc" class X: def __repr__(self): return "rep" f = py.io.TextIO() print_(X(), file=f) assert f.getvalue() == "rep\n" def test_execfile(tmpdir): test_file = tmpdir.join("test.py") test_file.write("x = y\ndef f(): pass") ns = {"y" : 42} py.builtin.execfile(str(test_file), ns) assert ns["x"] == 42 assert py.code.getrawcode(ns["f"]).co_filename == str(test_file) class A: y = 3 x = 4 py.builtin.execfile(str(test_file)) assert A.x == 3 def test_getfuncdict(): def f(): pass f.x = 4 assert py.builtin._getfuncdict(f)["x"] == 4 assert py.builtin._getfuncdict(2) is None def test_callable(): class A: pass assert py.builtin.callable(test_callable) assert py.builtin.callable(A) assert py.builtin.callable(list) assert py.builtin.callable(id) assert not py.builtin.callable(4) assert not py.builtin.callable("hi") def test_totext(): py.builtin._totext("hello", "UTF-8") def test_reraise(): from py.builtin import _reraise try: raise Exception() except Exception: cls, val, tb = sys.exc_info() excinfo = py.test.raises(Exception, "_reraise(cls, val, tb)") def test_exec(): l = [] py.builtin.exec_("l.append(1)") assert l == [1] d = {} py.builtin.exec_("x=4", d) assert d['x'] == 4 def test_tryimport(): py.test.raises(ImportError, py.builtin._tryimport, 'xqwe123') x = py.builtin._tryimport('asldkajsdl', 'py') assert x == py x = py.builtin._tryimport('asldkajsdl', 'py.path') assert x == py.path def test_getcode(): code = py.builtin._getcode(test_getcode) assert isinstance(code, types.CodeType) assert py.builtin._getcode(4) is None