Index: Lib/test/test_cmd.py =================================================================== --- Lib/test/test_cmd.py (revision 82921) +++ Lib/test/test_cmd.py (working copy) @@ -8,7 +8,8 @@ import cmd import sys import re -from io import StringIO +import unittest +import io from test import support class samplecmdclass(cmd.Cmd): @@ -168,9 +169,33 @@ def do_exit(self, arg): return True + +class TestAlternateInput(unittest.TestCase): + + class simplecmd(cmd.Cmd): + + def do_print(self, args): + print(args, file=self.stdout) + + def do_EOF(self, args): + return True + + def test_file_with_missing_final_nl(self): + input = io.StringIO("print test\nprint test2") + output = io.StringIO() + cmd = self.simplecmd(stdin=input, stdout=output) + cmd.use_rawinput = False + cmd.cmdloop() + self.assertMultiLineEqual(output.getvalue(), + ("(Cmd) test\n" + "(Cmd) test2\n" + "(Cmd) ")) + + def test_main(verbose=None): from test import test_cmd support.run_doctest(test_cmd, verbose) + support.run_unittest(TestAlternateInput) def test_coverage(coverdir): trace = support.import_module('trace')