Make sure cli CommandFailed prints out stdout and stderr

Having a CommandFailed exception without stdout is very confusing, lets
fix that.

subprocess.CalledProcessError doesn't print out stderr or stdout so use
our own error that does.

Change-Id: I3bf75d6f526bdc58e64bbc7d83911e9d63e4b801
This commit is contained in:
Joe Gordon
2014-07-18 11:34:39 +02:00
parent ecf608ed0d
commit de34db3ee3

30
test_command_failed.py Normal file
View File

@@ -0,0 +1,30 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from tempest import cli
from tempest.tests import base
class TestOutputParser(base.TestCase):
def test_command_failed_exception(self):
returncode = 1
cmd = "foo"
stdout = "output"
stderr = "error"
try:
raise cli.CommandFailed(returncode, cmd, stdout, stderr)
except cli.CommandFailed as e:
self.assertIn(str(returncode), str(e))
self.assertIn(cmd, str(e))
self.assertIn(stdout, str(e))
self.assertIn(stderr, str(e))