2 new revisions:
Revision: 5e8d282359d1
Author: Janne Härkönen <[email protected]>
Date: Thu Nov 3 06:05:03 2011
Log: _Critical: added nonzero
http://code.google.com/p/robotframework/source/detail?r=5e8d282359d1
Revision: c61dd9b963db
Author: Janne Härkönen <[email protected]>
Date: Thu Nov 3 06:05:49 2011
Log: resultmodel: implemented test criticality and test inclusion in
combin...
http://code.google.com/p/robotframework/source/detail?r=c61dd9b963db
==============================================================================
Revision: 5e8d282359d1
Author: Janne Härkönen <[email protected]>
Date: Thu Nov 3 06:05:03 2011
Log: _Critical: added nonzero
http://code.google.com/p/robotframework/source/detail?r=5e8d282359d1
Modified:
/src/robot/common/model.py
=======================================
--- /src/robot/common/model.py Wed Jul 13 08:01:24 2011
+++ /src/robot/common/model.py Thu Nov 3 06:05:03 2011
@@ -419,3 +419,6 @@
if self.is_critical(tag):
return True
return not self.tags
+
+ def __nonzero__(self):
+ return bool(self.tags or self.nons)
==============================================================================
Revision: c61dd9b963db
Author: Janne Härkönen <[email protected]>
Date: Thu Nov 3 06:05:49 2011
Log: resultmodel: implemented test criticality and test inclusion in
combined tag statistics
http://code.google.com/p/robotframework/source/detail?r=c61dd9b963db
Modified:
/src/robot/common/statistics.py
/src/robot/result/builders.py
/src/robot/result/configurer.py
/src/robot/result/model.py
/utest/result/test_configurer.py
/utest/result/test_resultmodel.py
=======================================
--- /src/robot/common/statistics.py Wed Oct 26 05:32:37 2011
+++ /src/robot/common/statistics.py Thu Nov 3 06:05:49 2011
@@ -92,7 +92,7 @@
self.add_suite(suite)
def _is_included(self, test):
- return test.critical
+ return test.critical == 'yes'
def _subsuite_stats(self, suite):
return suite.critical_stats
=======================================
--- /src/robot/result/builders.py Thu Nov 3 05:15:42 2011
+++ /src/robot/result/builders.py Thu Nov 3 06:05:49 2011
@@ -217,7 +217,7 @@
return result
def _set_criticality(self, elem, result):
- result.critical = elem.get('critical', 'yes')
+ result._critical = elem.get('critical', 'yes')
class DocElement(_Element):
=======================================
--- /src/robot/result/configurer.py Wed Nov 2 08:17:49 2011
+++ /src/robot/result/configurer.py Thu Nov 3 06:05:49 2011
@@ -47,6 +47,7 @@
suite.set_tags(self.add_tags, self.remove_tags)
suite.remove_keywords(self.remove_keywords)
suite.filter_messages(self.log_level)
+ suite.set_criticality(self.critical_tags, self.non_critical_tags)
def _set_suite_attributes(self, suite):
if self.name:
@@ -56,4 +57,3 @@
if self.metadata:
suite.metadata.update(self.metadata)
-
=======================================
--- /src/robot/result/model.py Thu Nov 3 05:15:42 2011
+++ /src/robot/result/model.py Thu Nov 3 06:05:49 2011
@@ -95,6 +95,7 @@
self.tests = []
self.starttime = 'N/A'
self.endtime = 'N/A'
+ self._critical = None
def _get_name(self):
return self._name or ' & '.join(s.name for s in self.suites)
@@ -106,10 +107,19 @@
def status(self):
return 'PASS' if not self.critical_stats.failed else 'FAIL'
- #TODO: Remove this asap
+ def set_criticality(self, critical_tags=None, non_critical_tags=None):
+ # TODO: should settings criticality be prevented for sub suites?
+ self._critical = _Critical(critical_tags, non_critical_tags)
+
@property
def critical(self):
- return _Critical()
+ if self._critical:
+ return self._critical
+ if self.parent:
+ return self.parent.critical
+ if self._critical is None:
+ self._critical = _Critical()
+ return self._critical
@utils.setter
def metadata(self, metadata):
@@ -215,7 +225,7 @@
class TestCase(object):
def __init__(self, name='', doc='', tags=None, status='UNDEFINED',
- critical='yes', timeout='', starttime='N/A',
endtime='N/A'):
+ timeout='', starttime='N/A', endtime='N/A'):
self.parent = None
self.name = name
self.doc = doc
@@ -223,10 +233,10 @@
self.status = status
self.message = ''
self.timeout = timeout
- self.critical = critical
self.keywords = []
self.starttime = starttime
self.endtime = endtime
+ self._critical = 'yes'
@utils.setter
def tags(self, tags):
@@ -246,10 +256,21 @@
return self.parent.longname + '.' + self.name
return self.name
+ @property
+ def critical(self):
+ set_criticality = self.parent.critical
+ if set_criticality:
+ return 'yes' if set_criticality.are_critical(self.tags)
else 'no'
+ return self._critical
+
@property
def is_passed(self):
return self.status == 'PASS'
+ # TODO: Remove, move to where statistics are created.
+ def is_included(self, includes, excludes):
+ return self.tags.match(includes) and not self.tags.match(excludes)
+
def visit(self, visitor):
visitor.visit_test(self)
=======================================
--- /utest/result/test_configurer.py Wed Nov 2 02:18:10 2011
+++ /utest/result/test_configurer.py Thu Nov 3 06:05:49 2011
@@ -144,10 +144,10 @@
def
test_remove_passed_does_now_remove_setup_and_teardown_from_suite_with_noncritical_failure(self):
suite = TestSuite()
+ suite.set_criticality([], ['non'])
suite.keywords.create(type='setup').messages.create(message='some')
suite.keywords.create(type='teardown').keywords.create()
- #FIXME!: Possible bug in test as critical='no' does not work ..
and default value is 'yes'
- suite.tests.create(status='FAIL', critical=False)
+ suite.tests.create(status='FAIL', tags='non')
assert_equal(suite.status, 'PASS')
self._remove_passed(suite)
assert_equal(len(suite.keywords.setup.messages), 1)
=======================================
--- /utest/result/test_resultmodel.py Wed Nov 2 05:51:41 2011
+++ /utest/result/test_resultmodel.py Thu Nov 3 06:05:49 2011
@@ -87,11 +87,12 @@
def _create_suite_with_tests(self):
suite = TestSuite()
+ suite.set_criticality([], ['nc'])
suite.tests = [TestCase(status='PASS'),
+ TestCase(status='PASS', tags='nc'),
TestCase(status='PASS'),
- TestCase(status='PASS', critical=False),
TestCase(status='FAIL'),
- TestCase(status='FAIL', critical=False)]
+ TestCase(status='FAIL', tags='nc')]
return suite