Protect against self.suite = None 29/35229/4
authorCédric Ollivier <cedric.ollivier@orange.com>
Tue, 23 May 2017 17:07:52 +0000 (19:07 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Mon, 29 May 2017 10:03:44 +0000 (12:03 +0200)
Change-Id: Ie3370ebfdd51b9aff707e50b754ca52796e49fbf
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
functest/core/unit.py
functest/tests/unit/core/test_unit.py

index 6799420..5c4d200 100644 (file)
@@ -65,20 +65,24 @@ class Suite(testcase.TestCase):
                 return testcase.TestCase.EX_RUN_ERROR
         except KeyError:
             pass
-        self.start_time = time.time()
-        stream = six.StringIO()
-        result = unittest.TextTestRunner(
-            stream=stream, verbosity=2).run(self.suite)
-        self.logger.debug("\n\n%s", stream.getvalue())
-        self.stop_time = time.time()
-        self.details = {"failures": result.failures,
-                        "errors": result.errors}
         try:
+            assert self.suite
+            self.start_time = time.time()
+            stream = six.StringIO()
+            result = unittest.TextTestRunner(
+                stream=stream, verbosity=2).run(self.suite)
+            self.logger.debug("\n\n%s", stream.getvalue())
+            self.stop_time = time.time()
+            self.details = {"failures": result.failures,
+                            "errors": result.errors}
             self.result = 100 * (
                 (result.testsRun - (len(result.failures) +
                                     len(result.errors))) /
                 result.testsRun)
             return testcase.TestCase.EX_OK
+        except AssertionError:
+            self.logger.error("No suite is defined")
+            return testcase.TestCase.EX_RUN_ERROR
         except ZeroDivisionError:
             self.logger.error("No test has been run")
             return testcase.TestCase.EX_RUN_ERROR
index f86ea8d..79c4e7d 100644 (file)
@@ -20,6 +20,7 @@ class PyTestSuiteRunnerTesting(unittest.TestCase):
 
     def setUp(self):
         self.psrunner = unit.Suite()
+        self.psrunner.suite = "foo"
 
     @mock.patch('unittest.TestLoader')
     def _test_run(self, mock_class=None, result=mock.Mock(),
@@ -30,7 +31,10 @@ class PyTestSuiteRunnerTesting(unittest.TestCase):
             mock_class.assert_not_called()
 
     def test_check_suite_null(self):
-        self.assertEqual(self.psrunner.suite, None)
+        self.assertEqual(unit.Suite().suite, None)
+        self.psrunner.suite = None
+        self._test_run(result=mock.Mock(),
+                       status=testcase.TestCase.EX_RUN_ERROR)
 
     def test_run_no_ut(self):
         mock_result = mock.Mock(testsRun=0, errors=[], failures=[])