Use __iter__ method of Attributes class in __repr__ method

Join method expects list, but six.itervalues(self._attributes)  returns
a Attribute instance, so we should use own __iter__ method for building
list of values.

Closes-Bug: #1473974

Change-Id: I7c5d4a5a8d0142156c3416347940b9e90ed8df5c
This commit is contained in:
Sergey Kraynev 2015-07-09 08:48:21 -04:00 committed by skraynev
parent 5a4a738bcb
commit 658d61ecee
2 changed files with 10 additions and 1 deletions

View File

@ -233,7 +233,7 @@ class Attributes(collections.Mapping):
def __repr__(self):
return ("Attributes for %s:\n\t" % self._resource_name +
'\n\t'.join(six.itervalues(self._attributes)))
'\n\t'.join(six.itervalues(self)))
def select_from_attribute(attribute_value, path):

View File

@ -110,6 +110,15 @@ class AttributesTest(common.HeatTestCase):
test_resolver)
self.assertEqual("value1", attribs['test1'])
def test_attributes_representation(self):
"""Test that attributes are displayed correct."""
test_resolver = lambda x: "value1"
attribs = attributes.Attributes('test resource',
self.attributes_schema,
test_resolver)
msg = 'Attributes for test resource:\n\tvalue1\n\tvalue1\n\tvalue1'
self.assertEqual(msg, str(attribs))
def test_get_attribute_none(self):
"""Test that we get the attribute values we expect."""
test_resolver = lambda x: None