Revision: 3780
Author: jussi.ao.malinen
Date: Tue Jun 15 08:32:16 2010
Log: fixed settings to handle empty values in as_list method
http://code.google.com/p/robotframework/source/detail?r=3780
Modified:
/trunk/src/robot/parsing/settings.py
/trunk/utest/parsing/test_model.py
=======================================
--- /trunk/src/robot/parsing/settings.py Wed Jun 9 05:24:28 2010
+++ /trunk/src/robot/parsing/settings.py Tue Jun 15 08:32:16 2010
@@ -64,7 +64,18 @@
return ret
def _data_as_list(self):
- return [self.setting_name] + self.value
+ ret = [self.setting_name]
+ if self.value:
+ ret.extend(self.value)
+ return ret
+
+ def _extend_from_third_position(self, ret, tail):
+ if len(ret) == 2:
+ ret.extend(tail)
+ elif len(ret) == 1:
+ ret.extend([''] + tail)
+ else:
+ raise ValueError('Illegal length %d' % len(ret))
class Documentation(_Setting):
@@ -91,7 +102,10 @@
return self.value is not None
def _data_as_list(self):
- return [self.setting_name, self.value]
+ ret = [self.setting_name]
+ if self.value:
+ ret.append(self.value)
+ return ret
class Fixture(_Setting):
@@ -110,7 +124,12 @@
return self.name is not None
def _data_as_list(self):
- return [self.setting_name, self.name] + self.args
+ ret = [self.setting_name]
+ if self.name:
+ ret.append(self.name)
+ if self.args:
+ self._extend_from_third_position(ret, self.args)
+ return ret
class Timeout(_Setting):
@@ -129,7 +148,12 @@
return self.value is not None
def _data_as_list(self):
- return [self.setting_name, self.value, self.message]
+ ret = [self.setting_name]
+ if self.value:
+ ret.append(self.value)
+ if self.message:
+ self._extend_from_third_position(ret, [self.message])
+ return ret
class Tags(_Setting):
=======================================
--- /trunk/utest/parsing/test_model.py Tue Jun 8 04:31:33 2010
+++ /trunk/utest/parsing/test_model.py Tue Jun 15 08:32:16 2010
@@ -323,5 +323,41 @@
assert_equal(loop.range, range)
+class TestSettings(unittest.TestCase):
+
+ def test_timeout_patch(self):
+ timeout = Timeout('Timeout')
+ assert_equals(timeout.as_list(),['Timeout'])
+ timeout.message='boo'
+ assert_equals(timeout.as_list(),['Timeout', '', 'boo'])
+ timeout.message=''
+ timeout.value='1 second'
+ assert_equals(timeout.as_list(),['Timeout', '1 second'])
+ timeout.message='boo'
+ assert_equals(timeout.as_list(),['Timeout', '1 second', 'boo'])
+
+ def test_settings_patch(self):
+ tags = Tags('Tags')
+ assert_equals(tags.as_list(),['Tags'])
+ tags.value = ['tag1','tag2']
+ assert_equals(tags.as_list(),['Tags', 'tag1', 'tag2'])
+
+ def test_fixture_patch(self):
+ fixture = Fixture('Teardown')
+ assert_equals(fixture.as_list(), ['Teardown'])
+ fixture.name = 'Keyword'
+ assert_equals(fixture.as_list(), ['Teardown', 'Keyword'])
+ fixture.args = ['arg1', 'arg2']
+ assert_equals(fixture.as_list(),
['Teardown', 'Keyword', 'arg1', 'arg2'])
+ fixture.name = ''
+ assert_equals(fixture.as_list(), ['Teardown', '', 'arg1', 'arg2'])
+
+ def test_template_patch(self):
+ template = Template('Template')
+ assert_equals(template.as_list(),['Template'])
+ template.value = 'value'
+ assert_equals(template.as_list(),['Template', 'value'])
+
+
if __name__ == "__main__":
unittest.main()