diff options
author | Todd Leonhardt <todd.leonhardt@gmail.com> | 2018-07-12 10:09:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-12 10:09:14 -0400 |
commit | 4fbe263ae6cb3bfac461cab6daf92364b1620e5f (patch) | |
tree | 2109d0d318ead59b2c2e658d0aa0b5e717902e82 | |
parent | 5d2133ae8e67435d1f2af17cd80d0490c0ba0f82 (diff) | |
parent | 87ab9c8a86d51966fee94f53a1b136d231d764e5 (diff) | |
download | cmd2-git-4fbe263ae6cb3bfac461cab6daf92364b1620e5f.tar.gz |
Merge pull request #468 from python-cmd2/hist_tests
Added unit tests for persistent history file
-rw-r--r-- | tests/test_cmd2.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py index e5dd3baa..25d1db3f 100644 --- a/tests/test_cmd2.py +++ b/tests/test_cmd2.py @@ -1825,3 +1825,74 @@ def test_onecmd_raw_str_quit(base_app): assert stop assert out == '' + +@pytest.fixture(scope="session") +def hist_file(): + fd, filename = tempfile.mkstemp(prefix='hist_file', suffix='.txt') + os.close(fd) + yield filename + # teardown code + try: + os.remove(filename) + except FileNotFoundError: + pass + +def test_existing_history_file(hist_file, capsys): + import atexit + import readline + + # Create the history file before making cmd2 app + with open(hist_file, 'w'): + pass + + # Create a new cmd2 app + app = cmd2.Cmd(persistent_history_file=hist_file) + out, err = capsys.readouterr() + + # Make sure there were no errors + assert err == '' + + # Unregister the call to write_history_file that cmd2 did + atexit.unregister(readline.write_history_file) + + # Remove created history file + os.remove(hist_file) + + +def test_new_history_file(hist_file, capsys): + import atexit + import readline + + # Remove any existing history file + try: + os.remove(hist_file) + except OSError: + pass + + # Create a new cmd2 app + app = cmd2.Cmd(persistent_history_file=hist_file) + out, err = capsys.readouterr() + + # Make sure there were no errors + assert err == '' + + # Unregister the call to write_history_file that cmd2 did + atexit.unregister(readline.write_history_file) + + # Remove created history file + os.remove(hist_file) + +def test_bad_history_file_path(capsys, request): + # Use a directory path as the history file + test_dir = os.path.dirname(request.module.__file__) + + # Create a new cmd2 app + app = cmd2.Cmd(persistent_history_file=test_dir) + out, err = capsys.readouterr() + + if sys.platform == 'win32': + # pyreadline masks the read exception. Therefore the bad path error occurs when trying to write the file. + assert 'readline cannot write' in err + else: + # GNU readline raises an exception upon trying to read the directory as a file + assert 'readline cannot read' in err |