gpgscm: Fix creation of temporary directories.
[gnupg.git] / common / t-stringhelp.c
index ccadf02..a105ad1 100644 (file)
@@ -4,8 +4,8 @@
  *
  * This file is part of GnuPG.
  *
- * GnuPG is free software; you can redistribute it and/or modify it
- * under the terms of either
+ * GnuPG is free software; you can redistribute and/or modify this
+ * part of GnuPG under the terms of either
  *
  *   - the GNU Lesser General Public License as published by the Free
  *     Software Foundation; either version 3 of the License, or (at
@@ -26,7 +26,7 @@
  *
  * You should have received a copies of the GNU General Public License
  * and the GNU Lesser General Public License along with this program;
- * if not, see <http://www.gnu.org/licenses/>.
+ * if not, see <https://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -40,6 +40,7 @@
 #endif
 #include <unistd.h>
 #include <sys/types.h>
+#include <limits.h>
 
 #include "t-support.h"
 #include "stringhelp.h"
@@ -903,45 +904,63 @@ static void
 test_compare_version_strings (void)
 {
   struct { const char *a; const char *b; int okay; } tests[] = {
-    { "1.0.0",   "1.0.0", 1 },
+    { "1.0.0",   "1.0.0", 0 },
     { "1.0.0-",  "1.0.0", 1 },
     { "1.0.0-1", "1.0.0", 1 },
     { "1.0.0.1", "1.0.0", 1 },
-    { "1.0.0",   "1.0.1", 0 },
-    { "1.0.0-",  "1.0.1", 0 },
-    { "1.0.0-1", "1.0.1", 0 },
-    { "1.0.0.1", "1.0.1", 0 },
-    { "1.0.0",   "1.1.0", 0 },
-    { "1.0.0-",  "1.1.0", 0 },
-    { "1.0.0-1", "1.1.0", 0 },
-    { "1.0.0.1", "1.1.0", 0 },
-
-    { "1.0.0",   "1.0.0-", 1 },
-    { "1.0.0",   "1.0.0-1", 1 },
-    { "1.0.0",   "1.0.0.1", 1 },
+    { "1.0.0",   "1.0.1", -1 },
+    { "1.0.0-",  "1.0.1", -1 },
+    { "1.0.0-1", "1.0.1", -1 },
+    { "1.0.0.1", "1.0.1", -1 },
+    { "1.0.0",   "1.1.0", -1 },
+    { "1.0.0-",  "1.1.0", -1 },
+    { "1.0.0-1", "1.1.0", -1 },
+    { "1.0.0.1", "1.1.0", -1 },
+
+    { "1.0.0",   "1.0.0-", -1 },
+    { "1.0.0",   "1.0.0-1", -1 },
+    { "1.0.0",   "1.0.0.1", -1 },
     { "1.1.0",   "1.0.0", 1 },
     { "1.1.1",   "1.1.0", 1 },
-    { "1.1.2",   "1.1.2", 1 },
+    { "1.1.2",   "1.1.2", 0 },
     { "1.1.2",   "1.0.2", 1 },
     { "1.1.2",   "0.0.2", 1 },
-    { "1.1.2",   "1.1.3", 0 },
+    { "1.1.2",   "1.1.3", -1 },
 
     { "0.99.1",  "0.9.9", 1 },
-    { "0.9.1",   "0.91.0", 0 },
+    { "0.9.1",   "0.91.0", -1 },
 
     { "1.5.3",   "1.5",  1 },
-    { "1.5.0",   "1.5",  1 },
-    { "1.4.99",  "1.5",  0 },
+    { "1.5.0",   "1.5",  0 },
+    { "1.4.99",  "1.5",  -1 },
     { "1.5",     "1.4.99",  1 },
-    { "1.5",     "1.5.0",  1 },
-    { "1.5",     "1.5.1",  0 },
+    { "1.5",     "1.5.0",  0 },
+    { "1.5",     "1.5.1",  -1 },
 
     { "1.5.3-x17",   "1.5-23",  1 },
 
     { "1.5.3a",   "1.5.3",  1 },
-    { "1.5.3a",   "1.5.3b",  1 },
-
-    { NULL, NULL, 0 }
+    { "1.5.3a",   "1.5.3b",  -1 },
+
+    { "3.1.4-ab", "3.1.4-ab", 0 },
+    { "3.1.4-ab", "3.1.4-ac", -1 },
+    { "3.1.4-ac", "3.1.4-ab", 1 },
+    { "3.1.4-ab", "3.1.4-abb", -1 },
+    { "3.1.4-abb", "3.1.4-ab", 1 },
+
+    { "",       "",   INT_MIN },
+    { NULL,     "",   INT_MIN },
+    { "1.2.3",  "",   INT_MIN },
+    { "1.2.3",  "2",  INT_MIN },
+
+    /* Test cases for validity of A.  */
+    { "",      NULL, INT_MIN },
+    { "1",     NULL, INT_MIN },
+    { "1.",    NULL, 0       },
+    { "1.0",   NULL, 0       },
+    { "1.0.",  NULL, 0       },
+    { "a1.2",  NULL, INT_MIN },
+    { NULL,    NULL, INT_MIN }
   };
   int idx;
   int res;