src/locktest.c: Fix return code if last test fails
authorIra Weiny <ira.weiny@intel.com>
Mon, 23 Sep 2019 17:53:26 +0000 (10:53 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 13 Oct 2019 11:02:36 +0000 (19:02 +0800)
If anything but the first step of the last test fails, the exit code
(fail_count) was not properly set.  Fix this such that follow on patches
will be able to save error output and correctly inform the script that a
failure has occurred rather than just expecting random output to fail
the diff check.

The issue is last_test is not properly tracking which test the loop is
currently on.  Therefore fail_count would not be incremented correctly.

Remove the special case of checking for the end of the steps array and
track last_test properly.  Then adjust test_count to be correct for the
new code.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
src/locktest.c

index e2f9c8e37a067d7f3ccbaed6511e6880b8960dee..ab7463e48d8db9277349e541176dc38ef687de08 100644 (file)
@@ -963,7 +963,7 @@ main(int argc, char *argv[])
     int end = 0;
     int result = 0;
     int last_test = 0;
-    int test_count = 0;
+    int test_count = -1;
     int fail_flag = 0;
     while(!end) {
        if (server) {
@@ -1058,15 +1058,13 @@ main(int argc, char *argv[])
                    }
                }
            }
-           if(tests[index][TEST_NUM] != 0) {
-               if(last_test != tests[index][TEST_NUM]) {
-                   test_count++;
-                   if(fail_flag)
-                       fail_count++;
-                   fail_flag = 0;
 
-               }
-               last_test = tests[index][TEST_NUM];
+           if(last_test != tests[index][TEST_NUM]) {
+               test_count++;
+               if(fail_flag)
+                   fail_count++;
+               fail_flag = 0;
+               last_test = tests[index][TEST_NUM];
            }
                
            index++;
@@ -1126,9 +1124,8 @@ main(int argc, char *argv[])
                fprintf(stderr,"client: sending result to server (%d)\n", ctl.index);
            /* Send result to the server */
            send_ctl();
-           if(tests[index][TEST_NUM] != 0) {
-               if(last_test != tests[index][TEST_NUM])
-                   test_count++;
+           if(last_test != tests[index][TEST_NUM]) {
+               test_count++;
                last_test = tests[index][TEST_NUM];
            }
        }