system("stty $stty_orig");
     }
 
+    if (defined($post_test)) {
+       run_command $post_test;
+    }
+
     die @_, "\n";
 }
 
 
 sub fail {
 
-       if (defined($post_test)) {
-               run_command $post_test;
-       }
-
        if ($die_on_failure) {
                dodie @_;
        }
            save_logs "fail", $store_failures;
         }
 
+       if (defined($post_test)) {
+               run_command $post_test;
+       }
+
        return 1;
 }
 
 sub success {
     my ($i) = @_;
 
-    if (defined($post_test)) {
-       run_command $post_test;
-    }
-
     $successes++;
 
     my $name = "";
        doprint "Reboot and wait $sleep_time seconds\n";
        reboot_to_good $sleep_time;
     }
+
+    if (defined($post_test)) {
+       run_command $post_test;
+    }
 }
 
 sub answer_bisect {