summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/multiline_transcript.txt10
-rw-r--r--tests/test_cmd2.py21
-rw-r--r--tests/test_transcript.py26
3 files changed, 57 insertions, 0 deletions
diff --git a/tests/multiline_transcript.txt b/tests/multiline_transcript.txt
new file mode 100644
index 00000000..5fe9122c
--- /dev/null
+++ b/tests/multiline_transcript.txt
@@ -0,0 +1,10 @@
+# cmd2 will skip any lines
+# which occur before a valid
+# command prompt
+
+(Cmd) orate This is a test
+> of the
+> emergency broadcast system
+This is a test
+of the
+emergency broadcast system
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index 55c7e13e..33c4acb3 100644
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -559,4 +559,25 @@ def test_base_cmdloop_without_queue():
assert out == expected
+def test_cmdloop_without_rawinput():
+ # Create a cmd2.Cmd() instance and make sure basic settings are like we want for test
+ app = cmd2.Cmd()
+ app.use_rawinput = False
+ app.intro = 'Hello World, this is an intro ...'
+ app.stdout = StdOut()
+
+ # Mock out the input call so we don't actually wait for a user's response on stdin
+ m = mock.MagicMock(name='input', return_value='quit')
+ sm.input = m
+
+ # Need to patch sys.argv so cmd2 doesn't think it was called with arguments equal to the py.test args
+ testargs = ["prog"]
+ expected = app.intro + '\n{}'.format(app.prompt)
+ with mock.patch.object(sys, 'argv', testargs):
+ # Run the command loop
+ app.cmdloop()
+ out = app.stdout.buffer
+ assert out == expected
+
+
diff --git a/tests/test_transcript.py b/tests/test_transcript.py
index 36e537bc..1aab653c 100644
--- a/tests/test_transcript.py
+++ b/tests/test_transcript.py
@@ -283,3 +283,29 @@ def test_transcript_from_cmdloop(request, capsys):
else:
assert err == ''
assert out == ''
+
+
+def test_multiline_command_transcript_with_comments_at_beginning(request, capsys):
+ # Create a cmd2.Cmd() instance and make sure basic settings are like we want for test
+ app = CmdLineApp()
+
+ # Get location of the transcript
+ test_dir = os.path.dirname(request.module.__file__)
+ transcript_file = os.path.join(test_dir, 'multiline_transcript.txt')
+
+ # Need to patch sys.argv so cmd2 doesn't think it was called with arguments equal to the py.test args
+ testargs = ['prog', '-t', transcript_file]
+ with mock.patch.object(sys, 'argv', testargs):
+ # Run the command loop
+ app.cmdloop()
+
+ # Check for the unittest "OK" condition for the 1 test which ran
+ expected_start = ".\n----------------------------------------------------------------------\nRan 1 test in"
+ expected_end = "s\n\nOK\n\n"
+ out, err = capsys.readouterr()
+ if six.PY3:
+ assert err.startswith(expected_start)
+ assert err.endswith(expected_end)
+ else:
+ assert err == ''
+ assert out == ''