 28f68b5d1c
			
		
	
	28f68b5d1c
	
	
	
		
			
			Replace assertEqual(None, *) with assertIsNone in tests to have more clear messages in case of failure. Change-Id: I9a30b67f0329280e06e746af9b82b448552a2a52 Closes-bug: #1280522
		
			
				
	
	
		
			178 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #   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.
 | |
| #
 | |
| #   Copyright 2015 IBM Corp.
 | |
| 
 | |
| import json
 | |
| import six
 | |
| import yaml
 | |
| 
 | |
| from heatclient.common import format_utils
 | |
| from heatclient.tests.unit.osc import utils
 | |
| 
 | |
| 
 | |
| columns = ['col1', 'col2', 'col3']
 | |
| data = ['abcde', ['fg', 'hi', 'jk'], {'lmnop': 'qrstu'}]
 | |
| 
 | |
| 
 | |
| class ShowJson(format_utils.JsonFormat):
 | |
|     def take_action(self, parsed_args):
 | |
|         return columns, data
 | |
| 
 | |
| 
 | |
| class ShowYaml(format_utils.YamlFormat):
 | |
|     def take_action(self, parsed_args):
 | |
|         return columns, data
 | |
| 
 | |
| 
 | |
| class ShowShell(format_utils.ShellFormat):
 | |
|     def take_action(self, parsed_args):
 | |
|         return columns, data
 | |
| 
 | |
| 
 | |
| class ShowValue(format_utils.ValueFormat):
 | |
|     def take_action(self, parsed_args):
 | |
|         return columns, data
 | |
| 
 | |
| 
 | |
| class TestFormats(utils.TestCommand):
 | |
| 
 | |
|     def test_json_format(self):
 | |
|         self.cmd = ShowJson(self.app, None)
 | |
|         parsed_args = self.check_parser(self.cmd, [], [])
 | |
|         expected = json.dumps(dict(zip(columns, data)), indent=2)
 | |
| 
 | |
|         self.cmd.run(parsed_args)
 | |
| 
 | |
|         self.assertEqual(expected, self.app.stdout.make_string())
 | |
| 
 | |
|     def test_yaml_format(self):
 | |
|         self.cmd = ShowYaml(self.app, None)
 | |
|         parsed_args = self.check_parser(self.cmd, [], [])
 | |
|         expected = yaml.safe_dump(dict(zip(columns, data)),
 | |
|                                   default_flow_style=False)
 | |
| 
 | |
|         self.cmd.run(parsed_args)
 | |
| 
 | |
|         self.assertEqual(expected, self.app.stdout.make_string())
 | |
| 
 | |
|     def test_shell_format(self):
 | |
|         self.cmd = ShowShell(self.app, None)
 | |
|         parsed_args = self.check_parser(self.cmd, [], [])
 | |
|         expected = '''\
 | |
| col1="abcde"
 | |
| col2="['fg', 'hi', 'jk']"
 | |
| col3="{'lmnop': 'qrstu'}"
 | |
| '''
 | |
| 
 | |
|         self.cmd.run(parsed_args)
 | |
| 
 | |
|         self.assertEqual(expected, self.app.stdout.make_string())
 | |
| 
 | |
|     def test_value_format(self):
 | |
|         self.cmd = ShowValue(self.app, None)
 | |
|         parsed_args = self.check_parser(self.cmd, [], [])
 | |
|         expected = '''\
 | |
| abcde
 | |
| ['fg', 'hi', 'jk']
 | |
| {'lmnop': 'qrstu'}
 | |
| '''
 | |
| 
 | |
|         self.cmd.run(parsed_args)
 | |
| 
 | |
|         self.assertEqual(expected, self.app.stdout.make_string())
 | |
| 
 | |
|     def test_indent_and_truncate(self):
 | |
|         self.assertIsNone(format_utils.indent_and_truncate(None))
 | |
|         self.assertIsNone(format_utils.indent_and_truncate(None,
 | |
|                                                            truncate=True))
 | |
|         self.assertEqual(
 | |
|             '',
 | |
|             format_utils.indent_and_truncate(''))
 | |
|         self.assertEqual(
 | |
|             'one',
 | |
|             format_utils.indent_and_truncate('one'))
 | |
|         self.assertIsNone(format_utils.indent_and_truncate(None, spaces=2))
 | |
|         self.assertEqual(
 | |
|             '',
 | |
|             format_utils.indent_and_truncate('', spaces=2))
 | |
|         self.assertEqual(
 | |
|             '  one',
 | |
|             format_utils.indent_and_truncate('one', spaces=2))
 | |
|         self.assertEqual(
 | |
|             'one\ntwo\nthree\nfour\nfive',
 | |
|             format_utils.indent_and_truncate('one\ntwo\nthree\nfour\nfive'))
 | |
|         self.assertEqual(
 | |
|             'three\nfour\nfive',
 | |
|             format_utils.indent_and_truncate(
 | |
|                 'one\ntwo\nthree\nfour\nfive',
 | |
|                 truncate=True,
 | |
|                 truncate_limit=3))
 | |
|         self.assertEqual(
 | |
|             '  and so on\n  three\n  four\n  five\n  truncated',
 | |
|             format_utils.indent_and_truncate(
 | |
|                 'one\ntwo\nthree\nfour\nfive',
 | |
|                 spaces=2,
 | |
|                 truncate=True,
 | |
|                 truncate_limit=3,
 | |
|                 truncate_prefix='and so on',
 | |
|                 truncate_postfix='truncated'))
 | |
| 
 | |
|     def test_print_software_deployment_output(self):
 | |
|         out = six.StringIO()
 | |
|         format_utils.print_software_deployment_output(
 | |
|             {'deploy_stdout': ''}, out=out, name='deploy_stdout')
 | |
|         self.assertEqual(
 | |
|             '  deploy_stdout: |\n\n',
 | |
|             out.getvalue())
 | |
|         ov = {'deploy_stdout': '', 'deploy_stderr': '1\n2\n3\n4\n5\n6\n7\n8\n9'
 | |
|                                                     '\n10\n11',
 | |
|               'deploy_status_code': 0}
 | |
|         out = six.StringIO()
 | |
|         format_utils.print_software_deployment_output(ov, out=out,
 | |
|                                                       name='deploy_stderr')
 | |
|         self.assertEqual(
 | |
|             u'''\
 | |
|   deploy_stderr: |
 | |
|     ...
 | |
|     2
 | |
|     3
 | |
|     4
 | |
|     5
 | |
|     6
 | |
|     7
 | |
|     8
 | |
|     9
 | |
|     10
 | |
|     11
 | |
|     (truncated, view all with --long)
 | |
| ''', out.getvalue())
 | |
|         out = six.StringIO()
 | |
|         format_utils.print_software_deployment_output(ov, out=out,
 | |
|                                                       name='deploy_stderr',
 | |
|                                                       long=True)
 | |
|         self.assertEqual(
 | |
|             u'''\
 | |
|   deploy_stderr: |
 | |
|     1
 | |
|     2
 | |
|     3
 | |
|     4
 | |
|     5
 | |
|     6
 | |
|     7
 | |
|     8
 | |
|     9
 | |
|     10
 | |
|     11
 | |
| ''', out.getvalue())
 |