]> granicus.if.org Git - file/commitdiff
Fix typo in gedcom.magic.
authorReuben Thomas <rrt@sc3d.org>
Thu, 28 Feb 2008 19:48:49 +0000 (19:48 +0000)
committerReuben Thomas <rrt@sc3d.org>
Thu, 28 Feb 2008 19:48:49 +0000 (19:48 +0000)
Fix gedcom.result to correspond to reality.

Make test read and check result file against actual result.

tests/Makefile.am
tests/gedcom.magic
tests/gedcom.result
tests/test.c

index b953a1085a201f487dafa1bc4b1165dc5535e7f0..465a554eba12482bf053500b3e0cce319629df4e 100644 (file)
@@ -1,11 +1,9 @@
 check_PROGRAMS = test
 test_LDADD = $(top_builddir)/src/libmagic.la
 
-check-local:
-       MAGIC=$(top_builddir)/magic/magic ./test
-       for i in $(TEST_BASES); do MAGIC=./$$i.magic ./test ./$$i.testfile ./$$i.result; done
-
-TEST_BASES = gedcom
-
 EXTRA_DIST = \
        *.magic *.testfile *.result
+
+check-local:
+       MAGIC=$(top_builddir)/magic/magic ./test
+       for i in *.testfile; do MAGIC=./$${i%%.testfile}.magic ./test ./$$i ./$${i%%.testfile}.result; done
index 4cfcde9df0a565cbf41d96e79d91c6ae82a7e473..616fd56b6956cf0ad5981fe7ebbbb25e203a78b6 100644 (file)
@@ -1,4 +1,4 @@
-# GEDCOM Geneaolgy file
+# GEDCOM Genealogy file
 
 0       string/c        0\ HEAD         GEDCOM genealogy data
 >&0     search          1\ GEDC
index e121a4ea386116797b630a40a7a4935e141223ea..bbb0eb86c7a8d6a8a71a33345a757eff40844261 100644 (file)
@@ -1 +1 @@
-GEDCOM genealogy data version  5.5
\ No newline at end of file
+GEDCOM genealogy data version 5.5
\ No newline at end of file
index 1786bbc0d9ae5c9b8ec499e485eb2c3ce70c3b73..ce3419e6b521d91392ec1b579931160b637bb4e8 100644 (file)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include "magic.h"
 
+static void *
+xrealloc(void *p, size_t n)
+{
+       p = realloc(p, n);
+       if (p == NULL) {
+               fprintf(stderr, "ERROR slurping file: out of memory\n");
+               exit(10);
+       }
+       return p;
+}
+
+static char *
+slurp(FILE *fp, size_t *final_len)
+{
+       size_t len = 256;
+       int c;
+       char *l = (char *)xrealloc(NULL, len), *s = l;
+
+       for (c = getc(fp); c != EOF; c = getc(fp)) {
+               if (s == l + len) {
+                       l = (char *)xrealloc(l, len * 2);
+                       len *= 2;
+               }
+               *s++ = c;
+       }
+       if (s == l + len)
+               l = (char *)xrealloc(l, len + 1);
+       *s++ = '\0';
+
+       *final_len = s - l;
+       l = (char *)xrealloc(l, s - l);
+       return l;
+}
+
 int
 main(int argc, char **argv)
 {
        struct magic_set *ms;
-       const char *m;
+       const char *result;
+       char *desired;
+       size_t desired_len;
        int i;
+       FILE *fp;
 
        ms = magic_open(MAGIC_NONE);
        if (ms == NULL) {
                fprintf(stderr, "ERROR opening MAGIC_NONE: out of memory\n");
-               return 1;
+               return 10;
        }
        if (magic_load(ms, NULL) == -1) {
                fprintf(stderr, "ERROR loading with NULL file: %s\n", magic_error(ms));
-               return 2;
+               return 11;
        }
 
        if (argc > 1) {
                if (argc != 3) {
                        fprintf(stderr, "Usage: test TEST-FILE RESULT\n");
                } else {
-                       if ((m = magic_file(ms, argv[1])) == NULL) {
+                       if ((result = magic_file(ms, argv[1])) == NULL) {
                                fprintf(stderr, "ERROR loading file %s: %s\n", argv[1], magic_error(ms));
-                               return 3;
+                               return 12;
                        } else {
-                               printf("%s: %s\n", argv[1], m);
-                                       /* Compare m with contents of argv[3] */
+                               fp = fopen(argv[2], "r");
+                               if (fp == NULL) {
+                                       fprintf(stderr, "ERROR opening `%s': ", argv[2]);
+                                       perror(NULL);
+                                       return 13;
+                               }
+                               desired = slurp(fp, &desired_len);
+                               fclose(fp);
+                               printf("%s: %s\n", argv[1], result);
+                                if (strcmp(result, desired) != 0) {
+                                       fprintf(stderr, "Error: result was\n%s\nexpected:\n%s\n", result, desired);
+                                       return 1;
+                                }
                        }
                }
        }