Index: Lib/test/test_readline.py =================================================================== --- Lib/test/test_readline.py (revision 78631) +++ Lib/test/test_readline.py (working copy) @@ -6,7 +6,9 @@ why the tests cover only a small subset of the interface. """ import unittest -from test.test_support import run_unittest, import_module +from test.test_support import run_unittest, import_module, TESTFN +import os +TEMPDIR = os.path.abspath(TESTFN) # Skip tests if there is no readline module readline = import_module('readline') @@ -36,8 +38,42 @@ self.assertEqual(readline.get_current_history_length(), 1) +class TestHistoryFile (unittest.TestCase): + def setUp(self): + os.mkdir(TEMPDIR) + self.history_file = os.path.join(TEMPDIR, 'history') + self.save_history_length = readline.get_history_length() + + def tearDown(self): + if os.path.exists(self.history_file): + os.unlink(self.history_file) + os.rmdir(TEMPDIR) + readline.set_history_length(self.save_history_length) + + def fillHistory(self): + readline.clear_history() + + readline.add_history("first line") + readline.add_history("second line") + readline.add_history("third line") + + def testWriteCompleteHistory(self): + self.fillHistory() + readline.write_history_file(self.history_file) + readline.clear_history() + readline.read_history_file(self.history_file) + self.assertEqual(readline.get_current_history_length(), 3) + + def testWritePartHistory(self): + self.fillHistory() + readline.set_history_length(2) + readline.write_history_file(self.history_file) + readline.clear_history() + readline.read_history_file(self.history_file) + self.assertEqual(readline.get_current_history_length(), 2) + def test_main(): - run_unittest(TestHistoryManipulation) + run_unittest(TestHistoryManipulation, TestHistoryFile) if __name__ == "__main__": test_main()