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