Thomas Vachuska

Added ability to negate interpretation of the exit code.

Change-Id: Ica77a10d854f247921e6adb74f8da65de0c79c8a
...@@ -35,6 +35,8 @@ import static org.onlab.stc.Coordinator.print; ...@@ -35,6 +35,8 @@ import static org.onlab.stc.Coordinator.print;
35 class StepProcessor implements Runnable { 35 class StepProcessor implements Runnable {
36 36
37 private static final String IGNORE_CODE = "~"; 37 private static final String IGNORE_CODE = "~";
38 + private static final String NEGATE_CODE = "!";
39 +
38 private static final int FAIL = -1; 40 private static final int FAIL = -1;
39 41
40 static String launcher = "stc-launcher "; 42 static String launcher = "stc-launcher ";
...@@ -67,7 +69,9 @@ class StepProcessor implements Runnable { ...@@ -67,7 +69,9 @@ class StepProcessor implements Runnable {
67 delegate.onStart(step, command); 69 delegate.onStart(step, command);
68 int code = execute(); 70 int code = execute();
69 boolean ignoreCode = step.env() != null && step.env.equals(IGNORE_CODE); 71 boolean ignoreCode = step.env() != null && step.env.equals(IGNORE_CODE);
70 - Status status = ignoreCode || code == 0 ? SUCCEEDED : FAILED; 72 + boolean negateCode = step.env() != null && step.env.equals(NEGATE_CODE);
73 + Status status = ignoreCode || code == 0 && !negateCode || code != 0 && negateCode ?
74 + SUCCEEDED : FAILED;
71 delegate.onCompletion(step, status); 75 delegate.onCompletion(step, status);
72 } 76 }
73 77
......