diff mbox

[libdrm,v2,4/8] tests/hash: return non-zero on failure

Message ID 1427414231-11385-4-git-send-email-emil.l.velikov@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Emil Velikov March 26, 2015, 11:57 p.m. UTC
... and wire up to `make check' now that it's useful.

v2: Really return non-zero on failure.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
---
 tests/Makefile.am | 10 ++++++----
 tests/hash.c      | 26 +++++++++++++++-----------
 2 files changed, 21 insertions(+), 15 deletions(-)
diff mbox

Patch

diff --git a/tests/Makefile.am b/tests/Makefile.am
index ea826b5..79a13c4 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -29,13 +29,15 @@  LDADD = $(top_builddir)/libdrm.la
 
 check_PROGRAMS = \
 	dristat \
-	drmstat \
-	hash
+	drmstat
 
 if HAVE_NOUVEAU
 SUBDIRS += nouveau
 endif
 
+TESTS = \
+	hash
+
 if HAVE_LIBUDEV
 
 check_LTLIBRARIES = libdrmtest.la
@@ -62,6 +64,6 @@  TESTS =						\
 	updatedraw				\
 	name_from_fd
 
-check_PROGRAMS += $(TESTS)
-
 endif
+
+check_PROGRAMS += $(TESTS)
diff --git a/tests/hash.c b/tests/hash.c
index 1543c86..fc093c1 100644
--- a/tests/hash.c
+++ b/tests/hash.c
@@ -121,8 +121,8 @@  static void compute_dist(HashTablePtr table)
     }
 }
 
-static void check_table(HashTablePtr table,
-                        unsigned long key, void * value)
+static int check_table(HashTablePtr table,
+                       unsigned long key, void * value)
 {
     void *retval;
     int   retcode = drmHashLookup(table, key, &retval);
@@ -138,28 +138,32 @@  static void check_table(HashTablePtr table,
                key, value, retval);
         break;
     case 0:
-        if (value != retval)
+        if (value != retval) {
             printf("Bad value: key = %lu, expected = %p, returned = %p\n",
                    key, value, retval);
+            retcode = -1;
+        }
         break;
     default:
         printf("Bad retcode = %d: key = %lu, expected = %p, returned = %p\n",
                retcode, key, value, retval);
         break;
     }
+    return retcode;
 }
 
 int main(void)
 {
     HashTablePtr  table;
     unsigned long i;
+    int           ret;
 
     printf("\n***** 256 consecutive integers ****\n");
     table = drmHashCreate();
     for (i = 0; i < 256; i++)
         drmHashInsert(table, i, (void *)(i << 16 | i));
     for (i = 0; i < 256; i++)
-        check_table(table, i, (void *)(i << 16 | i));
+        ret |= check_table(table, i, (void *)(i << 16 | i));
     compute_dist(table);
     drmHashDestroy(table);
 
@@ -168,7 +172,7 @@  int main(void)
     for (i = 0; i < 1024; i++)
         drmHashInsert(table, i, (void *)(i << 16 | i));
     for (i = 0; i < 1024; i++)
-        check_table(table, i, (void *)(i << 16 | i));
+        ret |= check_table(table, i, (void *)(i << 16 | i));
     compute_dist(table);
     drmHashDestroy(table);
 
@@ -177,7 +181,7 @@  int main(void)
     for (i = 0; i < 1024; i++)
         drmHashInsert(table, i*4096, (void *)(i << 16 | i));
     for (i = 0; i < 1024; i++)
-        check_table(table, i*4096, (void *)(i << 16 | i));
+        ret |= check_table(table, i*4096, (void *)(i << 16 | i));
     compute_dist(table);
     drmHashDestroy(table);
 
@@ -188,10 +192,10 @@  int main(void)
         drmHashInsert(table, random(), (void *)(i << 16 | i));
     srandom(0xbeefbeef);
     for (i = 0; i < 1024; i++)
-        check_table(table, random(), (void *)(i << 16 | i));
+        ret |= check_table(table, random(), (void *)(i << 16 | i));
     srandom(0xbeefbeef);
     for (i = 0; i < 1024; i++)
-        check_table(table, random(), (void *)(i << 16 | i));
+        ret |= check_table(table, random(), (void *)(i << 16 | i));
     compute_dist(table);
     drmHashDestroy(table);
 
@@ -202,12 +206,12 @@  int main(void)
         drmHashInsert(table, random(), (void *)(i << 16 | i));
     srandom(0xbeefbeef);
     for (i = 0; i < 5000; i++)
-        check_table(table, random(), (void *)(i << 16 | i));
+        ret |= check_table(table, random(), (void *)(i << 16 | i));
     srandom(0xbeefbeef);
     for (i = 0; i < 5000; i++)
-        check_table(table, random(), (void *)(i << 16 | i));
+        ret |= check_table(table, random(), (void *)(i << 16 | i));
     compute_dist(table);
     drmHashDestroy(table);
 
-    return 0;
+    return ret;
 }