Revision: 3336
Author: pekka.klarck
Date: Wed May 19 06:28:05 2010
Log: tables can report invalid syntax via their parent
http://code.google.com/p/robotframework/source/detail?r=3336

Modified:
 /trunk/src/robot/parsing/newmodel.py

=======================================
--- /trunk/src/robot/parsing/newmodel.py        Wed May 19 05:16:47 2010
+++ /trunk/src/robot/parsing/newmodel.py        Wed May 19 06:28:05 2010
@@ -16,6 +16,7 @@

 from robot.errors import DataError
 from robot.variables import is_var
+from robot.output import LOGGER

 from settings import (Documentation, Fixture, Timeout, Tags, Metadata,
                       Library, Resource, Variables, Arguments, Return)
@@ -41,15 +42,21 @@
         name = name.replace('_', ' ')
         return name.title() if name.islower() else name

+    def report_invalid_syntax(self, table, message, level='ERROR'):
+        initfile = getattr(self, 'initfile', None)
+ path = os.path.join(self.source, initfile) if initfile else self.source
+        LOGGER.write("Invalid syntax in file '%s' in table '%s': %s"
+                     % (path, table, message), level)
+

 class TestCaseFile(_TestData):

     def __init__(self, source=None):
         _TestData.__init__(self, source)
-        self.setting_table = SettingTable()
-        self.variable_table = VariableTable()
-        self.testcase_table = TestCaseTable()
-        self.keyword_table = KeywordTable()
+        self.setting_table = SettingTable(self)
+        self.variable_table = VariableTable(self)
+        self.testcase_table = TestCaseTable(self)
+        self.keyword_table = KeywordTable(self)
         if source:
             FileReader().read(source, self)

@@ -64,10 +71,10 @@
     def __init__(self, source=None):
         _TestData.__init__(self, source)
         self.initfile = None
-        self.setting_table = SettingTable()
-        self.variable_table = VariableTable()
+        self.setting_table = SettingTable(self)
+        self.variable_table = VariableTable(self)
self.testcase_table = TestCaseTableNotAllowed('test suite init file')
-        self.keyword_table = KeywordTable()
+        self.keyword_table = KeywordTable(self)
         self.children = []
         if source:
             DirectoryReader().read(source, self)
@@ -82,12 +89,20 @@


 class _Table(object):
-    pass
+
+    def __init__(self, parent):
+        self.parent = parent
+
+    def report_invalid_syntax(self, message, level='ERROR'):
+        # TODO: Use the real table name here when headers are available
+        table = type(self).__name__.replace('Table', '')
+        self.parent.report_invalid_syntax(table, message, level)


 class SettingTable(_Table):

-    def __init__(self):
+    def __init__(self, parent):
+        _Table.__init__(self, parent)
         self.doc = Documentation()
         self.suite_setup = Fixture()
         self.suite_teardown = Fixture()
@@ -125,7 +140,8 @@

 class VariableTable(_Table):

-    def __init__(self):
+    def __init__(self, parent):
+        _Table.__init__(self, parent)
         self.variables = []

     def add(self, name, value, comment=None):
@@ -137,7 +153,8 @@

 class TestCaseTable(_Table):

-    def __init__(self):
+    def __init__(self, parent):
+        _Table.__init__(self, parent)
         self.tests = []

     def add(self, name):
@@ -150,7 +167,8 @@

 class KeywordTable(_Table):

-    def __init__(self):
+    def __init__(self, parent):
+        _Table.__init__(self, parent)
         self.keywords = []

     def add(self, name):

Reply via email to