bugfix: Don't try to run a tier if it doesn't contain any enabled test
[functest.git] / ci / tier_handler.py
index af6345f..20a47e9 100644 (file)
@@ -29,11 +29,11 @@ def split_text(text, max_len):
 
 
 class Tier:
-    def __init__(self, name, order, ci, description=""):
+    def __init__(self, name, order, ci_loop, description=""):
         self.tests_array = []
         self.name = name
         self.order = order
-        self.ci = ci
+        self.ci_loop = ci_loop
         self.description = description
 
     def add_test(self, testcase):
@@ -70,14 +70,19 @@ class Tier:
     def get_order(self):
         return self.order
 
+    def get_ci_loop(self):
+        return self.ci_loop
+
     def __str__(self):
-        lines = split_text(self.description, LINE_LENGTH-6)
+        lines = split_text(self.description, LINE_LENGTH - 6)
 
         out = ""
         out += ("+%s+\n" % ("=" * (LINE_LENGTH - 2)))
         out += ("| Tier:  " + self.name.ljust(LINE_LENGTH - 10) + "|\n")
         out += ("+%s+\n" % ("=" * (LINE_LENGTH - 2)))
         out += ("| Order: " + str(self.order).ljust(LINE_LENGTH - 10) + "|\n")
+        out += ("| CI Loop: " + str(self.ci_loop).ljust(LINE_LENGTH - 12) +
+                "|\n")
         out += ("| Description:".ljust(LINE_LENGTH - 1) + "|\n")
         for line in lines:
             out += ("|    " + line.ljust(LINE_LENGTH - 7) + " |\n")
@@ -97,25 +102,34 @@ class Tier:
 
 
 class TestCase:
-    def __init__(self, name, dependency, description=""):
+    def __init__(self, name, dependency, criteria, description=""):
         self.name = name
         self.dependency = dependency
         self.description = description
+        self.criteria = criteria
 
     def is_compatible(self, ci_installer, ci_scenario):
-        if re.search(self.dependency.get_installer(), ci_installer) is None:
-            return False
-
-        if re.search(self.dependency.get_scenario(), ci_scenario) is None:
+        try:
+            if ci_installer is not None:
+                if re.search(self.dependency.get_installer(),
+                             ci_installer) is None:
+                    return False
+            if ci_scenario is not None:
+                if re.search(self.dependency.get_scenario(),
+                             ci_scenario) is None:
+                    return False
+            return not (ci_scenario is None and ci_installer is None)
+        except TypeError:
             return False
 
-        return True
-
     def get_name(self):
         return self.name
 
+    def get_criteria(self):
+        return self.criteria
+
     def __str__(self):
-        lines = split_text(self.description, LINE_LENGTH-6)
+        lines = split_text(self.description, LINE_LENGTH - 6)
 
         out = ""
         out += ("+%s+\n" % ("=" * (LINE_LENGTH - 2)))
@@ -124,6 +138,8 @@ class TestCase:
         out += ("| Description:".ljust(LINE_LENGTH - 1) + "|\n")
         for line in lines:
             out += ("|    " + line.ljust(LINE_LENGTH - 7) + " |\n")
+        out += ("| Criteria:  " +
+                self.criteria.ljust(LINE_LENGTH - 14) + "|\n")
         out += ("| Dependencies:".ljust(LINE_LENGTH - 1) + "|\n")
         installer = self.dependency.get_installer()
         scenario = self.dependency.get_scenario()