diff --git a/test/impex.sh b/test/impex.sh index 4848c20ad..95fd9fabe 100755 --- a/test/impex.sh +++ b/test/impex.sh @@ -1,70 +1,102 @@ #! /bin/sh # # Import/export test for GRAMPS: -# o Import example XML data and create GRDB -# o Open produced GRDB, then +# o Import example XML data and create internal Gramps DB +# o Open produced example Gramps DB, then # * check data for integrity # * output in all formats # o Check resulting XML for well-formedness and validate it # against DTD and RelaxNG schema. -# o Import ever file produced and run summary on it. +# o Import every exported file produced if the format +# is also supported for import, and run a text summary report. +# o Diff each report with the summary of the produced example DB # $Id$ TOP_DIR=`dirname $PWD` TEST_DIR=$TOP_DIR/test -SRC_DIR=$TOP_DIR/src -PRG="python gramps.py" +SRC_DIR=$TOP_DIR/gramps +PRG="python ../Gramps.py" EXAMPLE_XML=$TOP_DIR/example/gramps/example.gramps -OUT_FMT="gedcom gramps-xml gramps-pkg wft geneweb" -IN_FMT="gedcom gramps-xml gramps-pkg" +OUT_FMT="csv ged gramps gpkg wft gw vcs vcf" +IN_FMT="csv ged gramps gpkg gw vcf" DATA_DIR=$TEST_DIR/data mkdir -p $DATA_DIR -if [ -f $DATA_DIR/example.grdb ]; then - rm $DATA_DIR/example.grdb +GRAMPSHOME=$DATA_DIR/grampshome +export GRAMPSHOME +echo "" +echo "+--------------------------------------------------------------" +echo "| GRAMPSHOME set to: $GRAMPSHOME " +echo "+--------------------------------------------------------------" + +if [ -d $GRAMPSHOME/. ]; then + rm -rf $GRAMPSHOME fi echo "" echo "+--------------------------------------------------------------" -echo "| Import XML, write GRDB" +echo "| Import XML, create Gramps DB 'example'" echo "+--------------------------------------------------------------" -OPTS="-i $EXAMPLE_XML -o $DATA_DIR/example.grdb" +OPTS="-i $EXAMPLE_XML -C example" (cd $SRC_DIR; $PRG $OPTS) echo "" echo "+--------------------------------------------------------------" -echo "| Check GRDB for errors" +echo "| Check the example DB for errors" echo "+--------------------------------------------------------------" -OPTS="-O $DATA_DIR/example.grdb -a tool -p name=check" +OPTS="-O example -a tool -p name=check" (cd $SRC_DIR; $PRG $OPTS) echo "" echo "+--------------------------------------------------------------" -echo "| Open GRDB, write all other formats" +echo "| Open the example DB, write all other formats" echo "+--------------------------------------------------------------" -OPTS="-O $DATA_DIR/example.grdb" +OPTS="-O example" for fmt in $OUT_FMT; do - OPTS="$OPTS -o $DATA_DIR/example.$fmt -f $fmt" + OPTS="$OPTS -e $DATA_DIR/example.$fmt -f $fmt" done -(cd $SRC_DIR; $PRG $OPTS) +(cd $SRC_DIR; echo "$PRG $OPTS"; $PRG $OPTS) echo "" echo "+--------------------------------------------------------------" echo "| Validate produced XML" echo "+--------------------------------------------------------------" +RESULT_GRAMPS=$DATA_DIR/example.gramps +if [ -f $RESULT_GRAMPS ]; then + RESULT_XML=$DATA_DIR/example.xml + gunzip < $RESULT_GRAMPS > $RESULT_XML +else + echo "+--------------------------------------------------------------" + echo "| ERROR: $RESULT_GRAMPS not found" + echo "+--------------------------------------------------------------" + exit 1 +fi echo "* Regular well-formedness and DTD validation" -xmllint --noout --valid $DATA_DIR/example.gramps-xml +xmllint --noout --valid $RESULT_XML echo "* Post-parsing DTD validation" -xmllint --noout --postvalid $DATA_DIR/example.gramps-xml +xmllint --noout --postvalid $RESULT_XML echo "* Validate against RelaxNG schema" -xmllint --noout --relaxng $TOP_DIR/doc/grampsxml.rng $DATA_DIR/example.gramps-xml +xmllint --noout --relaxng $TOP_DIR/data/grampsxml.rng $RESULT_XML + +echo "" +echo "+----------------------------------------------------------------" +echo "| For each produced format supported for import, generate summary" +echo "+----------------------------------------------------------------" +for fmt in $IN_FMT; do + EXPORTED_DATA=$DATA_DIR/example.$fmt + REPORT_TXT=$EXPORTED_DATA.report.txt + OPTS="-i $EXPORTED_DATA -f $fmt -a report -p name=summary,off=txt,of=$REPORT_TXT" + (cd $SRC_DIR; $PRG $OPTS) +done echo "" echo "+--------------------------------------------------------------" -echo "| Import all produced files and print summary" +echo "| Compare to the summary of the original database" echo "+--------------------------------------------------------------" -for fmt in $IN_FMT; do - OPTS="-i $DATA_DIR/example.$fmt -f $fmt -a summary" - (cd $SRC_DIR; $PRG $OPTS) +IMPORTED_REPORT_TXT=$DATA_DIR/example.report.txt +OPTS="-O example -a report -p name=summary,off=txt,of=$IMPORTED_REPORT_TXT" +(cd $SRC_DIR; $PRG $OPTS) +for exported_report_txt in $DATA_DIR/example.*.report.txt; do + diff -u $IMPORTED_REPORT_TXT $exported_report_txt done