Revision: 3290
Author: pekka.klarck
Date: Mon May 17 02:46:19 2010
Log: use name/args and other descriptive attributes instead of generic
value with fixtures and timeouts settings
http://code.google.com/p/robotframework/source/detail?r=3290
Modified:
/trunk/src/robot/parsing/newmodel.py
/trunk/utest/parsing/test_model.py
=======================================
--- /trunk/src/robot/parsing/newmodel.py Wed May 12 07:49:09 2010
+++ /trunk/src/robot/parsing/newmodel.py Mon May 17 02:46:19 2010
@@ -38,6 +38,7 @@
def edited(self):
return False
+
class SettingTable(DataTable):
def __init__(self):
@@ -74,6 +75,7 @@
def edited(self):
return any(setting.edited() for setting in self)
+
class VariableTable(DataTable):
def __init__(self):
@@ -82,6 +84,7 @@
def add(self, name, value):
self.variables.append(Variable(name, value))
+
class TestCaseTable(DataTable):
def __init__(self):
@@ -91,6 +94,7 @@
self.tests.append(TestCase(name))
return self.tests[-1]
+
class KeywordTable(DataTable):
def __init__(self):
@@ -115,6 +119,7 @@
def _string_value(self, value):
return value if isinstance(value, basestring) else ' '.join(value)
+
class Documentation(Setting):
def __init__(self):
@@ -123,38 +128,68 @@
def set(self, value):
self.value = self._string_value(value)
+
class Fixture(Setting):
- pass
-
-class Metadata(Setting):
-
- def __init__(self, name, value):
- self.name = name
- self.value = self._string_value(value)
+
+ def __init__(self):
+ self.name = None
+ self.args = []
+
+ def set(self, value):
+ self.name = value[0] if value else ''
+ self.args = value[1:]
+
+ def edited(self):
+ return self.name is not None
+
class Timeout(Setting):
- pass
+
+ def __init__(self):
+ self.value = None
+ self.message = ''
+
+ def set(self, value):
+ self.value = value[0] if value else ''
+ self.message = ' '.join(value[1:])
+
+ def edited(self):
+ return self.value is not None
+
class Tags(Setting):
pass
+
class Arguments(Setting):
pass
+
class Return(Setting):
pass
+
+class Metadata(Setting):
+
+ def __init__(self, name, value):
+ self.name = name
+ self.value = self._string_value(value)
+
+
class Import(Setting):
def __init__(self, value):
self.value = value
+
class Library(Import):
pass
+
class Resource(Import):
pass
+
class Variables(Import):
pass
=======================================
--- /trunk/utest/parsing/test_model.py Wed May 12 07:49:09 2010
+++ /trunk/utest/parsing/test_model.py Mon May 17 02:46:19 2010
@@ -39,7 +39,7 @@
assert_equal(self.table.metadata, [])
assert_equal(self.table.imports, [])
- def test_empty_doc(self):
+ def test_doc_default(self):
assert_equal(self.table.doc.value, '')
def test_set_doc_with_string(self):
@@ -50,6 +50,38 @@
self.table.doc.set(['hello', 'world'])
assert_equal(self.table.doc.value, 'hello world')
+ def test_fixture_default(self):
+ assert_equal(self.table.suite_setup.name, None)
+ assert_equal(self.table.suite_setup.args, [])
+ assert_false(hasattr(self.table.suite_setup, 'value'))
+
+ def test_set_fixture(self):
+ self.table.suite_teardown.set(['Name', 'a1', 'a2'])
+ assert_equal(self.table.suite_teardown.name, 'Name')
+ assert_equal(self.table.suite_teardown.args, ['a1', 'a2'])
+ assert_false(hasattr(self.table.suite_teardown, 'value'))
+
+ def test_set_fixture_with_empty_value(self):
+ self.table.test_teardown.set([])
+ assert_equal(self.table.test_teardown.name, '')
+ assert_equal(self.table.test_teardown.args, [])
+
+ def test_timeout_default(self):
+ assert_equal(self.table.test_timeout.value, None)
+ assert_equal(self.table.test_timeout.message, '')
+ assert_false(hasattr(self.table.suite_setup, 'value'))
+
+ def test_set_timeout(self):
+ self.table.test_timeout.set(['1s', 'msg', 'in multiple', 'cell'])
+ assert_equal(self.table.test_timeout.value, '1s')
+ assert_equal(self.table.test_timeout.message, 'msg in multiple
cell')
+ assert_false(hasattr(self.table.suite_teardown, 'value'))
+
+ def test_set_timeout_with_empty_value(self):
+ self.table.test_timeout.set([])
+ assert_equal(self.table.test_timeout.value, '')
+ assert_equal(self.table.test_timeout.message, '')
+
def test_metadata(self):
self.table.add_metadata('Foo', 'bar')
self.table.add_metadata('boo', ['f', 'a', 'r'])