Bugfix: it crashes when check_tc_result returns None 75/53075/2
authorxudan <xudan16@huawei.com>
Mon, 5 Mar 2018 03:30:34 +0000 (22:30 -0500)
committerGeorg Kunz <georg.kunz@ericsson.com>
Tue, 6 Mar 2018 10:28:38 +0000 (10:28 +0000)
The function 'check_tc_result' may return 'None'.
In this case it will throw an exception because of
https://github.com/opnfv/dovetail/blob/master/dovetail/run.py#L65

The exception is like
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/dovetail/run.py", line 339, in <module>
main()
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 716, in _call_
return self.main(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 696, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 889, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 534, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/dovetail/run.py", line 304, in main
duration = run_test(testsuite_yaml, testarea, logger, kwargs)
File "/usr/local/lib/python2.7/dist-packages/dovetail/run.py", line 65, in run_test
if stop_on_fail['criteria'] == "FAIL" and kwargs['stop']:
TypeError: 'NoneType' object has no attribute '_getitem_'

JIRA: DOVETAIL-622

Change-Id: I9e612b380c3dfb148692074a3bf8eb31875213ac
Signed-off-by: xudan <xudan16@huawei.com>
dovetail/run.py

index e43c126..b2ba91d 100755 (executable)
@@ -63,8 +63,12 @@ def run_test(testsuite, testarea, logger, kwargs):
             testcase.run()
 
         stop_on_fail = check_tc_result(testcase, logger)
-        if stop_on_fail['criteria'] == "FAIL" and kwargs['stop']:
-            return "stop_on_fail"
+        try:
+            if (not stop_on_fail or stop_on_fail['criteria'] == "FAIL") \
+                and kwargs['stop']:
+                return "stop_on_fail"
+        except KeyError as e:
+            logger.error("There is no key {}.".format(e))
 
     end_time = time.time()
     duration = end_time - start_time