diff options
author | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2018-07-12 03:38:35 -0400 |
---|---|---|
committer | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2018-07-12 03:38:35 -0400 |
commit | 95e6dfa67edd6bfe7cd6c19e484318ccf5cd6ab5 (patch) | |
tree | 03cbf3e5bc2aafa033b5f41faa4a3dc3b4eb03b2 /tests | |
parent | 5d2133ae8e67435d1f2af17cd80d0490c0ba0f82 (diff) | |
download | cmd2-git-95e6dfa67edd6bfe7cd6c19e484318ccf5cd6ab5.tar.gz |
Added unit tests for persistent history file
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_cmd2.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py index e5dd3baa..b695afbc 100644 --- a/tests/test_cmd2.py +++ b/tests/test_cmd2.py @@ -1825,3 +1825,66 @@ def test_onecmd_raw_str_quit(base_app): assert stop assert out == '' + +def test_existing_history_file(capsys, request): + import atexit + import readline + + # Create path to a history file + test_dir = os.path.dirname(request.module.__file__) + hist_file = os.path.join(test_dir, 'hist_file') + + # 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() + + # Unregister the call to write_history_file that cmd2 did + atexit.unregister(readline.write_history_file) + + # Remove created history file and make sure there were no errors + os.remove(hist_file) + assert err == '' + +def test_new_history_file(capsys, request): + import atexit + import readline + + # Create path to a history file + test_dir = os.path.dirname(request.module.__file__) + hist_file = os.path.join(test_dir, 'hist_file') + + # 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() + + # Unregister the call to write_history_file that cmd2 did + atexit.unregister(readline.write_history_file) + + # Remove created history file and make sure there were no errors + os.remove(hist_file) + assert err == '' + +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 |