2 new revisions:
Revision: afb8797fd244
Branch: default
Author: Pekka Klärck
Date: Wed May 29 07:18:32 2013
Log: new run: pass result object, not model object, to namespace
http://code.google.com/p/robotframework/source/detail?r=afb8797fd244
Revision: b964c70205a4
Branch: default
Author: Pekka Klärck
Date: Wed May 29 07:18:36 2013
Log: Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=b964c70205a4
==============================================================================
Revision: afb8797fd244
Branch: default
Author: Pekka Klärck
Date: Wed May 29 07:18:32 2013
Log: new run: pass result object, not model object, to namespace
http://code.google.com/p/robotframework/source/detail?r=afb8797fd244
Modified:
/src/robot/libraries/BuiltIn.py
/src/robot/new_running/runner.py
/src/robot/running/context.py
/src/robot/running/namespace.py
=======================================
--- /src/robot/libraries/BuiltIn.py Wed May 29 06:39:49 2013
+++ /src/robot/libraries/BuiltIn.py Wed May 29 07:18:32 2013
@@ -12,7 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-import os
import re
import time
@@ -1093,7 +1092,7 @@
if not isinstance(name, basestring):
raise RuntimeError('Keyword name must be a string.')
kw = Keyword(name, list(args))
- return kw.run(self._execution_context)
+ return kw.run(self._context)
def run_keywords(self, *keywords):
"""Executes all the given keywords in a sequence.
@@ -1134,7 +1133,7 @@
self.run_keyword(kw, *args)
except ExecutionFailed, err:
errors.extend(err.get_errors())
- if not err.can_continue(self._execution_context.teardown):
+ if not err.can_continue(self._context.teardown):
break
if errors:
raise ExecutionFailures(errors)
@@ -1517,7 +1516,7 @@
"""
suite = self._get_suite_in_teardown('Run Keyword If '
'All Critical Tests Passed')
- if suite.critical_stats.failed == 0:
+ if suite.statistics.critical.failed == 0:
return self.run_keyword(name, *args)
def run_keyword_if_any_critical_tests_failed(self, name, *args):
@@ -1531,7 +1530,7 @@
"""
suite = self._get_suite_in_teardown('Run Keyword If '
'Any Critical Tests Failed')
- if suite.critical_stats.failed > 0:
+ if suite.statistics.critical.failed > 0:
return self.run_keyword(name, *args)
def run_keyword_if_all_tests_passed(self, name, *args):
@@ -1544,7 +1543,7 @@
documentation for more details.
"""
suite = self._get_suite_in_teardown('Run Keyword If All Tests
Passed')
- if suite.all_stats.failed == 0:
+ if suite.statistics.all.failed == 0:
return self.run_keyword(name, *args)
def run_keyword_if_any_tests_failed(self, name, *args):
@@ -1557,11 +1556,11 @@
documentation for more details.
"""
suite = self._get_suite_in_teardown('Run Keyword If Any Tests
Failed')
- if suite.all_stats.failed > 0:
+ if suite.statistics.all.failed > 0:
return self.run_keyword(name, *args)
def _get_suite_in_teardown(self, kwname):
- if self._namespace.suite.status == 'RUNNING':
+ if not self._context.suite_teardown:
raise RuntimeError("Keyword '%s' can only be used in suite
teardown"
% kwname)
return self._namespace.suite
@@ -1903,7 +1902,7 @@
logging).
"""
try:
- old = self._execution_context.output.set_log_level(level)
+ old = self._context.output.set_log_level(level)
except DataError, err:
raise RuntimeError(unicode(err))
self._namespace.variables.set_global('${LOG_LEVEL}', level.upper())
@@ -2360,18 +2359,16 @@
utils.seq2str(tags)))
def _set_or_remove_tags(self, handler, suite=None, test=None):
-
if not (suite or test):
ns = self._namespace
if ns.test is None:
- if ns.suite.status != 'RUNNING':
+ if self._context.suite_teardown:
raise RuntimeError("'Set Tags' and 'Remove Tags'
keywords "
"cannot be used in suite teardown.")
self._set_or_remove_tags(handler, suite=ns.suite)
else:
self._set_or_remove_tags(handler, test=ns.test)
ns.variables.set_test('@{TEST_TAGS}', ns.test.tags[:])
- ns.suite._set_critical_tags(ns.suite.critical)
elif suite:
for sub in suite.suites:
self._set_or_remove_tags(handler, suite=sub)
@@ -2427,12 +2424,12 @@
ROBOT_LIBRARY_VERSION = get_version()
@property
- def _execution_context(self):
+ def _context(self):
return EXECUTION_CONTEXTS.current
@property
def _namespace(self):
- return self._execution_context.namespace
+ return self._context.namespace
def _get_namespace(self, top=False):
ctx = EXECUTION_CONTEXTS.top if top else EXECUTION_CONTEXTS.current
=======================================
--- /src/robot/new_running/runner.py Wed May 29 06:45:57 2013
+++ /src/robot/new_running/runner.py Wed May 29 07:18:32 2013
@@ -50,21 +50,21 @@
def start_suite(self, suite):
variables = GLOBAL_VARIABLES.copy()
variables.set_from_variable_table(suite.variables)
- ns = Namespace(suite,
+ result = TestSuite(name=suite.name,
+ source=suite.source,
+ starttime=utils.get_timestamp())
+ ns = Namespace(result,
self._context.namespace.variables if self._context
else None,
UserLibrary(suite.user_keywords),
- variables)
+ variables,
+ suite.imports)
EXECUTION_CONTEXTS.start_suite(ns, self._output,
self._settings.dry_run)
if not (self._suite_status and self._suite_status.failures): #
Skips imports if exiting
ns.handle_imports()
variables.resolve_delayed()
- result = TestSuite(name=suite.name,
- doc=self._resolve_setting(suite.doc),
- metadata=[(self._resolve_setting(n),
- self._resolve_setting(v))
- for n, v in suite.metadata.items()],
- source=suite.source,
- starttime=utils.get_timestamp())
+ result.doc = self._resolve_setting(suite.doc)
+ result.metadata = [(self._resolve_setting(n),
self._resolve_setting(v))
+ for n, v in suite.metadata.items()]
if not self.result:
result.set_criticality(suite.criticality.critical_tags,
suite.criticality.non_critical_tags)
=======================================
--- /src/robot/running/context.py Tue May 28 11:39:27 2013
+++ /src/robot/running/context.py Wed May 29 07:18:32 2013
@@ -59,7 +59,7 @@
self.namespace = namespace
self.output = output
self.dry_run = dry_run
- self._in_suite_teardown = False
+ self.suite_teardown = False
self._in_keyword_teardown = 0
self._started_keywords = 0
@@ -68,15 +68,15 @@
@property
@contextmanager
def in_suite_teardown(self):
- self._in_suite_teardown = True
+ self.suite_teardown = True
try:
yield
finally:
- self._in_suite_teardown = False
+ self.suite_teardown = False
@property
def teardown(self):
- if self._in_suite_teardown or self._in_keyword_teardown:
+ if self.suite_teardown or self._in_keyword_teardown:
return True
test = self.namespace.test
return test and test.status != 'RUNNING'
=======================================
--- /src/robot/running/namespace.py Wed May 22 06:46:06 2013
+++ /src/robot/running/namespace.py Wed May 29 07:18:32 2013
@@ -42,10 +42,18 @@
'OperatingSystem': 'DeprecatedOperatingSystem'}
_library_import_by_path_endings = ('.py', '.java', '.class', '/',
os.sep)
- def __init__(self, suite, parent_vars, user_keywords=None,
variables=None):
+ def __init__(self, suite, parent_vars, user_keywords=None,
variables=None,
+ imports=None):
if suite is not None:
LOGGER.info("Initializing namespace for test suite '%s'" %
suite.longname)
self.suite = suite
+ # TODO: REmove Compatibility
+ if imports is not None:
+ self._imports = imports
+ elif suite:
+ self._imports = suite.imports
+ else:
+ self._imports = []
# TODO: Remove variable and uk compatibility with old/new running
self.variables = self._create_variables(suite, parent_vars,
variables)
self._user_keywords = user_keywords if user_keywords is not None
else suite.user_keywords
@@ -58,7 +66,7 @@
def handle_imports(self):
self._import_default_libraries()
- self._handle_imports(self.suite.imports)
+ self._handle_imports(self._imports)
def _create_variables(self, suite, parent_vars, suite_variables=None):
if suite_variables is None:
==============================================================================
Revision: b964c70205a4
Branch: default
Author: Pekka Klärck
Date: Wed May 29 07:18:36 2013
Log: Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=b964c70205a4
--
---
You received this message because you are subscribed to the Google Groups "robotframework-commit" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.