diff options
-rw-r--r-- | tests/multiline_transcript.txt | 10 | ||||
-rw-r--r-- | tests/test_cmd2.py | 21 | ||||
-rw-r--r-- | tests/test_transcript.py | 26 |
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 == '' |