* gpg/t-support.h (DIM): Added.
authorWerner Koch <wk@gnupg.org>
Wed, 19 Nov 2003 15:15:33 +0000 (15:15 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 19 Nov 2003 15:15:33 +0000 (15:15 +0000)
* gpg/t-verify.c (check_result): Rewrote test for notations
because the order of notaions is not guaranteed.

* gpgsm/t-support.h (fail_if_err): Also print the numeric values.

trunk/tests/ChangeLog
trunk/tests/gpg/t-support.h
trunk/tests/gpg/t-verify.c
trunk/tests/gpgsm/t-support.h
trunk/tests/gpgsm/t-verify.c

index 8f6a2d7e91c3c7f69726d2a5580d13994f7b00b1..1ca2e37b94cd74b1527269a40c7296f5fdcca6c4 100644 (file)
@@ -1,3 +1,12 @@
+2003-11-19  Werner Koch  <wk@gnupg.org>
+
+       * gpg/t-support.h (DIM): Added.
+
+       * gpg/t-verify.c (check_result): Rewrote test for notations
+       because the order of notaions is not guaranteed.
+
+       * gpgsm/t-support.h (fail_if_err): Also print the numeric values.
+
 2003-10-06  Marcus Brinkmann  <marcus@g10code.de>
 
        * gpg/t-eventloop.c: Include <sys/types.h> for old systems.
index 929a5d13fe279a3ec09e8fa1d0cce537b27a846f..5488055749d484a33b774b0964db9b11fdd6e3ba 100644 (file)
 
 #include <gpgme.h>
 
+#ifndef DIM
+#define DIM(v)              (sizeof(v)/sizeof((v)[0]))
+#endif
+
 #define fail_if_err(err)                                       \
   do                                                           \
     {                                                          \
index 83e942f0790945b177c2145b7fcdef396af5d40d..0df8991dee33c3e48937971c645830583c4c1775 100644 (file)
@@ -85,8 +85,9 @@ check_result (gpgme_verify_result_t result, unsigned int summary, char *fpr,
     }
   if (sig->summary != summary)
     {
-      fprintf (stderr, "%s:%i: Unexpected signature summary: 0x%x\n",
-              __FILE__, __LINE__, sig->summary);
+      fprintf (stderr, "%s:%i: Unexpected signature summary: "
+               "want=0x%x have=0x%x\n",
+              __FILE__, __LINE__, summary, sig->summary);
       exit (1);
     }
   if (strcmp (sig->fpr, fpr))
@@ -103,24 +104,56 @@ check_result (gpgme_verify_result_t result, unsigned int summary, char *fpr,
     }
   if (notation)
     {
-      if (!sig->notations
-         || strcmp (sig->notations->name, "bar")
-         || strcmp (sig->notations->value, "\xc3\xb6\xc3\xa4\xc3\xbc\xc3\x9f"
-                    " das waren Umlaute und jetzt ein prozent%-Zeichen")
-         || !sig->notations->next
-         || strcmp (sig->notations->next->name, "foobar.1")
-         || strcmp (sig->notations->next->value,
-                    "this is a notation data with 2 lines")
-         || !sig->notations->next->next
-         || sig->notations->next->next->name != NULL
-         || strcmp (sig->notations->next->next->value,
-                    "http://www.gu.org/policy/")
-         || sig->notations->next->next->next)
-       {
-         fprintf (stderr, "%s:%i: Unexpected notation data\n",
-                  __FILE__, __LINE__);
-         exit (1);
-       }
+      static struct {
+        const char *name;
+        const char *value;
+        int seen;
+      } expected_notations[] = {
+        { "bar",
+         "\xc3\xb6\xc3\xa4\xc3\xbc\xc3\x9f"
+          " das waren Umlaute und jetzt ein prozent%-Zeichen" },
+        { "foobar.1",
+         "this is a notation data with 2 lines" },
+        { NULL, 
+         "http://www.gu.org/policy/" }
+      };
+      int i;
+      gpgme_sig_notation_t r;
+
+      for (i=0; i < DIM(expected_notations); i++ )
+        expected_notations[i].seen = 0;
+
+      for (r = sig->notations; r; r = r->next)
+        {
+          int any = 0;
+          for (i=0; i < DIM(expected_notations); i++)
+            {
+              if ( ((r->name && expected_notations[i].name
+                     && !strcmp (r->name, expected_notations[i].name))
+                    || (!r->name && !expected_notations[i].name))
+                   && r->value
+                   && !strcmp (r->value, expected_notations[i].value))
+                {
+                  expected_notations[i].seen++;
+                  any++;
+                }
+            }
+          if (!any)
+            {
+              fprintf (stderr, "%s:%i: Unexpected notation data\n",
+                       __FILE__, __LINE__);
+              exit (1);
+            }
+        }
+      for (i=0; i < DIM(expected_notations); i++ )
+        {
+          if (expected_notations[i].seen != 1)
+            {
+              fprintf (stderr, "%s:%i: Missing or duplicate notation data\n",
+                       __FILE__, __LINE__);
+              exit (1);
+            }
+        }
     }
   if (sig->wrong_key_usage)
     {
index 3199b056e0d785fc3a1fa0bf9a4ae1b674c7d995..32a7b19e83f94ae299a72fd586b682eea16c8650 100644 (file)
     {                                                          \
       if (err)                                                 \
         {                                                      \
-          fprintf (stderr, "%s:%d: %s: %s\n",                  \
+          fprintf (stderr, "%s:%d: %s: %s (%d.%d)\n",          \
                    __FILE__, __LINE__, gpg_strsource (err),    \
-                  gpg_strerror (err));                         \
+                  gpg_strerror (err),                          \
+                   gpg_err_source (err), gpg_err_code (err));  \
           exit (1);                                            \
         }                                                      \
     }                                                          \
index 304fc2c6cb1e9743d332d3741d5ba1379d729135..6fb32a942a5ff5518283ac7fe2360ef7eafee136 100644 (file)
@@ -57,8 +57,9 @@ check_result (gpgme_verify_result_t result, int summary, char *fpr,
     }
   if (sig->summary != summary)
     {
-      fprintf (stderr, "%s:%i: Unexpected signature summary: 0x%x\n",
-              __FILE__, __LINE__, sig->summary);
+      fprintf (stderr, "%s:%i: Unexpected signature summary: "
+               "want=0x%x have=0x%x\n",
+              __FILE__, __LINE__, summary, sig->summary);
       exit (1);
     }
   if (strcmp (sig->fpr, fpr))
@@ -119,6 +120,7 @@ main (int argc, char **argv)
   fail_if_err (err);
   err = gpgme_data_new_from_mem (&sig, test_sig1, strlen (test_sig1), 0);
   fail_if_err (err);
+
   err = gpgme_op_verify (ctx, sig, text, NULL);
   fail_if_err (err);
   result = gpgme_op_verify_result (ctx);