import sys from testutils import assert_raises print('python executable:', sys.executable) print(sys.argv) assert sys.argv[0].endswith('.py') assert sys.platform == "linux" or sys.platform == "darwin" or sys.platform == "win32" or sys.platform == "unknown" if hasattr(sys, "_framework"): assert type(sys._framework) is str assert isinstance(sys.builtin_module_names, tuple) assert 'sys' in sys.builtin_module_names assert isinstance(sys.implementation.name, str) assert isinstance(sys.implementation.cache_tag, str) assert sys.getfilesystemencoding() == 'utf-8' assert sys.getfilesystemencodeerrors().startswith('surrogate') assert sys.byteorder == "little" or sys.byteorder == "big" assert isinstance(sys.flags, tuple) assert type(sys.flags).__name__ == "flags" assert type(sys.flags.optimize) is int assert sys.flags[3] == sys.flags.optimize assert sys.maxunicode == 1114111 # Tracing: def trc(frame, event, arg): print('trace event:', frame, event, arg) def demo(x): print(x) if x > 0: demo(x - 1) sys.settrace(trc) demo(5) sys.settrace(None) assert sys.exc_info() == (None, None, None) try: 1/0 except ZeroDivisionError as exc: exc_info = sys.exc_info() assert exc_info[0] == type(exc) == ZeroDivisionError assert exc_info[1] == exc # Recursion: def recursive_call(n): if n > 0: recursive_call(n - 1) sys.setrecursionlimit(200) assert sys.getrecursionlimit() == 200 with assert_raises(RecursionError): recursive_call(300)