summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKevin Van Brunt <kmvanbrunt@gmail.com>2018-07-12 03:38:35 -0400
committerKevin Van Brunt <kmvanbrunt@gmail.com>2018-07-12 03:38:35 -0400
commit95e6dfa67edd6bfe7cd6c19e484318ccf5cd6ab5 (patch)
tree03cbf3e5bc2aafa033b5f41faa4a3dc3b4eb03b2 /tests
parent5d2133ae8e67435d1f2af17cd80d0490c0ba0f82 (diff)
downloadcmd2-git-95e6dfa67edd6bfe7cd6c19e484318ccf5cd6ab5.tar.gz
Added unit tests for persistent history file
Diffstat (limited to 'tests')
-rw-r--r--tests/test_cmd2.py63
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