cleanup
[tests.git] / system / TestMain.py
index f3d38fc..ff6098f 100755 (executable)
@@ -286,7 +286,7 @@ steps refer to a method in TestPlc or to a step_* module
         if self.options.list_steps:
             self.init_steps()
             self.list_steps()
-            return True
+            return 'SUCCESS'
 
         # steps
         if not self.options.steps:
@@ -299,6 +299,7 @@ steps refer to a method in TestPlc or to a step_* module
         self.options.exclude = [ step.replace('-','_') for step in self.options.exclude ]
         self.options.ignore = [ step.replace('-','_') for step in self.options.ignore ]
 
+        # technicality, decorate known steps to produce the '_ignore' version
         TestPlc.create_ignore_steps()
 
         # exclude
@@ -441,7 +442,7 @@ steps refer to a method in TestPlc or to a step_* module
                                 skip_step=True
                             elif answer in ['q','b']:   # quit/bye
                                 print 'Exiting'
-                                return
+                                return 'FAILURE'
                             elif answer in ['d']:       # dry_run
                                 dry_run=self.options.dry_run
                                 self.options.dry_run=True
@@ -473,7 +474,9 @@ steps refer to a method in TestPlc or to a step_* module
                                 msg="OK"
                             else:
                                 msg="KO"
-                                overall_result='IGNORED'
+                                # do not overwrite if FAILURE
+                                if overall_result=='SUCCESS': 
+                                    overall_result='IGNORED'
                             utils.header('********** %d IGNORED (%s) step %s on %s'%(plc_counter,msg,stepname,plcname))
                             status="%s[I]"%msg
                         elif step_result:
@@ -518,15 +521,15 @@ steps refer to a method in TestPlc or to a step_* module
     # wrapper to run, returns a shell-compatible result
     # retcod:
     # 0: SUCCESS
-    # 1: SUCCESS but some ignored steps failed
-    # 2: FAILED STEP
+    # 1: FAILURE
+    # 2: SUCCESS but some ignored steps failed
     # 3: OTHER ERROR
     def main(self):
         try:
             success=self.run()
             if success == 'SUCCESS':    return 0
-            elif success == 'IGNORED':  return 1
-            else:                       return 2
+            elif success == 'IGNORED':  return 2
+            else:                       return 1
         except SystemExit:
             print 'Caught SystemExit'
             return 3
@@ -535,4 +538,5 @@ steps refer to a method in TestPlc or to a step_* module
             return 3
 
 if __name__ == "__main__":
-    sys.exit(TestMain().main())
+    exit_code = TestMain().main()
+    sys.exit(exit_code)