Restructure output from tests.
authorPeter Verthez <Peter.Verthez@advalvas.be>
Sat, 26 Oct 2002 16:04:01 +0000 (16:04 +0000)
committerPeter Verthez <Peter.Verthez@advalvas.be>
Sat, 26 Oct 2002 16:04:01 +0000 (16:04 +0000)
t/src/gomtest.c
t/src/output.c
t/src/output.h
t/src/standalone.c
t/src/test_gom
t/src/test_script
t/src/test_update
t/src/update.c

index ad165fb1ac5d56decb329209984c26c3fbda89c7..942f703f44dec5bb5b70132a8b608aa502872f1f 100644 (file)
@@ -41,6 +41,7 @@ void show_help ()
   printf("  -dg   Debug setting: only libgedcom debug messages\n");
   printf("  -da   Debug setting: libgedcom + yacc debug messages\n");
   printf("  -q    No output to standard output\n");
+  printf("  -o <outfile>  File to generate output to (def. testgedcom.out)\n");
 }
 
 void gedcom_message_handler(Gedcom_msg_type type, char *msg)
@@ -54,6 +55,7 @@ int main(int argc, char* argv[])
   int compat_enabled = 1;
   int debug_level = 0;
   int result      = 0;
+  char* outfilename = NULL;
   char* file_name = NULL;
 
   if (argc > 1) {
@@ -78,6 +80,17 @@ int main(int argc, char* argv[])
       else if (!strncmp(argv[i], "-q", 3)) {
        output_set_quiet(1);
       }
+      else if (!strncmp(argv[i], "-o", 3)) {
+       i++;
+       if (i < argc) {
+         outfilename = argv[i];
+       }
+       else {
+         printf ("Missing output file name\n");
+         show_help();
+         exit(1);
+       }
+      }
       else if (strncmp(argv[i], "-", 1)) {
        file_name = argv[i];
        break;
@@ -103,7 +116,7 @@ int main(int argc, char* argv[])
   gedcom_set_error_handling(mech);
   gedcom_set_message_handler(gedcom_message_handler);
 
-  output_open();
+  output_open(outfilename);
   output(0, "\n=== Parsing file %s\n", file_name);
   result = gom_parse_file(file_name);
   if (result == 0) {
index d2922cbb5837373acb0236a8162a8a753a4be006..c31c162466da6d40fea7a5130ed11fdd143a4f65 100644 (file)
 #include <stdio.h>
 #include <stdarg.h>
 
-#define OUTFILE "testgedcom.out"
+#define OUTFILE "check.out"
 FILE* outfile = NULL;
 int quiet = 0;
 
-void output(int to_stdout_too, char* format, ...)
+void output(int to_stdout_too, const char* format, ...)
 {
   va_list ap;
   va_start(ap, format);
@@ -47,11 +47,13 @@ void output_set_quiet(int q)
   quiet = q;
 }
 
-void output_open()
+void output_open(const char *outfilename)
 {
-  outfile = fopen(OUTFILE, "a");
+  if (!outfilename)
+    outfilename = OUTFILE;
+  outfile = fopen(outfilename, "a");
   if (!outfile) {
-    printf("Could not open %s for appending\n", OUTFILE);
+    printf("Could not open %s for appending\n", outfilename);
   }
 }
 
index 154ccf38e71cb20ec78cff31f88b29800e883dd6..25ae507e42cdd6d52717c2e9b474d23e646d4e71 100644 (file)
@@ -27,9 +27,9 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-void output(int to_stdout_too, char* format, ...);
+void output(int to_stdout_too, const char* format, ...);
 void output_set_quiet(int q);
-void output_open();
+void output_open(const char *outfilename);
 void output_close();
   
 #endif /* __OUTPUT_H */
index 44483e7768bbc73a57755ea4ff82c50dea67c0aa..4b21ddcd7e14bf186f22ca64f030190b2f357118 100644 (file)
@@ -50,6 +50,7 @@ void show_help ()
   printf("  -3    Run the test parse 3 times instead of once\n");
   printf("  -b    Parse a bogus file before parsing the main file\n");
   printf("  -q    No output to standard output\n");
+  printf("  -o <outfile>  File to generate output to (def. testgedcom.out)\n");
 }
 
 Gedcom_ctxt header_start(Gedcom_rec rec, int level, Gedcom_val xref, char *tag,
@@ -227,6 +228,7 @@ int main(int argc, char* argv[])
   int run_times   = 1;
   int bogus       = 0;
   int result      = 0;
+  char* outfilename = NULL;
   char* file_name = NULL;
 
   if (argc > 1) {
@@ -260,6 +262,17 @@ int main(int argc, char* argv[])
       else if (!strncmp(argv[i], "-q", 3)) {
        output_set_quiet(1);
       }
+      else if (!strncmp(argv[i], "-o", 3)) {
+       i++;
+       if (i < argc) {
+         outfilename = argv[i];
+       }
+       else {
+         printf ("Missing output file name\n");
+         show_help();
+         exit(1);
+       }
+      }
       else if (strncmp(argv[i], "-", 1)) {
        file_name = argv[i];
        break;
@@ -287,7 +300,7 @@ int main(int argc, char* argv[])
   gedcom_set_default_callback(default_cb);
   
   subscribe_callbacks();
-  output_open();
+  output_open(outfilename);
   if (bogus) {
     output(0, "\n=== Parsing bogus file %s\n", BOGUS_FILE_NAME);
     gedcom_parse_file(BOGUS_FILE_NAME);
index 0dbcd62a47c7d3d82a2d362855f7981c5f530640..108f4981f2f7421b4a335c5b317cd4d4b69039fd 100755 (executable)
@@ -17,7 +17,12 @@ do
 done
 
 file=$1
-expected_result=$2
+test_name=$2
+expected_result=$3
+if [ -z "$test_name" ]
+then
+  test_name=check
+fi
 if [ -z "$expected_result" ]
 then
   expected_result=0
@@ -34,6 +39,11 @@ else
   options="$options $extra_options"
 fi
 
+outfile=$test_name.out
+logfile=check.out
+reffile=$srcdir/output/$test_name.ref
+options="$options -o $outfile"
+
 builddir=`pwd`
 ltcmd="$builddir/../libtool --mode=execute -dlopen $builddir/../gedcom/libgedcom.la -dlopen $builddir/../gom/libgedcom_gom.la"
 GCONV_PATH=.:$GCONV_PATH
@@ -42,6 +52,8 @@ ln -s $srcdir/../data/gedcom.enc .
 ln -s $builddir/../iconv/glibc/.libs/ANSI_Z39.47.so .
 ln -s $srcdir/../iconv/glibc/gconv-modules .
 rm -f core
+echo "======================================================">> $logfile
+echo "Performing test '$test_name'" >> $logfile
 if [ "$GOM_DMALLOC_TEST" = "" ]
 then
   $ltcmd $GEDCOM_TESTENV $builddir/src/gomtest $options $testfile
@@ -55,9 +67,25 @@ result=$?
 rm gedcom.enc
 rm ANSI_Z39.47.so
 rm gconv-modules
-if [ "$result" -eq "$expected_result" -a ! -r core ]
+
+echo "Result is $result (expected: $expected_result)" >> $logfile
+if [ "$result" -ne "$expected_result" ]
 then
-  exit 0
-else
   exit 1
+else
+  if [ -r core ]
+  then
+    echo "Core file generated!" >> $logfile
+    exit 1
+  else
+    if diff $outfile $reffile >/dev/null 2>>$logfile
+    then
+      echo "Output agrees with reference output" >> $logfile
+      rm $outfile
+      exit 0
+    else
+      echo "Differences with reference output detected!" >> $logfile
+      exit 1
+    fi
+  fi
 fi
index ebcda7b7428dbac0f32e841a00daedaf4c295e35..3a1cf8e37b0f91ed6c32916893b8a83ec90876ce 100755 (executable)
@@ -15,7 +15,12 @@ do
 done
 
 file=$1
-expected_result=$2
+test_name=$2
+expected_result=$3
+if [ -z "$test_name" ]
+then
+  test_name=check
+fi
 if [ -z "$expected_result" ]
 then
   expected_result=0
@@ -32,6 +37,11 @@ else
   options="$options $extra_options"
 fi
 
+outfile=$test_name.out
+logfile=check.out
+reffile=$srcdir/output/$test_name.ref
+options="$options -o $outfile"
+
 builddir=`pwd`
 ltcmd="$builddir/../libtool --mode=execute -dlopen $builddir/../gedcom/libgedcom.la"
 GCONV_PATH=.:$GCONV_PATH
@@ -40,14 +50,32 @@ ln -s $srcdir/../data/gedcom.enc .
 ln -s $builddir/../iconv/glibc/.libs/ANSI_Z39.47.so .
 ln -s $srcdir/../iconv/glibc/gconv-modules .
 rm -f core
+echo "======================================================">> $logfile
+echo "Performing test '$test_name'" >> $logfile
 $ltcmd $GEDCOM_TESTENV $builddir/src/testgedcom $options $testfile
 result=$?
 rm gedcom.enc
 rm ANSI_Z39.47.so
 rm gconv-modules
-if [ "$result" -eq "$expected_result" -a ! -r core ]
+
+echo "Result is $result (expected: $expected_result)" >> $logfile
+if [ "$result" -ne "$expected_result" ]
 then
-  exit 0
-else
   exit 1
+else
+  if [ -r core ]
+  then
+    echo "Core file generated!" >> $logfile
+    exit 1
+  else
+    if diff $outfile $reffile >/dev/null 2>>$logfile
+    then
+      echo "Output agrees with reference output" >> $logfile
+      rm $outfile
+      exit 0
+    else
+      echo "Differences with reference output detected!" >> $logfile
+      exit 1
+    fi
+  fi
 fi
index cbe0c33eab836cfb441e2ff6c2cc93e3ca1b1ca4..127b0bc92f3bd895fb7a0402fb21efac036c27d2 100755 (executable)
@@ -14,7 +14,12 @@ do
   shift
 done
 
-expected_result=$1
+test_name=$1
+expected_result=$2
+if [ -z "$test_name" ]
+then
+  test_name=check
+fi
 if [ -z "$expected_result" ]
 then
   expected_result=0
@@ -29,6 +34,11 @@ else
   options="$options $extra_options"
 fi
 
+outfile=$test_name.out
+logfile=check.out
+reffile=$srcdir/output/$test_name.ref
+options="$options -o $outfile"
+
 builddir=`pwd`
 ltcmd="$builddir/../libtool --mode=execute -dlopen $builddir/../gedcom/libgedcom.la"
 GCONV_PATH=.:$GCONV_PATH
@@ -38,15 +48,33 @@ ln -s $builddir/../data/new.ged .
 ln -s $builddir/../iconv/glibc/.libs/ANSI_Z39.47.so .
 ln -s $srcdir/../iconv/glibc/gconv-modules .
 rm -f core
+echo "======================================================">> $logfile
+echo "Performing test '$test_name'" >> $logfile
 $ltcmd $GEDCOM_TESTENV $builddir/src/updatetest $options
 result=$?
 rm gedcom.enc
 rm new.ged
 rm ANSI_Z39.47.so
 rm gconv-modules
-if [ "$result" -eq "$expected_result" -a ! -r core ]
+
+echo "Result is $result (expected: $expected_result)" >> $logfile
+if [ "$result" -ne "$expected_result" ]
 then
-  exit 0
-else
   exit 1
+else
+  if [ -r core ]
+  then
+    echo "Core file generated!" >> $logfile
+    exit 1
+  else
+    if diff $outfile $reffile >/dev/null 2>>$logfile
+    then
+      echo "Output agrees with reference output" >> $logfile
+      rm $outfile
+      exit 0
+    else
+      echo "Differences with reference output detected!" >> $logfile
+      exit 1
+    fi
+  fi
 fi
index fc0e0797f848c69addee1c06f10461512b010704..d9f02a24651577a2145b3b543bf70dbd23ca88eb 100644 (file)
@@ -44,6 +44,7 @@ void show_help ()
   printf("Options:\n");
   printf("  -h    Show this help text\n");
   printf("  -q    No output to standard output\n");
+  printf("  -o <outfile>  File to generate output to (def. testgedcom.out)\n");
 }
 
 int test_xref_functions()
@@ -135,6 +136,7 @@ int test_xref_functions()
 int main(int argc, char* argv[])
 {
   int result;
+  char* outfilename = NULL;
   
   if (argc > 1) {
     int i;
@@ -146,6 +148,17 @@ int main(int argc, char* argv[])
       else if (!strncmp(argv[i], "-q", 3)) {
        output_set_quiet(1);
       }
+      else if (!strncmp(argv[i], "-o", 3)) {
+       i++;
+       if (i < argc) {
+         outfilename = argv[i];
+       }
+       else {
+         printf ("Missing output file name\n");
+         show_help();
+         exit(1);
+       }
+      }
       else {
        printf ("Unrecognized option: %s\n", argv[i]);
        show_help();
@@ -158,7 +171,7 @@ int main(int argc, char* argv[])
   setlocale(LC_ALL, "");
   gedcom_set_message_handler(gedcom_message_handler);
 
-  output_open();
+  output_open(outfilename);
   
   result = gedcom_new_model();
   if (result == 0)