Author: jprantan
Date: Mon Mar 30 23:51:29 2009
New Revision: 1599
Modified:
trunk/src/robot/common/model.py
trunk/utest/common/test_baseobjects.py
Log:
Initial implementation and unit tests for getting longname.
Modified: trunk/src/robot/common/model.py
==============================================================================
--- trunk/src/robot/common/model.py (original)
+++ trunk/src/robot/common/model.py Mon Mar 30 23:51:29 2009
@@ -23,6 +23,7 @@
class _TestAndSuiteHelper:
def __init__(self, name):
+ self.parent = None
self.name = name
self.setup = None
self.teardown = None
@@ -35,7 +36,9 @@
% (self.__class__.__name__, name))
def set_names(self, name=None, parent=None):
- if name is not None:
+ if parent:
+ self.parent = parent
+ if name:
self.name = name
if parent is None:
self.mediumname = self.longname = self.name
@@ -46,6 +49,15 @@
mediumname_parts.append(self.name)
self.mediumname = '.'.join(mediumname_parts)
+ def get_long_name(self, separator='.'):
+ """Returns long name. If separator is None, list of names is
returned."""
+ names = [self.name]
+ if self.parent:
+ names = self.parent.get_long_name(None) + names
+ if separator:
+ return separator.join(names)
+ return names
+
def _set_teardown_fail_msg(self, message):
if self.message == '':
self.message = message
Modified: trunk/utest/common/test_baseobjects.py
==============================================================================
--- trunk/utest/common/test_baseobjects.py (original)
+++ trunk/utest/common/test_baseobjects.py Mon Mar 30 23:51:29 2009
@@ -7,22 +7,54 @@
from robot.common.model import BaseTestSuite, BaseTestCase, _Critical
+def _get_suite():
+ suite = BaseTestSuite('Root')
+ suite.suites = [ BaseTestSuite('Sub1'), BaseTestSuite('Sub2') ]
+ suite.suites[0].suites = [ BaseTestSuite('Sub11') ,
BaseTestSuite('Sub')]
+ suite.suites[0].suites[0].tests \
+ = [ BaseTestCase('T11'), BaseTestCase('T12') ]
+ suite.suites[0].suites[0].suites = [ BaseTestSuite('Sub') ]
+ suite.suites[0].suites[0].suites[0].tests = [ BaseTestCase('T') ]
+
+ suite.suites[0].suites[1].tests = [ BaseTestCase('T') ]
+ suite.suites[1].tests = [ BaseTestCase('T21') ]
+ suite.set_names()
+ return suite
+
+class TestGetLongName(unittest.TestCase):
+
+ def setUp(self):
+ self.suite = _get_suite()
+
+ def test_get_long_name_for_root_suite(self):
+ assert_equals(self.suite.get_long_name(), 'Root')
+
+ def test_get_long_name_for_sub_suite(self):
+ assert_equals(self.suite.suites[0].get_long_name(), 'Root.Sub1')
+
+ def test_get_long_name_for_sub_sub_suite(self):
+ assert_equals(self.suite.suites[0].suites[1].get_long_name(),
+ 'Root.Sub1.Sub')
+
+ def test_get_long_name_for_test(self):
+
assert_equals(self.suite.suites[0].suites[0].tests[0].get_long_name(),
+ 'Root.Sub1.Sub11.T11')
+
+ def test_get_long_name_for_test_with_non_default_separator(self):
+
assert_equals(self.suite.suites[0].suites[0].tests[0].get_long_name('|'),
+ 'Root|Sub1|Sub11|T11')
+
+ def test_get_long_name_for_sub_suite_with_parts(self):
+ assert_equals(self.suite.suites[0].get_long_name(None),
+ ['Root', 'Sub1'])
+
+ def test_get_long_name_for_test_with_parts(self):
+
assert_equals(self.suite.suites[0].suites[0].tests[0].get_long_name(None),
+ ['Root', 'Sub1', 'Sub11', 'T11'])
+
class TestFilterByNames(unittest.TestCase):
- def _get_suite(selff):
- suite = BaseTestSuite('Root')
- suite.suites = [ BaseTestSuite('Sub1'), BaseTestSuite('Sub2') ]
- suite.suites[0].suites = [ BaseTestSuite('Sub11') ,
BaseTestSuite('Sub')]
- suite.suites[0].suites[0].tests \
- = [ BaseTestCase('T11'), BaseTestCase('T12') ]
- suite.suites[0].suites[0].suites = [ BaseTestSuite('Sub') ]
- suite.suites[0].suites[0].suites[0].tests = [ BaseTestCase('T') ]
-
- suite.suites[0].suites[1].tests = [ BaseTestCase('T') ]
- suite.suites[1].tests = [ BaseTestCase('T21') ]
- suite.set_names()
- return suite
def test_with_suites(self):
for names, count in [ (['Root'], 5),
@@ -35,12 +67,12 @@
(['Sub2','Nonex'], 1),
(['Sub11.Sub'], 1),
(['Root.Sub1.Sub'], 1)]:
- suite = self._get_suite()
+ suite = _get_suite()
suite.filter_by_names(names, [])
assert_equals(suite.get_test_count(), count, names)
def test_with_suites_no_matches(self):
- suite = self._get_suite()
+ suite = _get_suite()
err = "Suite 'Root' contains no test suites named '%s'."
assert_raises_with_msg(DataError, err % ('nonex'),
suite.filter_by_names, ['nonex'], [])
@@ -55,12 +87,12 @@
(['??1'], 2),
(['T11','T12'], 2),
(['Nonex','T21','Nonex2'], 1) ]:
- suite = self._get_suite()
+ suite = _get_suite()
suite.filter_by_names([], names)
assert_equals(suite.get_test_count(), count)
def test_with_tests_no_matches(self):
- suite = self._get_suite()
+ suite = _get_suite()
err = "Suite 'Root' contains no test cases named 'x', 'y' or 'z'."
assert_raises_with_msg(DataError, err, suite.filter_by_names, [],
['x','y','z'])
@@ -72,12 +104,12 @@
(['sub?'], ['t11','t21'], 2),
(['ROOT','nonex'], ['t11','t21'], 2),
(['*'], ['t*'], 5) ]:
- suite = self._get_suite()
+ suite = _get_suite()
suite.filter_by_names(suites, tests)
assert_equals(suite.get_test_count(), count, '%s
& %s'%(suites,tests))
def test_with_suites_and_tests_no_matches(self):
- suite = self._get_suite()
+ suite = _get_suite()
for suites, tests in [ (['Root'], ['nonex']),
(['Nonex'], ['T1.1']),
(['Sub2'], ['T1.1']), ]: