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()

Reply via email to