Author: jprantan
Date: Tue Nov 25 06:23:34 2008
New Revision: 1104

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

Log:
Fixed filtering with --suite (issue 159).

Modified: trunk/src/robot/common/model.py
==============================================================================
--- trunk/src/robot/common/model.py     (original)
+++ trunk/src/robot/common/model.py     Tue Nov 25 06:23:34 2008
@@ -197,7 +197,7 @@
         self.filter_by_tags(includes, excludes)

     def filter_by_names(self, suites=None, tests=None):
-        suites = utils.to_list(suites)
+        suites = [ (name, name) for name in utils.to_list(suites) ]
         tests = utils.to_list(tests)
         if suites == [] and tests == []:
             return
@@ -205,7 +205,7 @@
             self._raise_no_tests_filtered_by_names(suites, tests)

     def _filter_by_names(self, suites, tests):
-        self.filtered.add_suites(suites)
+        self.filtered.add_suites( [ long for long, short in suites ] )
         self.filtered.add_tests(tests)
         suites = self._filter_suite_names(suites)
         self.suites = [ suite for suite in self.suites
@@ -218,20 +218,21 @@
         return len(self.suites) + len(self.tests) > 0

     def _filter_suite_names(self, names):
-        names = [ self._filter_suite_name(name) for name in names ]
-        if names.count(True) > 0:
+       try:
+ return [ self._filter_suite_name(long, short) for long, short in names ]
+        except StopIteration:
             return []
-        return names

-    def _filter_suite_name(self, name):
-        tokens = name.split('.')
+    def _filter_suite_name(self, long, short):
+        tokens = short.split('.')
         if utils.matches(self.name, tokens[0], ignore=['_']):
             if len(tokens) == 1:
-                return True   # match
-            return '.'.join(tokens[1:])
-        return name
+                raise StopIteration('Match found')
+            return (long, '.'.join(tokens[1:]))
+        return (long, long)

     def _raise_no_tests_filtered_by_names(self, suites, tests):
+        suites = [long for long, short in suites ]
         err = "Suite '%s' contains no " % self.name
         if suites == []:
err += 'test cases named %s.' % utils.seq2str(tests, lastsep=' or ')

Reply via email to