Allow calling a skip test 55/60655/2
authorCédric Ollivier <cedric.ollivier@orange.com>
Tue, 7 Aug 2018 03:06:23 +0000 (05:06 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Tue, 7 Aug 2018 03:36:44 +0000 (05:36 +0200)
run_tests shouldn't return an incorrect value if the test is skipped.
Else it simply forbids running tests in parallel (one test per
thread).

Change-Id: I07efca28dbf6cf1c29ec8e5c999e38cfe3ad0aad
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
xtesting/ci/run_tests.py
xtesting/ci/tier_handler.py
xtesting/tests/unit/ci/test_tier_builder.py

index c8983b4..61482d9 100644 (file)
@@ -49,11 +49,6 @@ class BlockingTestFailed(Exception):
     pass
 
 
-class TestNotEnabled(Exception):
-    """Exception when the test is not enabled"""
-    pass
-
-
 class RunTestsParser(object):
     """Parser to run tests"""
     # pylint: disable=too-few-public-methods
@@ -144,8 +139,13 @@ class Runner(object):
     def run_test(self, test):
         """Run one test case"""
         if not test.is_enabled():
-            raise TestNotEnabled(
-                "The test case {} is not enabled".format(test.get_name()))
+            msg = prettytable.PrettyTable(
+                header_style='upper', padding_width=5,
+                field_names=['test case', 'project', 'duration',
+                             'result'])
+            msg.add_row([test.get_name(), test.get_project(), "00:00", "SKIP"])
+            LOGGER.info("Test result:\n\n%s\n", msg)
+            return testcase.TestCase.EX_TESTCASE_SKIPPED
         result = testcase.TestCase.EX_RUN_ERROR
         run_dict = self.get_run_dict(test.get_name())
         if run_dict:
index 7a77e4c..11a0858 100644 (file)
@@ -65,13 +65,13 @@ class Tier(object):
 
     def get_test(self, test_name):
         if self.is_test(test_name):
-            for test in self.tests_array:
+            for test in self.tests_array + self.skipped_tests_array:
                 if test.get_name() == test_name:
                     return test
         return None
 
     def is_test(self, test_name):
-        for test in self.tests_array:
+        for test in self.tests_array + self.skipped_tests_array:
             if test.get_name() == test_name:
                 return True
         return False
index 8801847..70a7951 100644 (file)
@@ -66,8 +66,9 @@ class TierBuilderTesting(unittest.TestCase):
                          self.tier_obj.get_test('test_name'))
 
     def test_get_test_disabled(self):
-        self.assertEqual(self.tierbuilder.get_test('test_name_disabled'), None)
-        self.assertEqual(self.tier_obj.get_test('test_name_disabled'), None)
+        self.assertEqual(
+            self.tierbuilder.get_test('test_name_disabled'),
+            self.tier_obj.get_test('test_name_disabled'))
         self.assertEqual(
             self.tier_obj.get_skipped_test()[0].name, 'test_name_disabled')