Staging
v0.5.1
https://github.com/python/cpython
Raw File
Tip revision: 03776e33a9622dfad145eef71745faa7633d1b89 authored by Larry Hastings on 20 September 2014, 23:09:56 UTC
Bump version number for 3.4.2rc1 release.
Tip revision: 03776e3
test_readline.py
"""
Very minimal unittests for parts of the readline module.
"""
import os
import unittest
from test.support import run_unittest, import_module
from test.script_helper import assert_python_ok

# Skip tests if there is no readline module
readline = import_module('readline')

class TestHistoryManipulation (unittest.TestCase):
    """
    These tests were added to check that the libedit emulation on OSX and the
    "real" readline have the same interface for history manipulation. That's
    why the tests cover only a small subset of the interface.
    """

    @unittest.skipIf(not hasattr(readline, 'clear_history'),
                     "The history update test cannot be run because the "
                     "clear_history method is not available.")
    def testHistoryUpdates(self):
        readline.clear_history()

        readline.add_history("first line")
        readline.add_history("second line")

        self.assertEqual(readline.get_history_item(0), None)
        self.assertEqual(readline.get_history_item(1), "first line")
        self.assertEqual(readline.get_history_item(2), "second line")

        readline.replace_history_item(0, "replaced line")
        self.assertEqual(readline.get_history_item(0), None)
        self.assertEqual(readline.get_history_item(1), "replaced line")
        self.assertEqual(readline.get_history_item(2), "second line")

        self.assertEqual(readline.get_current_history_length(), 2)

        readline.remove_history_item(0)
        self.assertEqual(readline.get_history_item(0), None)
        self.assertEqual(readline.get_history_item(1), "second line")

        self.assertEqual(readline.get_current_history_length(), 1)


class TestReadline(unittest.TestCase):
    def test_init(self):
        # Issue #19884: Ensure that the ANSI sequence "\033[1034h" is not
        # written into stdout when the readline module is imported and stdout
        # is redirected to a pipe.
        rc, stdout, stderr = assert_python_ok('-c', 'import readline',
                                              TERM='xterm-256color')
        self.assertEqual(stdout, b'')


def test_main():
    run_unittest(TestHistoryManipulation, TestReadline)

if __name__ == "__main__":
    test_main()
back to top