Revision: 3491
Author: jprantan
Date: Tue May 25 06:08:31 2010
Log: Added filtering for empty suites.
http://code.google.com/p/robotframework/source/detail?r=3491

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

=======================================
--- /trunk/src/robot/running/model.py   Tue May 25 04:26:19 2010
+++ /trunk/src/robot/running/model.py   Tue May 25 06:08:31 2010
@@ -34,29 +34,41 @@

 def TestSuite(datasources, settings):
     datasources = [ utils.normpath(path) for path in datasources ]
-    include_suites = settings['SuiteNames']
-    if not datasources:
-        raise DataError("No data sources given.")
-    elif len(datasources) > 1:
-        suitedatas = []
-        for datasource in datasources:
-            try:
-                suitedatas.append(_get_directory_or_file_suite(datasource,
- include_suites))
-            except DataError:
-                pass
-        suite = RunnableMultiTestSuite(suitedatas)
-    else:
- suitedata = _get_directory_or_file_suite(datasources[0], include_suites)
-        suite = RunnableTestSuite(suitedata)
+    suite = _get_suite(datasources, settings['SuiteNames'])
     suite.set_options(settings)
+    _check_suite_contains_tests(suite)
     return suite

-def _get_directory_or_file_suite(path, include_suites):
+def _get_suite(datasources, include_suites):
+    if not datasources:
+        raise DataError("No data sources given.")
+    if len(datasources) > 1:
+        return _get_multisource_suite(datasources, include_suites)
+    return RunnableTestSuite(_parse_suite(datasources[0], include_suites))
+
+def _parse_suite(path, include_suites):
     if os.path.isdir(path):
return TestDataDirectory(source=path, include_suites=include_suites)
     return TestCaseFile(source=path)

+def _get_multisource_suite(datasources, include_suites):
+    suitedatas = []
+    for datasource in datasources:
+        try:
+            suitedatas.append(_parse_suite(datasource, include_suites))
+        except DataError:
+            pass
+    suite = RunnableMultiTestSuite(suitedatas)
+    if suite.get_test_count() == 0:
+        raise DataError("Data sources %s contain no test cases."
+                        % utils.seq2str(datasources))
+    return suite
+
+def _check_suite_contains_tests(suite):
+    suite.filter_empty_suites()
+    if suite.get_test_count() == 0:
+ raise DataError("Test suite '%s' contains no test cases." % (suite.source))
+

 class RunnableTestSuite(BaseTestSuite):

@@ -80,7 +92,14 @@
         self._run_mode_exit_on_failure = False
         self._run_mode_dry_run = False

-
+    def filter_empty_suites(self):
+        for suite in self.suites[:]:
+            suite.filter_empty_suites()
+            if suite.get_test_count() == 0:
+                self.suites.remove(suite)
+                LOGGER.info("Running test suite '%s' failed: Test suite"
+                            " contains no test cases." % (suite.source))
+
     def _get_metadata(self, metadata):
         meta = {}
         for item in metadata:

Reply via email to