def test_writelines(self): shell = MockShell() f = PseudoOutputFile(shell, 'stdout', 'utf-8') f.writelines([]) self.assertEqual(shell.written, []) shell.reset() f.writelines(['one\n', 'two']) self.assertEqual(shell.written, [('one\n', 'stdout'), ('two', 'stdout')]) shell.reset() f.writelines(['on\xe8\n', 'tw\xf2']) self.assertEqual(shell.written, [('on\xe8\n', 'stdout'), ('tw\xf2', 'stdout')]) shell.reset() f.writelines([S('t\xe8st')]) self.assertEqual(shell.written, [('t\xe8st', 'stdout')]) self.assertEqual(type(shell.written[0][0]), str) shell.reset() self.assertRaises(TypeError, f.writelines) self.assertEqual(shell.written, []) self.assertRaises(TypeError, f.writelines, 123) self.assertEqual(shell.written, []) self.assertRaises(TypeError, f.writelines, [b'test']) self.assertRaises(TypeError, f.writelines, [123]) self.assertEqual(shell.written, []) self.assertRaises(TypeError, f.writelines, [], []) self.assertEqual(shell.written, [])
def __init__(self, flist=None): if use_subprocess: ms = self.menu_specs if ms[2][0] != 'shell': ms.insert(2, ('shell', 'She_ll')) self.interp = ModifiedInterpreter(self) if flist is None: root = Tk() fixwordbreaks(root) root.withdraw() flist = PyShellFileList(root) OutputWindow.__init__(self, flist, None, None) self.usetabs = True self.indentwidth = 8 self.context_use_ps1 = True text = self.text text.configure(wrap='char') text.bind('<<newline-and-indent>>', self.enter_callback) text.bind('<<plain-newline-and-indent>>', self.linefeed_callback) text.bind('<<interrupt-execution>>', self.cancel_callback) text.bind('<<end-of-file>>', self.eof_callback) text.bind('<<open-stack-viewer>>', self.open_stack_viewer) text.bind('<<toggle-debugger>>', self.toggle_debugger) text.bind('<<toggle-jit-stack-viewer>>', self.toggle_jit_stack_viewer) if use_subprocess: text.bind('<<view-restart>>', self.view_restart_mark) text.bind('<<restart-shell>>', self.restart_shell) self.save_stdout = sys.stdout self.save_stderr = sys.stderr self.save_stdin = sys.stdin from idlelib import iomenu self.stdin = PseudoInputFile(self, 'stdin', iomenu.encoding) self.stdout = PseudoOutputFile(self, 'stdout', iomenu.encoding) self.stderr = PseudoOutputFile(self, 'stderr', iomenu.encoding) self.console = PseudoOutputFile(self, 'console', iomenu.encoding) if not use_subprocess: sys.stdout = self.stdout sys.stderr = self.stderr sys.stdin = self.stdin try: import pydoc pydoc.pager = pydoc.plainpager except: sys.stderr = sys.__stderr__ raise self.history = self.History(self.text) self.pollinterval = 50
def test_unsupported(self): shell = MockShell() f = PseudoOutputFile(shell, 'stdout', 'utf-8') self.assertRaises(OSError, f.fileno) self.assertRaises(OSError, f.tell) self.assertRaises(OSError, f.seek, 0) self.assertRaises(OSError, f.read, 0) self.assertRaises(OSError, f.readline, 0)
def test_close(self): shell = MockShell() f = PseudoOutputFile(shell, 'stdout', 'utf-8') self.assertFalse(f.closed) f.write('test') f.close() self.assertTrue(f.closed) self.assertRaises(ValueError, f.write, 'x') self.assertEqual(shell.written, [('test', 'stdout')]) f.close() self.assertRaises(TypeError, f.close, 1)
def test_misc(self): shell = MockShell() f = PseudoOutputFile(shell, 'stdout', 'utf-8') self.assertIsInstance(f, io.TextIOBase) self.assertEqual(f.encoding, 'utf-8') self.assertIsNone(f.errors) self.assertIsNone(f.newlines) self.assertEqual(f.name, '<stdout>') self.assertFalse(f.closed) self.assertTrue(f.isatty()) self.assertFalse(f.readable()) self.assertTrue(f.writable()) self.assertFalse(f.seekable())
def test_write(self): shell = MockShell() f = PseudoOutputFile(shell, 'stdout', 'utf-8') f.write('test') self.assertEqual(shell.written, [('test', 'stdout')]) shell.reset() f.write('tèst') self.assertEqual(shell.written, [('tèst', 'stdout')]) shell.reset() f.write(S('tèst')) self.assertEqual(shell.written, [('tèst', 'stdout')]) self.assertEqual(type(shell.written[0][0]), str) shell.reset() self.assertRaises(TypeError, f.write) self.assertEqual(shell.written, []) self.assertRaises(TypeError, f.write, b'test') self.assertRaises(TypeError, f.write, 123) self.assertEqual(shell.written, []) self.assertRaises(TypeError, f.write, 'test', 'spam') self.assertEqual(shell.written, [])