Revision: 3372
Author: jussi.ao.malinen
Date: Fri May 21 02:00:59 2010
Log: fixed defaults handling
http://code.google.com/p/robotframework/source/detail?r=3372

Modified:
 /trunk/src/robot/running/model.py

=======================================
--- /trunk/src/robot/running/model.py   Thu May 20 06:13:05 2010
+++ /trunk/src/robot/running/model.py   Fri May 21 02:00:59 2010
@@ -17,6 +17,7 @@
 from robot import utils
 from robot.common import BaseTestSuite, BaseTestCase
 from robot.parsing import TestCaseFile, TestDataDirectory
+from robot.parsing.settings import Fixture
 from robot.errors import ExecutionFailed, DataError
 from robot.variables import GLOBAL_VARIABLES
 from robot.output import LOGGER
@@ -52,8 +53,8 @@

 def _get_directory_or_file_suite(path, suite_names):
     if os.path.isdir(path):
- return TestDataDirectory(path) #FIXME: filter suites: , suite_names)
-    return TestCaseFile(path)
+ return TestDataDirectory(source=path) #FIXME: filter suites: , suite_names)
+    return TestCaseFile(source=path)


 class ExecutionContext(object):
@@ -130,7 +131,7 @@

 class RunnableTestSuite(BaseTestSuite):

-    def __init__(self, data, testdefaults=None, parent=None):
+    def __init__(self, data, parent=None):
         BaseTestSuite.__init__(self, data.name, data.source, parent)
         self.variables = GLOBAL_VARIABLES.copy()
         self.variables.set_from_variable_table(data.variable_table)
@@ -143,15 +144,10 @@
                            data.setting_table.suite_setup.args)
         self.teardown = Teardown(data.setting_table.suite_teardown.name,
                                  data.setting_table.suite_teardown.args)
-# FIXME: higher level settings
-#        if not testdefaults:
-#            testdefaults = _TestCaseDefaults()
-#        testdefaults.add_defaults(data)
-# FIXME: directory suites
         for suite in data.children:
-            RunnableTestSuite(suite, testdefaults, parent=self)
+            RunnableTestSuite(suite, parent=self)
         for test in data.testcase_table:
-            RunnableTestCase(test, testdefaults, parent=self)
+            RunnableTestCase(test, parent=self)
         self._run_mode_exit_on_failure = False
         self._run_mode_dry_run = False

@@ -237,19 +233,16 @@

 class RunnableTestCase(BaseTestCase):

-    def __init__(self, data, defaults, parent):
-        BaseTestCase.__init__(self, data.name, parent)
-        self.doc = data.doc.value
-        self.setup = Setup(data.setup.name, data.setup.args)
-        # FIXME: higher level settings
-        # utils.get_not_none(data.setup, defaults.test_setup)
-        self.teardown = Teardown(data.teardown.name, data.teardown.args)
-        #utils.get_not_none(data.teardown,
-        #             defaults.test_teardown)
-        self.tags = data.tags.value #defaults.force_tags \
-                    #+ utils.get_not_none(data.tags, defaults.default_tags)
- self.timeout = TestTimeout(data.timeout.value, data.timeout.message)
-        self.keywords = Keywords(data.steps)
+    def __init__(self, tc_data, parent):
+        BaseTestCase.__init__(self, tc_data.name, parent)
+        self.doc = tc_data.doc.value
+ setup = tc_data.setup.is_set() and tc_data.setup or self._get_parent_test_setup(tc_data.parent.parent)
+        self.setup = Setup(setup.name, setup.args)
+ teardown = tc_data.teardown.is_set() and tc_data.teardown or self._get_parent_test_teardown(tc_data.parent.parent)
+        self.teardown = Teardown(teardown.name, teardown.args)
+        self.tags = self._get_tags(tc_data)
+ self.timeout = TestTimeout(tc_data.timeout.value, tc_data.timeout.message)
+        self.keywords = Keywords(tc_data.steps)

     def run(self, context, suite_errors):
         self._suite_errors = suite_errors
@@ -334,33 +327,24 @@
self.elapsedtime = utils.get_elapsed_time(self.starttime, self.endtime)
         context.end_test(self)

-
-class _TestCaseDefaults:
-
-    def __init__(self):
-        self.force_tags = []
-        self.default_tags = []
-        self.test_setup = []
-        self.test_teardown = []
-        self.test_timeout = []
-
-    def add_defaults(self, suite):
-        if suite.force_tags:
-            self.force_tags.extend(suite.force_tags)
-        if suite.default_tags:
-            self.default_tags = suite.default_tags
-        if suite.test_setup:
-            self.test_setup = suite.test_setup
-        if suite.test_teardown:
-            self.test_teardown = suite.test_teardown
-        if suite.test_timeout:
-            self.test_timeout = suite.test_timeout
-
-    def copy(self):
-        copy = _TestCaseDefaults()
-        copy.force_tags = self.force_tags[:]
-        copy.default_tags = self.default_tags[:]
-        copy.test_setup = self.test_setup[:]
-        copy.test_teardown = self.test_teardown[:]
-        copy.test_timeout = self.test_timeout[:]
-        return copy
+    def _get_tags(self, tc_data):
+        print tc_data.parent.parent
+        force_tags = self._get_parent_force_tags(tc_data.parent.parent)
+        tc_tags = tc_data.tags.is_set() and tc_data.tags.value or \
+                    tc_data.parent.parent.setting_table.default_tags.value
+        return list(set(tc_tags + force_tags))
+
+    def _get_parent_force_tags(self, data):
+ parent_tags = data.parent and self._get_parent_force_tags(data.parent) or []
+        return data.setting_table.force_tags.value + parent_tags
+
+    def _get_parent_test_setup(self, data):
+        if data.setting_table.test_setup.is_set():
+            return data.setting_table.test_setup
+ return data.parent and self._get_parent_test_setup(data.parent) or Fixture()
+
+    def _get_parent_test_teardown(self, data):
+        if data.setting_table.test_teardown.is_set():
+            return data.setting_table.test_teardown
+ return data.parent and self._get_parent_test_teardown(data.parent) or Fixture()
+

Reply via email to